[Mapbender-commits] r2362 - branches/2.4.5/resources
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Mon Apr 7 12:11:40 EDT 2008
Author: christoph
Date: 2008-04-07 12:11:40 -0400 (Mon, 07 Apr 2008)
New Revision: 2362
Added:
branches/2.4.5/resources/update_mapbender_2.4.4_to_2.4.5.diff
Log:
update patch
Added: branches/2.4.5/resources/update_mapbender_2.4.4_to_2.4.5.diff
===================================================================
--- branches/2.4.5/resources/update_mapbender_2.4.4_to_2.4.5.diff (rev 0)
+++ branches/2.4.5/resources/update_mapbender_2.4.4_to_2.4.5.diff 2008-04-07 16:11:40 UTC (rev 2362)
@@ -0,0 +1,23116 @@
+Index: Changes.txt
+===================================================================
+--- Changes.txt (revision 2361)
++++ Changes.txt (working copy)
+@@ -4,6 +4,16 @@
+
+ ------------------------
+
++Changelog 2.4.5
++
++see http://www.mapbender.org/index.php/Template:Changelog_2.4.5
++
++
++Changelog 2.4.4
++
++see http://www.mapbender.org/index.php/Template:Changelog_2.4.4
++
++
+ Changelog 2.4.3
+
+ see http://www.mapbender.org/index.php/Template:Changelog_2.4.3
+Index: conf/mapbender.conf-dist
+===================================================================
+--- conf/mapbender.conf-dist (revision 2361)
++++ conf/mapbender.conf-dist (working copy)
+@@ -139,9 +139,9 @@
+ # Mapbender error logging
+ # --------------------------------------------
+
+-define("LOG_LEVEL_LIST", "off,error,warning,notice,all");
+-define("LOG_LEVEL", "all");
+-define("LOG_JS", "on"); // "on", "alert", "console", "off"
++define("LOG_LEVEL_LIST", "off,error,warning,notice,all"); // DO NOT CHANGE!!
++define("LOG_LEVEL", "off"); // one of the above
++define("LOG_JS", "off"); // "on", "alert", "console", "off"
+
+ ###HACK for GLOBALS
+ $DBSERVER=DBSERVER;
+Index: conf/session.conf
+===================================================================
+--- conf/session.conf (revision 2361)
++++ conf/session.conf (working copy)
+@@ -4,8 +4,22 @@
+ $_SESSION["mb_user_name"] = $name;
+ $_SESSION["mb_user_ip"] = $_SERVER['REMOTE_ADDR'];
+ $_SESSION["mb_myBBOX"] = $_REQUEST["mb_myBBOX"];
+-$_SESSION["mb_myWmc"] = $_REQUEST["wmc_id"];
+ $_SESSION["mb_myKml"] = $_REQUEST["kml_id"];
+ $_SESSION["mb_myPOI"] = $_REQUEST["mb_myPOI"];
+ $_SESSION["mb_myPOI2SCALE"] = $_REQUEST["mb_myPOI2SCALE"];
++
++$_SESSION["mb_myWmc"] = "";
++$_SESSION["mb_myWmc_action"] = "";
++if ($_REQUEST["wmc_id"]) {
++ $_SESSION["mb_myWmc"] = $_REQUEST["wmc_id"];
++ $_SESSION["mb_myWmc_action"] = "load";
++}
++else if ($_REQUEST["merge_wmc_id"]) {
++ $_SESSION["mb_myWmc"] = $_REQUEST["merge_wmc_id"];
++ $_SESSION["mb_myWmc_action"] = "merge";
++}
++else if ($_REQUEST["append_wmc_id"]) {
++ $_SESSION["mb_myWmc"] = $_REQUEST["append_wmc_id"];
++ $_SESSION["mb_myWmc_action"] = "append";
++}
+ ?>
+\ No newline at end of file
+Index: documents/jsdoc/allclasses-frame.html
+===================================================================
+--- documents/jsdoc/allclasses-frame.html (revision 0)
++++ documents/jsdoc/allclasses-frame.html (revision 0)
+@@ -0,0 +1,85 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++ All Classes
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title=" All Classes";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++ <IMG SRC="./"/>
++
++<H3 class="FrameHeadingFont"><B></B></H3>
++<FONT size="+1" CLASS="FrameHeadingFont">
++<B><a href="overview-summary.html" target="classFrame">All Classes</a></B></FONT>
++<BR>
++
++<TABLE BORDER="0" WIDTH="100%">
++
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Canvas.html" TARGET="classFrame">Canvas</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Geometry.html" TARGET="classFrame">Geometry</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GeometryArray.html" TARGET="classFrame">GeometryArray</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GeomType.html" TARGET="classFrame">GeomType</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GLOBALS.html" TARGET="classFrame">GLOBALS</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Highlight.html" TARGET="classFrame">Highlight</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="MultiGeometry.html" TARGET="classFrame">MultiGeometry</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Snapping.html" TARGET="classFrame">Snapping</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Wfs_element.html" TARGET="classFrame">Wfs_element</A>
++<BR>
++</FONT></TD>
++</TR>
++
++</TABLE>
++
++</BODY>
++</HTML>
+Index: documents/jsdoc/allclasses-noframe.html
+===================================================================
+--- documents/jsdoc/allclasses-noframe.html (revision 0)
++++ documents/jsdoc/allclasses-noframe.html (revision 0)
+@@ -0,0 +1,84 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<HTML>
++<HEAD>
++<TITLE>
++ All Classes
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title=" All Classes";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++ <IMG SRC="./"/>
++
++<H3 CLASS="FrameHeadingFont"></H3>
++<FONT size="+1" CLASS="FrameHeadingFont">
++<B><a href="overview-summary.html">All Classes</a></B></FONT>
++<BR>
++
++<TABLE BORDER="0" WIDTH="100%">
++
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Canvas.html" >Canvas</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Geometry.html" >Geometry</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GeometryArray.html" >GeometryArray</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GeomType.html" >GeomType</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GLOBALS.html" >GLOBALS</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Highlight.html" >Highlight</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="MultiGeometry.html" >MultiGeometry</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Snapping.html" >Snapping</A>
++<BR>
++</FONT></TD>
++</TR>
++
++<TR>
++<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="Wfs_element.html" >Wfs_element</A>
++<BR>
++</FONT></TD>
++</TR>
++
++</TABLE>
++
++</BODY>
++</HTML>
+Index: documents/jsdoc/Canvas.html
+===================================================================
+--- documents/jsdoc/Canvas.html (revision 0)
++++ documents/jsdoc/Canvas.html (revision 0)
+@@ -0,0 +1,372 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Canvas
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Canvas";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="Geometry.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Canvas</H2>
++<PRE>Object
++ |
++ +--<b>Canvas</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Canvas</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Canvas()">Canvas</A></B>(aMapframe,aTagName,aStyle,aLineWidth)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#clean">clean</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#drawGeometry">drawGeometry</A></B>(t,g,col)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#paint">paint</A></B>(gA)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Canvas()"><!-- --></A><H3>
++Canvas</H3>
++<PRE><B>Canvas</B>(aMapframe,aTagName,aStyle,aLineWidth)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="clean"><!-- --></A>
++ <H3>clean</H3>
++ <PRE>void <B>clean</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="drawGeometry"><!-- --></A>
++ <H3>drawGeometry</H3>
++ <PRE>void <B>drawGeometry</B>(t,g,col)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="paint"><!-- --></A>
++ <H3>paint</H3>
++ <PRE>void <B>paint</B>(gA)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="Geometry.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/DivTag.html
+===================================================================
+--- documents/jsdoc/DivTag.html (revision 0)
++++ documents/jsdoc/DivTag.html (revision 0)
+@@ -0,0 +1,339 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++DivTag
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="DivTag";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="GLOBALS.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class DivTag</H2>
++<PRE>Object
++ |
++ +--<b>DivTag</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>DivTag</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map.js.html'>map.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#DivTag()">DivTag</A></B>(aTagName,aFrameName,aStyle)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#clean">clean</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#write">write</A></B>(someText)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="DivTag()"><!-- --></A><H3>
++DivTag</H3>
++<PRE><B>DivTag</B>(aTagName,aFrameName,aStyle)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="clean"><!-- --></A>
++ <H3>clean</H3>
++ <PRE>void <B>clean</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="write"><!-- --></A>
++ <H3>write</H3>
++ <PRE>void <B>write</B>(someText)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="GLOBALS.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Geometry.html
+===================================================================
+--- documents/jsdoc/Geometry.html (revision 0)
++++ documents/jsdoc/Geometry.html (revision 0)
+@@ -0,0 +1,409 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Geometry
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Geometry";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Canvas.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="GeometryArray.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Geometry</H2>
++<PRE>Object
++ |
++ +--List
++ |
++ +--<b>Geometry</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Geometry</B>
++
++ <DT>extends List
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Geometry()">Geometry</A></B>(aGeomtype)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#del">del</A></B>(i)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#equals">equals</A></B>(geom)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getBBox">getBBox</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#updateAllPointsLike">updateAllPointsLike</A></B>(oldP,newP)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Geometry()"><!-- --></A><H3>
++Geometry</H3>
++<PRE><B>Geometry</B>(aGeomtype)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="del"><!-- --></A>
++ <H3>del</H3>
++ <PRE>Object <B>del</B>(i)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="equals"><!-- --></A>
++ <H3>equals</H3>
++ <PRE>Object <B>equals</B>(geom)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getBBox"><!-- --></A>
++ <H3>getBBox</H3>
++ <PRE>void <B>getBBox</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="updateAllPointsLike"><!-- --></A>
++ <H3>updateAllPointsLike</H3>
++ <PRE>void <B>updateAllPointsLike</B>(oldP,newP)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Canvas.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="GeometryArray.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/GeometryArray.html
+===================================================================
+--- documents/jsdoc/GeometryArray.html (revision 0)
++++ documents/jsdoc/GeometryArray.html (revision 0)
+@@ -0,0 +1,574 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++GeometryArray
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="GeometryArray";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Geometry.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="GeomType.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class GeometryArray</H2>
++<PRE>Object
++ |
++ +--List
++ |
++ +--<b>GeometryArray</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>GeometryArray</B>
++
++ <DT>extends List
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#GeometryArray()">GeometryArray</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#addMember">addMember</A></B>(geomType)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#close">close</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#delAllPointsLike">delAllPointsLike</A></B>(point)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#delGeometry">delGeometry</A></B>(i,j)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#delPoint">delPoint</A></B>(i,j,k)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#findMultiGeometry">findMultiGeometry</A></B>(geom)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getGeometry">getGeometry</A></B>(i,j)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getPoint">getPoint</A></B>(i,j,k)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#updateAllPointsLike">updateAllPointsLike</A></B>(oldP,newP)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="GeometryArray()"><!-- --></A><H3>
++GeometryArray</H3>
++<PRE><B>GeometryArray</B>()</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="addMember"><!-- --></A>
++ <H3>addMember</H3>
++ <PRE>void <B>addMember</B>(geomType)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="close"><!-- --></A>
++ <H3>close</H3>
++ <PRE>void <B>close</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="delAllPointsLike"><!-- --></A>
++ <H3>delAllPointsLike</H3>
++ <PRE>void <B>delAllPointsLike</B>(point)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="delGeometry"><!-- --></A>
++ <H3>delGeometry</H3>
++ <PRE>void <B>delGeometry</B>(i,j)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="delPoint"><!-- --></A>
++ <H3>delPoint</H3>
++ <PRE>void <B>delPoint</B>(i,j,k)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="findMultiGeometry"><!-- --></A>
++ <H3>findMultiGeometry</H3>
++ <PRE>Object <B>findMultiGeometry</B>(geom)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getGeometry"><!-- --></A>
++ <H3>getGeometry</H3>
++ <PRE>Object <B>getGeometry</B>(i,j)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getPoint"><!-- --></A>
++ <H3>getPoint</H3>
++ <PRE>Object <B>getPoint</B>(i,j,k)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="updateAllPointsLike"><!-- --></A>
++ <H3>updateAllPointsLike</H3>
++ <PRE>void <B>updateAllPointsLike</B>(oldP,newP)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Geometry.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="GeomType.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/GeomType.html
+===================================================================
+--- documents/jsdoc/GeomType.html (revision 0)
++++ documents/jsdoc/GeomType.html (revision 0)
+@@ -0,0 +1,289 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++GeomType
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="GeomType";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GeometryArray.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="GLOBALS.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class GeomType</H2>
++<PRE>Object
++ |
++ +--<b>GeomType</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>GeomType</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#polygon">polygon</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#GeomType()">GeomType</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="polygon"><!-- --></A>
++ <H3>polygon</H3>
++ <PRE>Object <B>polygon</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="GeomType()"><!-- --></A><H3>
++GeomType</H3>
++<PRE><B>GeomType</B>()</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GeometryArray.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="GLOBALS.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/GLOBALS.html
+===================================================================
+--- documents/jsdoc/GLOBALS.html (revision 0)
++++ documents/jsdoc/GLOBALS.html (revision 0)
+@@ -0,0 +1,298 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++GLOBALS
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="GLOBALS";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GeomType.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Highlight.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class GLOBALS</H2>
++<PRE>Object
++ |
++ +--<b>GLOBALS</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>GLOBALS</B>
++
++
++</DL>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE><static> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#!s!calculateVisibleDash">calculateVisibleDash</A></B>(p0,p1,width,height)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE><static> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#!s!objString">objString</A></B>(a)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="!s!calculateVisibleDash"><!-- --></A>
++ <H3>calculateVisibleDash</H3>
++ <PRE><static> Object <B>calculateVisibleDash</B>(p0,p1,width,height)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="!s!objString"><!-- --></A>
++ <H3>objString</H3>
++ <PRE><static> Object <B>objString</B>(a)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GeomType.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Highlight.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/help-doc.html
+===================================================================
+--- documents/jsdoc/help-doc.html (revision 0)
++++ documents/jsdoc/help-doc.html (revision 0)
+@@ -0,0 +1,160 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<HTML>
++<HEAD>
++<TITLE>
++ API Help
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title=" API Help";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_top"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_top_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD>
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ PREV
++ NEXT</FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="help-doc.html" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<CENTER>
++<H1>
++How This API Document Is Organized</H1>
++</CENTER>
++This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
++Class</H3>
++<BLOCKQUOTE>
++
++<P>
++Each class has its own separate page. Each of these pages has three sections consisting of a class description, summary tables, and detailed member descriptions:<UL>
++<LI>Class inheritance diagram<LI>Direct Subclasses<LI>Class declaration<LI>Class description
++<P>
++<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
++<P>
++<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
++Each summary entry contains the first sentence from the detailed description for that item. </BLOCKQUOTE>
++<!--H3>
++Tree (Class Hierarchy)</H3>
++<BLOCKQUOTE>
++There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all classes. The hierarchy page contains a list of classes. The classes are organized by inheritance structure starting with <code>Object</code>.<UL>
++</BLOCKQUOTE-->
++<!-- H3>
++Deprecated API</H3>
++<BLOCKQUOTE>
++The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE-->
++<H3>
++Index</H3>
++<BLOCKQUOTE>
++The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, constructors, methods, and fields.</BLOCKQUOTE>
++<H3>
++Prev/Next</H3>
++These links take you to the next or previous class, interface, package, or related page.<H3>
++Frames/No Frames</H3>
++These links show and hide the HTML frames. All pages are available with or without frames.
++<P>
++<FONT SIZE="-1">
++<EM>
++This help file applies to API documentation generated using the standard doclet.</EM>
++</FONT>
++<BR>
++<HR>
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD>
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ PREV
++ NEXT</FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="help-doc.html" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Highlight.html
+===================================================================
+--- documents/jsdoc/Highlight.html (revision 0)
++++ documents/jsdoc/Highlight.html (revision 0)
+@@ -0,0 +1,306 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Highlight
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Highlight";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Highlight</H2>
++<PRE>Object
++ |
++ +--<b>Highlight</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Highlight</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Highlight()">Highlight</A></B>(aTargetArray,aTagName,aStyle,aLineWidth)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#del">del</A></B>(m,color)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Highlight()"><!-- --></A><H3>
++Highlight</H3>
++<PRE><B>Highlight</B>(aTargetArray,aTagName,aStyle,aLineWidth)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="del"><!-- --></A>
++ <H3>del</H3>
++ <PRE>void <B>del</B>(m,color)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/index-all.html
+===================================================================
+--- documents/jsdoc/index-all.html (revision 0)
++++ documents/jsdoc/index-all.html (revision 0)
+@@ -0,0 +1,525 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Index ()
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Index ()";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_top"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_top_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD-->
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD>
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ PREV
++ NEXT</FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="index-all.html" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++
++<!--
++ Listing of letters
++-->
++ <A HREF="index-all.html#__A__">A</A> <A HREF="index-all.html#__C__">C</A> <A HREF="index-all.html#__D__">D</A> <A HREF="index-all.html#__E__">E</A> <A HREF="index-all.html#__F__">F</A> <A HREF="index-all.html#__G__">G</A> <A HREF="index-all.html#__H__">H</A> <A HREF="index-all.html#__I__">I</A> <A HREF="index-all.html#__M__">M</A> <A HREF="index-all.html#__O__">O</A> <A HREF="index-all.html#__P__">P</A> <A HREF="index-all.html#__S__">S</A> <A HREF="index-all.html#__U__">U</A> <A HREF="index-all.html#__W__">W</A>
++<HR>
++<!-- End letter listing -->
++
++<A NAME="__A__"><!-- --></A><H2>
++<B>A</B></H2>
++
++<DL>
++<DT><A HREF="Snapping.html#add"><B>add(aPoint)</B></A> -
++Instance method in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#addGeometry"><B>addGeometry()</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#addMember"><B>addMember(geomType)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__C__"><!-- --></A><H2>
++<B>C</B></H2>
++
++<DL>
++<DT><A HREF="GLOBALS.html#calculateVisibleDash"><B>calculateVisibleDash(p0,p1,width,height)</B></A> -
++Class method in class <A HREF="GLOBALS.html">GLOBALS</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Canvas.html#"><B>Canvas</B></A> -
++ class <A HREF="Canvas.html">Canvas</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Canvas.html#constructor_detail"><B>Canvas(aMapframe,aTagName,aStyle,aLineWidth)</B></A> -
++Constructor in class <A HREF="Canvas.html">Canvas</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Snapping.html#check"><B>check(currPoint)</B></A> -
++Instance method in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Canvas.html#clean"><B>clean()</B></A> -
++Instance method in class <A HREF="Canvas.html">Canvas</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Snapping.html#clean"><B>clean()</B></A> -
++Instance method in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#close"><B>close()</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Wfs_element.html#count"><B>count()</B></A> -
++Instance method in class <A HREF="Wfs_element.html">Wfs_element</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__D__"><!-- --></A><H2>
++<B>D</B></H2>
++
++<DL>
++<DT><A HREF="Geometry.html#del"><B>del(i)</B></A> -
++Instance method in class <A HREF="Geometry.html">Geometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Highlight.html#del"><B>del(m,color)</B></A> -
++Instance method in class <A HREF="Highlight.html">Highlight</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#delAllPointsLike"><B>delAllPointsLike(point)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#delGeometry"><B>delGeometry(i,j)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#delPoint"><B>delPoint(i,j)</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#delPoint"><B>delPoint(i,j,k)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Canvas.html#drawGeometry"><B>drawGeometry(t,g,col)</B></A> -
++Instance method in class <A HREF="Canvas.html">Canvas</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__E__"><!-- --></A><H2>
++<B>E</B></H2>
++
++<DL>
++<DT><A HREF="Geometry.html#equals"><B>equals(geom)</B></A> -
++Instance method in class <A HREF="Geometry.html">Geometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#equals"><B>equals(multigeom)</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__F__"><!-- --></A><H2>
++<B>F</B></H2>
++
++<DL>
++<DT><A HREF="GeometryArray.html#findMultiGeometry"><B>findMultiGeometry(geom)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__G__"><!-- --></A><H2>
++<B>G</B></H2>
++
++<DL>
++<DT><A HREF="Geometry.html#"><B>Geometry</B></A> -
++ class <A HREF="Geometry.html">Geometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Geometry.html#constructor_detail"><B>Geometry(aGeomtype)</B></A> -
++Constructor in class <A HREF="Geometry.html">Geometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#"><B>GeometryArray</B></A> -
++ class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#constructor_detail"><B>GeometryArray()</B></A> -
++Constructor in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeomType.html#"><B>GeomType</B></A> -
++ class <A HREF="GeomType.html">GeomType</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeomType.html#constructor_detail"><B>GeomType()</B></A> -
++Constructor in class <A HREF="GeomType.html">GeomType</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Geometry.html#getBBox"><B>getBBox()</B></A> -
++Instance method in class <A HREF="Geometry.html">Geometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#getBBox"><B>getBBox()</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#getCenter"><B>getCenter()</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Wfs_element.html#getElementIndexByName"><B>getElementIndexByName(elementName)</B></A> -
++Instance method in class <A HREF="Wfs_element.html">Wfs_element</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Wfs_element.html#getElementValueByName"><B>getElementValueByName(elementName)</B></A> -
++Instance method in class <A HREF="Wfs_element.html">Wfs_element</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#getGeometry"><B>getGeometry(i,j)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#getPoint"><B>getPoint(i,j,k)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#getPoint"><B>getPoint(j,k)</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Snapping.html#getSnappedPoint"><B>getSnappedPoint()</B></A> -
++Instance method in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#getTotalPointCount"><B>getTotalPointCount()</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GLOBALS.html#"><B>GLOBALS</B></A> -
++ class <A HREF="GLOBALS.html">GLOBALS</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__H__"><!-- --></A><H2>
++<B>H</B></H2>
++
++<DL>
++<DT><A HREF="Highlight.html#"><B>Highlight</B></A> -
++ class <A HREF="Highlight.html">Highlight</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Highlight.html#constructor_detail"><B>Highlight(aTargetArray,aTagName,aStyle,aLineWidth)</B></A> -
++Constructor in class <A HREF="Highlight.html">Highlight</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__I__"><!-- --></A><H2>
++<B>I</B></H2>
++
++<DL>
++<DT><A HREF="Snapping.html#isSnapped"><B>isSnapped()</B></A> -
++Instance method in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__M__"><!-- --></A><H2>
++<B>M</B></H2>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#"><B>MultiGeometry</B></A> -
++ class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#constructor_detail"><B>MultiGeometry(geomType)</B></A> -
++Constructor in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__O__"><!-- --></A><H2>
++<B>O</B></H2>
++
++<DL>
++<DT><A HREF="GLOBALS.html#objString"><B>objString(a)</B></A> -
++Class method in class <A HREF="GLOBALS.html">GLOBALS</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__P__"><!-- --></A><H2>
++<B>P</B></H2>
++
++<DL>
++<DT><A HREF="Canvas.html#paint"><B>paint(gA)</B></A> -
++Instance method in class <A HREF="Canvas.html">Canvas</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeomType.html#polygon"><B>polygon</B></A> -
++Instance field in class <A HREF="GeomType.html">GeomType</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__S__"><!-- --></A><H2>
++<B>S</B></H2>
++
++<DL>
++<DT><A HREF="Snapping.html#"><B>Snapping</B></A> -
++ class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Snapping.html#constructor_detail"><B>Snapping(aTarget,aTolerance,aColor,aZIndex)</B></A> -
++Constructor in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Snapping.html#store"><B>store(geom,point)</B></A> -
++Instance method in class <A HREF="Snapping.html">Snapping</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__U__"><!-- --></A><H2>
++<B>U</B></H2>
++
++<DL>
++<DT><A HREF="Geometry.html#updateAllPointsLike"><B>updateAllPointsLike(oldP,newP)</B></A> -
++Instance method in class <A HREF="Geometry.html">Geometry</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="GeometryArray.html#updateAllPointsLike"><B>updateAllPointsLike(oldP,newP)</B></A> -
++Instance method in class <A HREF="GeometryArray.html">GeometryArray</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="MultiGeometry.html#updateAllPointsLike"><B>updateAllPointsLike(oldP,newP)</B></A> -
++Instance method in class <A HREF="MultiGeometry.html">MultiGeometry</A>
++<DD>
++</DL>
++
++<HR>
++
++<A NAME="__W__"><!-- --></A><H2>
++<B>W</B></H2>
++
++<DL>
++<DT><A HREF="Wfs_element.html#"><B>Wfs_element</B></A> -
++ class <A HREF="Wfs_element.html">Wfs_element</A>
++<DD>
++</DL>
++
++<DL>
++<DT><A HREF="Wfs_element.html#constructor_detail"><B>Wfs_element()</B></A> -
++Constructor in class <A HREF="Wfs_element.html">Wfs_element</A>
++<DD>
++</DL>
++
++<HR>
++
++<!--
++ Listing of letters
++-->
++ <A HREF="index-all.html#__A__">A</A> <A HREF="index-all.html#__C__">C</A> <A HREF="index-all.html#__D__">D</A> <A HREF="index-all.html#__E__">E</A> <A HREF="index-all.html#__F__">F</A> <A HREF="index-all.html#__G__">G</A> <A HREF="index-all.html#__H__">H</A> <A HREF="index-all.html#__I__">I</A> <A HREF="index-all.html#__M__">M</A> <A HREF="index-all.html#__O__">O</A> <A HREF="index-all.html#__P__">P</A> <A HREF="index-all.html#__S__">S</A> <A HREF="index-all.html#__U__">U</A> <A HREF="index-all.html#__W__">W</A>
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_top"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_top_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD-->
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD>
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ PREV
++ NEXT</FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="index-all.html" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/index.html
+===================================================================
+--- documents/jsdoc/index.html (revision 0)
++++ documents/jsdoc/index.html (revision 0)
+@@ -0,0 +1,22 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<HTML>
++<HEAD>
++<TITLE>
++Generated Javascript Documentation
++</TITLE>
++</HEAD>
++<FRAMESET cols="20%,80%">
++
++<FRAME src="allclasses-frame.html" name="packageFrame">
++
++<FRAME src="Canvas.html" name="classFrame">
++</FRAMESET>
++<NOFRAMES>
++<H2>
++Frame Alert</H2>
++
++<P>
++This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
++<BR>
++Link to <A HREF="allclasses-frame.html">Non-frame version.</A></NOFRAMES>
++</HTML>
+Index: documents/jsdoc/jsgFont.html
+===================================================================
+--- documents/jsdoc/jsgFont.html (revision 0)
++++ documents/jsdoc/jsgFont.html (revision 0)
+@@ -0,0 +1,357 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++jsgFont
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="jsgFont";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-wz_jsgraphics.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="jsgStroke.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class jsgFont</H2>
++<PRE>Object
++ |
++ +--<b>jsgFont</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>jsgFont</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-wz_jsgraphics.js.html'>wz_jsgraphics.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#BOLD">BOLD</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#BOLD_ITALIC">BOLD_ITALIC</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#ITALIC">ITALIC</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#ITALIC_BOLD">ITALIC_BOLD</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#PLAIN">PLAIN</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#jsgFont()">jsgFont</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="BOLD"><!-- --></A>
++ <H3>BOLD</H3>
++ <PRE>Object <B>BOLD</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++ <A NAME="BOLD_ITALIC"><!-- --></A>
++ <H3>BOLD_ITALIC</H3>
++ <PRE>Object <B>BOLD_ITALIC</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++ <A NAME="ITALIC"><!-- --></A>
++ <H3>ITALIC</H3>
++ <PRE>Object <B>ITALIC</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++ <A NAME="ITALIC_BOLD"><!-- --></A>
++ <H3>ITALIC_BOLD</H3>
++ <PRE>Object <B>ITALIC_BOLD</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++ <A NAME="PLAIN"><!-- --></A>
++ <H3>PLAIN</H3>
++ <PRE>Object <B>PLAIN</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="jsgFont()"><!-- --></A><H3>
++jsgFont</H3>
++<PRE><B>jsgFont</B>()</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-wz_jsgraphics.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="jsgStroke.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:23 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/jsgStroke.html
+===================================================================
+--- documents/jsdoc/jsgStroke.html (revision 0)
++++ documents/jsdoc/jsgStroke.html (revision 0)
+@@ -0,0 +1,289 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++jsgStroke
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="jsgStroke";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-wz_jsgraphics.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="jsgFont.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class jsgStroke</H2>
++<PRE>Object
++ |
++ +--<b>jsgStroke</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>jsgStroke</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-wz_jsgraphics.js.html'>wz_jsgraphics.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#DOTTED">DOTTED</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#jsgStroke()">jsgStroke</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="DOTTED"><!-- --></A>
++ <H3>DOTTED</H3>
++ <PRE>Object <B>DOTTED</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="jsgStroke()"><!-- --></A><H3>
++jsgStroke</H3>
++<PRE><B>jsgStroke</B>()</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-wz_jsgraphics.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="jsgFont.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:23 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/mb_conButton.html
+===================================================================
+--- documents/jsdoc/mb_conButton.html (revision 0)
++++ documents/jsdoc/mb_conButton.html (revision 0)
+@@ -0,0 +1,289 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++mb_conButton
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="mb_conButton";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Mb_exception.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class mb_conButton</H2>
++<PRE>Object
++ |
++ +--<b>mb_conButton</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>mb_conButton</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map.js.html'>map.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#wii">wii</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#mb_conButton()">mb_conButton</A></B>(wii,ind)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="wii"><!-- --></A>
++ <H3>wii</H3>
++ <PRE>Object <B>wii</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="mb_conButton()"><!-- --></A><H3>
++mb_conButton</H3>
++<PRE><B>mb_conButton</B>(wii,ind)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Mb_exception.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Mb_exception.html
+===================================================================
+--- documents/jsdoc/Mb_exception.html (revision 0)
++++ documents/jsdoc/Mb_exception.html (revision 0)
+@@ -0,0 +1,254 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Mb_exception
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Mb_exception";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="mb_conButton.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Mb_exception</H2>
++<PRE>Object
++ |
++ +--Mb_log
++ |
++ +--<b>Mb_exception</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Mb_exception</B>
++
++ <DT>extends Mb_log
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map.js.html'>map.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Mb_exception()">Mb_exception</A></B>(message)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Mb_exception()"><!-- --></A><H3>
++Mb_exception</H3>
++<PRE><B>Mb_exception</B>(message)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="mb_conButton.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/mb_mapObj_const.html
+===================================================================
+--- documents/jsdoc/mb_mapObj_const.html (revision 0)
++++ documents/jsdoc/mb_mapObj_const.html (revision 0)
+@@ -0,0 +1,306 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++mb_mapObj_const
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="mb_mapObj_const";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="Mb_notice.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class mb_mapObj_const</H2>
++<PRE>Object
++ |
++ +--<b>mb_mapObj_const</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>mb_mapObj_const</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map.js.html'>map.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#epsg">epsg</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#width">width</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#mb_mapObj_const()">mb_mapObj_const</A></B>(frameName,elementName,width,height,wms_index)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="epsg"><!-- --></A>
++ <H3>epsg</H3>
++ <PRE>Object <B>epsg</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++ <A NAME="width"><!-- --></A>
++ <H3>width</H3>
++ <PRE>Object <B>width</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="mb_mapObj_const()"><!-- --></A><H3>
++mb_mapObj_const</H3>
++<PRE><B>mb_mapObj_const</B>(frameName,elementName,width,height,wms_index)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="Mb_notice.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Mb_notice.html
+===================================================================
+--- documents/jsdoc/Mb_notice.html (revision 0)
++++ documents/jsdoc/Mb_notice.html (revision 0)
+@@ -0,0 +1,254 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Mb_notice
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Mb_notice";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="mb_mapObj_const.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Mb_warning.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Mb_notice</H2>
++<PRE>Object
++ |
++ +--Mb_log
++ |
++ +--<b>Mb_notice</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Mb_notice</B>
++
++ <DT>extends Mb_log
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map.js.html'>map.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Mb_notice()">Mb_notice</A></B>(message)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Mb_notice()"><!-- --></A><H3>
++Mb_notice</H3>
++<PRE><B>Mb_notice</B>(message)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="mb_mapObj_const.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Mb_warning.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Mb_warning.html
+===================================================================
+--- documents/jsdoc/Mb_warning.html (revision 0)
++++ documents/jsdoc/Mb_warning.html (revision 0)
+@@ -0,0 +1,254 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Mb_warning
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Mb_warning";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Mb_notice.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Mb_warning</H2>
++<PRE>Object
++ |
++ +--Mb_log
++ |
++ +--<b>Mb_warning</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Mb_warning</B>
++
++ <DT>extends Mb_log
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map.js.html'>map.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Mb_warning()">Mb_warning</A></B>(message)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Mb_warning()"><!-- --></A><H3>
++Mb_warning</H3>
++<PRE><B>Mb_warning</B>(message)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Mb_notice.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/MultiGeometry.html
+===================================================================
+--- documents/jsdoc/MultiGeometry.html (revision 0)
++++ documents/jsdoc/MultiGeometry.html (revision 0)
+@@ -0,0 +1,541 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++MultiGeometry
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="MultiGeometry";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="Snapping.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class MultiGeometry</H2>
++<PRE>Object
++ |
++ +--List
++ |
++ +--<b>MultiGeometry</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>MultiGeometry</B>
++
++ <DT>extends List
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#MultiGeometry()">MultiGeometry</A></B>(geomType)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#addGeometry">addGeometry</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#delPoint">delPoint</A></B>(i,j)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#equals">equals</A></B>(multigeom)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getBBox">getBBox</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getCenter">getCenter</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getPoint">getPoint</A></B>(j,k)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getTotalPointCount">getTotalPointCount</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#updateAllPointsLike">updateAllPointsLike</A></B>(oldP,newP)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="MultiGeometry()"><!-- --></A><H3>
++MultiGeometry</H3>
++<PRE><B>MultiGeometry</B>(geomType)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="addGeometry"><!-- --></A>
++ <H3>addGeometry</H3>
++ <PRE>void <B>addGeometry</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="delPoint"><!-- --></A>
++ <H3>delPoint</H3>
++ <PRE>Object <B>delPoint</B>(i,j)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="equals"><!-- --></A>
++ <H3>equals</H3>
++ <PRE>Object <B>equals</B>(multigeom)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getBBox"><!-- --></A>
++ <H3>getBBox</H3>
++ <PRE>void <B>getBBox</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getCenter"><!-- --></A>
++ <H3>getCenter</H3>
++ <PRE>Object <B>getCenter</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getPoint"><!-- --></A>
++ <H3>getPoint</H3>
++ <PRE>Object <B>getPoint</B>(j,k)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getTotalPointCount"><!-- --></A>
++ <H3>getTotalPointCount</H3>
++ <PRE>Object <B>getTotalPointCount</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="updateAllPointsLike"><!-- --></A>
++ <H3>updateAllPointsLike</H3>
++ <PRE>void <B>updateAllPointsLike</B>(oldP,newP)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <B>PREV CLASS</B><!--
++ NEXT CLASS
++-->
++ <A HREF="Snapping.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/overview-summary-geometry.js.html
+===================================================================
+--- documents/jsdoc/overview-summary-geometry.js.html (revision 0)
++++ documents/jsdoc/overview-summary-geometry.js.html (revision 0)
+@@ -0,0 +1,352 @@
++<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<html>
++<head>
++<title>
++ Overview
++</title>
++<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
++<script>
++function asd() {
++
++ parent.document.title="geometry.js Overview";
++
++}
++</script>
++</head>
++<body bgcolor="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top">
++<em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<center>
++
++ <h2>geometry.js</h2>
++
++</center>
++
++
++
++
++<h4>Summary</h4>
++<p>
++
++ No overview generated for 'geometry.js'<BR/><BR/>
++
++</p>
++
++<hr>
++
++
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2><font size="+2">
++
++ <b>Class Summary</b>
++
++ </font></td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Canvas.html">Canvas</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Geometry.html">Geometry</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="GeometryArray.html">GeometryArray</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="GeomType.html">GeomType</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Highlight.html">Highlight</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="MultiGeometry.html">MultiGeometry</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Snapping.html">Snapping</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Wfs_element.html">Wfs_element</a></b></td>
++ <td> </td>
++ </tr>
++
++ </table>
++ <hr/>
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++ <a name="method_summary"><!-- --></a>
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2>
++ <font size="+2">
++ <b>Method Summary</b>
++ </font>
++ </td>
++ </tr>
++
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!calculateVisibleDash">calculateVisibleDash</a></b>(p0,p1,width,height)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!objString">objString</a></b>(a)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++
++ </table>
++ <p>
++
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++ <pre class="sourceview">var nameGeometryArray=<span class="literal">"GeometryArray"</span>;var nameMultiGeometry=<span class="literal">"MultiGeometry"</span>;var nameGeometry=<span class="literal">"Geometry"</span>;<span class="reserved">function</span> GeomType(){<span class="reserved">this</span>.polygon=<span class="literal">"polygon"</span>;<span class="reserved">this</span>.line=<span class="literal">"line"</span>;<span class="reserved">this</span>.point=<span class="literal">"point"</span>;}
++var geomType=new GeomType();<span class="reserved">function</span> GeometryArray(){<span class="reserved">this</span>.addMember=<span class="reserved">function</span>(geomType){<span class="reserved">this</span>.add(new MultiGeometry(geomType));};<span class="reserved">this</span>.name=nameGeometryArray;<span class="reserved">this</span>.list=[];}
++GeometryArray.<span class="reserved">prototype</span>=new List();GeometryArray.<span class="reserved">prototype</span>.getGeometry=<span class="reserved">function</span>(i,j){<span class="reserved">return</span> <span class="reserved">this</span>.get(i).get(j);};GeometryArray.<span class="reserved">prototype</span>.getPoint=<span class="reserved">function</span>(i,j,k){<span class="reserved">return</span> <span class="reserved">this</span>.get(i).get(j).get(k);};GeometryArray.<span class="reserved">prototype</span>.findMultiGeometry=<span class="reserved">function</span>(geom){var a=[];<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){<span class="reserved">if</span>(<span class="reserved">this</span>.get(i).equals(geom)){a.push(i);}}
++<span class="reserved">return</span> a;};GeometryArray.<span class="reserved">prototype</span>.delGeometry=<span class="reserved">function</span>(i,j){<span class="reserved">if</span>(<span class="reserved">this</span>.get(i).del(j)===false){<span class="reserved">this</span>.del(i);}};GeometryArray.<span class="reserved">prototype</span>.delPoint=<span class="reserved">function</span>(i,j,k){var res=<span class="reserved">this</span>.get(i).delPoint(j,k);<span class="reserved">if</span>(res===false){<span class="reserved">this</span>.del(i);}};GeometryArray.<span class="reserved">prototype</span>.close=<span class="reserved">function</span>(){<span class="reserved">if</span>(!<span class="reserved">this</span>.get(-1).get(-1).close()){<span class="reserved">this</span>.delGeometry(-1,-1);}
++<span class="reserved">else</span>{<span class="reserved">if</span>(<span class="reserved">this</span>.get(-1).get(-1).count()===0){<span class="reserved">this</span>.get(-1).del(-1);}
++<span class="reserved">if</span>(<span class="reserved">this</span>.get(-1).count()===0){<span class="reserved">this</span>.del(-1);}}};GeometryArray.<span class="reserved">prototype</span>.delAllPointsLike=<span class="reserved">function</span>(point){var finished=false;<span class="reserved">while</span>(finished===false){finished=true;<span class="reserved">for</span>(var i=0;finished===true&&i<<span class="reserved">this</span>.count();i++){<span class="reserved">for</span>(var j=0;finished===true&&j<<span class="reserved">this</span>.get(i).count();j++){<span class="reserved">for</span>(var k=0;finished===true&&k<<span class="reserved">this</span>.get(i).get(j).count();k++){<span class="reserved">if</span>(<span class="reserved">this</span>.getPoint(i,j,k).equals(point)){<span class="reserved">this</span>.delPoint(i,j,k);finished=false;}}}}}};GeometryArray.<span class="reserved">prototype</span>.updateAllPointsLike=<span class="reserved">function</span>(oldP,newP){<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){<span class="reserved">this</span>.get(i).updateAllPointsLike(oldP,newP);}};<span class="reserved">function</span> MultiGeometry(geomType){<span class="reserved">this</span>.addGeometry=<span class="reserved">function</span>(){<span class="reserved">this</span>.add(new Geometry(<span class="reserved">this</span>.geomType));};<span class="reserved">this</span>.del=<span class="reserved">function</span>(i){i=<span class="reserved">this</span>.getIndex(i);<span class="reserved">if</span>(i!==false){var tmpLength=<span class="reserved">this</span>.count()-1;<span class="reserved">for</span>(var z=i;z<tmpLength;z++){<span class="reserved">this</span>.list[z]=<span class="reserved">this</span>.list[z+1];e[z]=e[z+1];}
++<span class="reserved">this</span>.list.length-=1;<span class="reserved">if</span>(<span class="reserved">this</span>.list.length===0){<span class="reserved">return</span> false;}}
++<span class="reserved">return</span> true;};<span class="reserved">this</span>.list=[];<span class="reserved">this</span>.e=new Wfs_element();<span class="reserved">this</span>.geomType=geomType;<span class="reserved">this</span>.name=nameMultiGeometry;}
++MultiGeometry.<span class="reserved">prototype</span>=new List();MultiGeometry.<span class="reserved">prototype</span>.updateAllPointsLike=<span class="reserved">function</span>(oldP,newP){<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){<span class="reserved">this</span>.get(i).updateAllPointsLike(oldP,newP);}};MultiGeometry.<span class="reserved">prototype</span>.getBBox=<span class="reserved">function</span>(){var q=<span class="reserved">this</span>.get(0).get(0);var min=cloneObject(q);var max=cloneObject(q);<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){var pos=<span class="reserved">this</span>.get(i).getBBox();<span class="reserved">if</span>(pos[0].x<min.x){min.x=pos[0].x;}
++<span class="reserved">if</span>(pos[1].x>max.x){max.x=pos[1].x;}
++<span class="reserved">if</span>(pos[1].y>max.y){max.y=pos[1].y;}
++<span class="reserved">if</span>(pos[0].y<min.y){min.y=pos[0].y;}}
++<span class="reserved">return</span>[min,max];};MultiGeometry.<span class="reserved">prototype</span>.getCenter=<span class="reserved">function</span>(){var tmp=<span class="reserved">this</span>.getBBox();var x=parseFloat(tmp[0].x)+parseFloat((tmp[1].x-tmp[0].x)/2);var y=parseFloat(tmp[0].y)+parseFloat((tmp[1].y-tmp[0].y)/2);<span class="reserved">return</span> new Point(x,y);};MultiGeometry.<span class="reserved">prototype</span>.getTotalPointCount=<span class="reserved">function</span>(){var c=0;<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){c+=<span class="reserved">this</span>.get(i).count();}
++<span class="reserved">return</span> c;};MultiGeometry.<span class="reserved">prototype</span>.getPoint=<span class="reserved">function</span>(j,k){<span class="reserved">return</span> <span class="reserved">this</span>.get(j).get(k);};MultiGeometry.<span class="reserved">prototype</span>.equals=<span class="reserved">function</span>(multigeom){<span class="reserved">if</span>(<span class="reserved">this</span>.geomType!=multigeom.geomType){<span class="reserved">return</span> false;}
++<span class="reserved">if</span>(<span class="reserved">this</span>.count()!=multigeom.count()){<span class="reserved">return</span> false;}
++<span class="reserved">if</span>(<span class="reserved">this</span>.getTotalPointCount()!=multigeom.getTotalPointCount()){<span class="reserved">return</span> false;}
++<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){<span class="reserved">if</span>(!<span class="reserved">this</span>.get(i).equals(multigeom.get(i))){<span class="reserved">return</span> false;}}
++<span class="reserved">return</span> true;};MultiGeometry.<span class="reserved">prototype</span>.delPoint=<span class="reserved">function</span>(i,j){var res=<span class="reserved">this</span>.get(i).del(j);<span class="reserved">if</span>(res===false){<span class="reserved">return</span> <span class="reserved">this</span>.del(i);}
++<span class="reserved">return</span> true;};<span class="reserved">function</span> Geometry(aGeomtype){<span class="reserved">this</span>.del=<span class="reserved">function</span>(i){i=<span class="reserved">this</span>.getIndex(i);<span class="reserved">if</span>(i!==false){var tmpLength=<span class="reserved">this</span>.count()-1;<span class="reserved">for</span>(var z=i;z<tmpLength;z++){<span class="reserved">this</span>.list[z]=<span class="reserved">this</span>.list[z+1];}
++<span class="reserved">this</span>.list.length-=1;<span class="reserved">if</span>(<span class="reserved">this</span>.geomType==geomType.polygon){<span class="reserved">if</span>(i==tmpLength){<span class="reserved">this</span>.list[0]=<span class="reserved">this</span>.list[tmpLength-1];}
++<span class="reserved">else</span> <span class="reserved">if</span>(i===0){<span class="reserved">this</span>.list[tmpLength-1]=<span class="reserved">this</span>.list[0];}
++<span class="reserved">if</span>(<span class="reserved">this</span>.list.length==1){<span class="reserved">return</span> false;}}
++updateDist();<span class="reserved">if</span>(<span class="reserved">this</span>.list.length===0){<span class="reserved">return</span> false;}
++<span class="reserved">return</span> true;}
++<span class="reserved">return</span> false;};<span class="reserved">this</span>.addPointByCoordinates=<span class="reserved">function</span>(x,y){<span class="reserved">this</span>.add(new Point(x,y));updateDist();};<span class="reserved">this</span>.addPoint=<span class="reserved">function</span>(aPoint){<span class="reserved">this</span>.add(new Point(aPoint.x,aPoint.y));updateDist();};<span class="reserved">this</span>.addPointAtIndex=<span class="reserved">function</span>(p,i){i=<span class="reserved">this</span>.getIndex(i);<span class="reserved">if</span>(i!==false){<span class="reserved">for</span>(var z=<span class="reserved">this</span>.count();z>i;z--){<span class="reserved">this</span>.list[z]=<span class="reserved">this</span>.list[z-1];}
++<span class="reserved">this</span>.list[i]=new Point(p.x,p.y);updateDist();}};<span class="reserved">this</span>.updatePointAtIndex=<span class="reserved">function</span>(p,i){i=<span class="reserved">this</span>.getIndex(i);<span class="reserved">if</span>((i===0||i==<span class="reserved">this</span>.count()-1)&&<span class="reserved">this</span>.geomType==geomType.polygon){<span class="reserved">this</span>.list[0]=p;<span class="reserved">this</span>.list[<span class="reserved">this</span>.count()-1]=p;}
++<span class="reserved">else</span>{<span class="reserved">this</span>.list[i]=p;}
++updateDist();};var updateDist=<span class="reserved">function</span>(){dist[0]=0;totaldist[0]=0;<span class="reserved">for</span>(var i=1;i<that.count();i++){dist[i]=that.get(i-1).dist(that.get(i));totaldist[i]=totaldist[i-1]+dist[i];}};<span class="reserved">this</span>.getCurrentDist=<span class="reserved">function</span>(numberOfDigits){<span class="reserved">if</span>(typeof(numberOfDigits)==<span class="literal">"number"</span>){<span class="reserved">return</span> roundToDigits(dist[<span class="reserved">this</span>.count()-1],numberOfDigits);}
++<span class="reserved">return</span> dist[<span class="reserved">this</span>.count()-1];};<span class="reserved">this</span>.getTotalDist=<span class="reserved">function</span>(numberOfDigits){<span class="reserved">if</span>(typeof(numberOfDigits)==<span class="literal">"number"</span>){<span class="reserved">return</span> roundToDigits(totaldist[<span class="reserved">this</span>.count()-1],numberOfDigits);}
++<span class="reserved">return</span> totaldist[<span class="reserved">this</span>.count()-1];};<span class="reserved">this</span>.close=<span class="reserved">function</span>(){complete=true;<span class="reserved">if</span>(<span class="reserved">this</span>.geomType==geomType.polygon){<span class="reserved">if</span>(<span class="reserved">this</span>.count()>2){<span class="reserved">if</span>(!<span class="reserved">this</span>.get(0).equals(<span class="reserved">this</span>.get(-1))){<span class="reserved">this</span>.addPoint(<span class="reserved">this</span>.get(0));}}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">if</span>(<span class="reserved">this</span>.geomType==geomType.line){<span class="reserved">if</span>(<span class="reserved">this</span>.count()<2){<span class="reserved">return</span> false;}}
++<span class="reserved">return</span> true;};<span class="reserved">this</span>.isComplete=<span class="reserved">function</span>(){<span class="reserved">return</span> complete;};<span class="reserved">this</span>.list=[];var dist=[];var totaldist=[];var complete=false;var that=<span class="reserved">this</span>;<span class="reserved">this</span>.geomType=aGeomtype;<span class="reserved">this</span>.name=nameGeometry;}
++Geometry.<span class="reserved">prototype</span>=new List();Geometry.<span class="reserved">prototype</span>.getBBox=<span class="reserved">function</span>(){var q=<span class="reserved">this</span>.get(0);var min=cloneObject(q);var max=cloneObject(q);<span class="reserved">for</span>(var j=0;j<<span class="reserved">this</span>.count();j++){var pos=<span class="reserved">this</span>.get(j);<span class="reserved">if</span>(pos.x<min.x){min.x=pos.x;}
++<span class="reserved">else</span> <span class="reserved">if</span>(pos.x>max.x){max.x=pos.x;}
++<span class="reserved">if</span>(pos.y<min.y){min.y=pos.y;}
++<span class="reserved">else</span> <span class="reserved">if</span>(pos.y>max.y){max.y=pos.y;}}
++<span class="reserved">return</span>[min,max];};Geometry.<span class="reserved">prototype</span>.updateAllPointsLike=<span class="reserved">function</span>(oldP,newP){var len=<span class="reserved">this</span>.count();<span class="reserved">for</span>(var i=0;i<len;i++){<span class="reserved">if</span>(oldP.equals(<span class="reserved">this</span>.get(i))){<span class="reserved">if</span>(i>0&&newP.equals(<span class="reserved">this</span>.get(i-1))){<span class="reserved">this</span>.del(i);len--;i--;}
++<span class="reserved">else</span>{<span class="reserved">this</span>.updatePointAtIndex(newP,i);}}}};Geometry.<span class="reserved">prototype</span>.equals=<span class="reserved">function</span>(geom){<span class="reserved">if</span>(<span class="reserved">this</span>.geomType!=geom.geomType){<span class="reserved">return</span> false;}
++<span class="reserved">if</span>(<span class="reserved">this</span>.count()!=geom.count()){<span class="reserved">return</span> false;}
++<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){<span class="reserved">if</span>(!<span class="reserved">this</span>.get(i).equals(geom.get(i))){<span class="reserved">return</span> false;}}
++<span class="reserved">return</span> true;};<span class="reserved">function</span> Wfs_element(){<span class="reserved">this</span>.count=<span class="reserved">function</span>(){<span class="reserved">return</span> name.length;};<span class="reserved">this</span>.getName=<span class="reserved">function</span>(i){<span class="reserved">if</span>(isValidElementIndex(i)){<span class="reserved">return</span> name[i];}
++<span class="reserved">return</span> false;};<span class="reserved">this</span>.getValue=<span class="reserved">function</span>(i){<span class="reserved">if</span>(isValidElementIndex(i)){<span class="reserved">return</span> value[i];}
++<span class="reserved">return</span> false;};<span class="reserved">this</span>.setElement=<span class="reserved">function</span>(aName,aValue){var i=<span class="reserved">this</span>.getElementIndexByName(aName);<span class="reserved">if</span>(i===false){i=<span class="reserved">this</span>.count();}
++name[i]=aName;value[i]=aValue;};var isValidElementIndex=<span class="reserved">function</span>(i){<span class="reserved">if</span>(i>=0&&i<name.length){<span class="reserved">return</span> true;}
++var e=new Mb_exception(<span class="literal">"class Wfs_element: function isValidElementIndex: illegal element index"</span>);<span class="reserved">return</span> false;};var name=[];var value=[];}
++Wfs_element.<span class="reserved">prototype</span>.getElementIndexByName=<span class="reserved">function</span>(elementName){<span class="reserved">for</span>(var j=0;j<<span class="reserved">this</span>.count();j++){<span class="reserved">if</span>(<span class="reserved">this</span>.getName(j)==elementName){<span class="reserved">return</span> j;}}
++<span class="reserved">return</span> false;};Wfs_element.<span class="reserved">prototype</span>.getElementValueByName=<span class="reserved">function</span>(elementName){var i=<span class="reserved">this</span>.getElementIndexByName(elementName);<span class="reserved">if</span>(i===false){<span class="reserved">return</span> false;}
++<span class="reserved">return</span> <span class="reserved">this</span>.getValue(i);};<span class="reserved">function</span> Canvas(aMapframe,aTagName,aStyle,aLineWidth){<span class="reserved">this</span>.drawGeometry=<span class="reserved">function</span>(t,g,col){var mapObjInd=getMapObjIndexByName(mapframe);width=mb_mapObj[mapObjInd].width;height=mb_mapObj[mapObjInd].height;<span class="reserved">for</span>(var i=0;i<g.count();i++){<span class="reserved">if</span>(t==geomType.point){var p=realToMap(mapframe,g.get(i).get(0));<span class="reserved">if</span>(p.x+diameter<mb_mapObj[mapObjInd].width&&p.x-diameter>0&&p.y+diameter<mb_mapObj[mapObjInd].height&&p.y-diameter>0){drawCircle(p.x-1,p.y-1,diameter,col);}}
++<span class="reserved">else</span> <span class="reserved">if</span>(t==geomType.line||t==geomType.polygon){<span class="reserved">for</span>(var j=0;j<g.get(i).count()-1;j++){var pq=calculateVisibleDash(realToMap(mapframe,g.get(i).get(j)),realToMap(mapframe,g.get(i).get(j+1)),width,height);<span class="reserved">if</span>(pq){drawLine([pq[0].x-1,pq[1].x-1],[pq[0].y-1,pq[1].y-1],col);}}}
++<span class="reserved">else</span>{var e=new Mb_exception(<span class="literal">"class Canvas: function drawGeometry: unknown geomType "</span>+t);}}};<span class="reserved">this</span>.isTooSmall=<span class="reserved">function</span>(g){var tmp=g.getBBox();var min=realToMap(mapframe,tmp[0]);var max=realToMap(mapframe,tmp[1]);<span class="reserved">if</span>((Math.abs(max.x-min.x)<minWidth)&&(Math.abs(max.y-min.y)<minWidth)){<span class="reserved">return</span> true;}
++<span class="reserved">return</span> false;};<span class="reserved">this</span>.getCanvas=<span class="reserved">function</span>(){<span class="reserved">return</span> canvas;};var drawCircle=<span class="reserved">function</span>(x,y,diameter,color){canvas.setColor(color);canvas.drawEllipse(x-diameter/2,y-diameter/2,diameter,diameter);};var drawLine=<span class="reserved">function</span>(x_array,y_array,color){canvas.setColor(color);canvas.drawPolyline(x_array,y_array);};<span class="reserved">this</span>.canvasDivTag=new DivTag(aTagName,aMapframe,aStyle);var that=<span class="reserved">this</span>;var diameter=8;var minWidth=8;var lineWidth=aLineWidth;var mapframe=aMapframe;var style=aStyle;var canvas=new jsGraphics(aTagName,window.frames[mapframe]);canvas.setStroke(lineWidth);mb_registerPanSubElement(aTagName);}
++Canvas.<span class="reserved">prototype</span>.clean=<span class="reserved">function</span>(){<span class="reserved">this</span>.canvasDivTag.clean();};Canvas.<span class="reserved">prototype</span>.paint=<span class="reserved">function</span>(gA){<span class="reserved">for</span>(var q=0;q<gA.count();q++){var m=gA.get(q);var t=m.geomType;var col=m.color;<span class="reserved">if</span>(t==geomType.point){<span class="reserved">this</span>.drawGeometry(t,m,col);}
++<span class="reserved">else</span>{<span class="reserved">if</span>(<span class="reserved">this</span>.isTooSmall(m)){var newMember=new MultiGeometry(geomType.point);newMember.addGeometry();newMember.get(-1).addPoint(m.getCenter());<span class="reserved">this</span>.drawGeometry(geomType.point,newMember,col);}
++<span class="reserved">else</span>{<span class="reserved">if</span>(t==geomType.line){<span class="reserved">this</span>.drawGeometry(t,m,col);}
++<span class="reserved">else</span> <span class="reserved">if</span>(t==geomType.polygon){<span class="reserved">this</span>.drawGeometry(t,m,col);}
++<span class="reserved">else</span>{var e=new Mb_exception(<span class="literal">"class Canvas: function paint: unknown geomType"</span>+t);}}}}
++<span class="reserved">this</span>.getCanvas().paint();};<span class="reserved">function</span> Highlight(aTargetArray,aTagName,aStyle,aLineWidth){<span class="reserved">this</span>.del=<span class="reserved">function</span>(m,color){var a=gA.findMultiGeometry(m);var del=false;<span class="reserved">for</span>(var i=0;i<a.length&&del===false;i++){<span class="reserved">if</span>(gA.get(a[i]).color==color){gA.del(a[i]);del=true;}}
++<span class="reserved">this</span>.paint();};<span class="reserved">this</span>.add=<span class="reserved">function</span>(m,color){gA.addCopy(m);<span class="reserved">if</span>(typeof(color)!=<span class="literal">'undefined'</span>){gA.get(-1).color=color;}
++<span class="reserved">else</span>{gA.get(-1).color=lineColor;}
++<span class="reserved">this</span>.paint();};<span class="reserved">this</span>.clean=<span class="reserved">function</span>(){<span class="reserved">if</span>(gA.count()>0){gA=new GeometryArray();<span class="reserved">this</span>.paint();}};<span class="reserved">this</span>.paint=<span class="reserved">function</span>(){<span class="reserved">for</span>(var i=0;i<canvas.length;i++){<span class="reserved">if</span>(typeof(canvas[i])==<span class="literal">"object"</span>){canvas[i].clean();}}
++<span class="reserved">for</span>(var i=0;i<targets.length;i++){<span class="reserved">if</span>(typeof(canvas[i])==<span class="literal">'undefined'</span>){canvas[i]=new Canvas(targets[i],tagname,style,lineWidth);}
++canvas[i].paint(gA);}};var lineWidth=aLineWidth;var tagname=<span class="literal">'mod_gaz_draw'</span>+aTagName;var style=aStyle;var targets=aTargetArray;var canvas=[];var gA=new GeometryArray();var lineColor=<span class="literal">"#ff0000"</span>;<span class="reserved">this</span>.paint();}
++<span class="reserved">function</span> Snapping(aTarget,aTolerance,aColor,aZIndex){<span class="reserved">this</span>.draw=<span class="reserved">function</span>(center,radius){mG=new MultiGeometry(geomType.point);mG.addGeometry();mG.get(-1).addPoint(center);highlight.add(mG);};<span class="reserved">this</span>.getTolerance=<span class="reserved">function</span>(){<span class="reserved">return</span> tolerance;};<span class="reserved">this</span>.getTarget=<span class="reserved">function</span>(){<span class="reserved">return</span> target;};<span class="reserved">this</span>.cleanHighlight=<span class="reserved">function</span>(){<span class="reserved">return</span> highlight.clean();};<span class="reserved">this</span>.addPoint=<span class="reserved">function</span>(aPoint){coord.push(aPoint);};<span class="reserved">this</span>.getPointCount=<span class="reserved">function</span>(){<span class="reserved">return</span> coord.length;};<span class="reserved">this</span>.getPoint=<span class="reserved">function</span>(i){<span class="reserved">return</span> coord[i];};<span class="reserved">this</span>.resetPoints=<span class="reserved">function</span>(){coord=[];};<span class="reserved">this</span>.getNearestNeighbour=<span class="reserved">function</span>(){<span class="reserved">if</span>(min_i!=-1){<span class="reserved">return</span> <span class="reserved">this</span>.getPoint(min_i);}
++<span class="reserved">return</span> false;};<span class="reserved">this</span>.setIndexOfNearestNeighbour=<span class="reserved">function</span>(i){min_i=i;};<span class="reserved">this</span>.resetIndexOfNearestNeighbour=<span class="reserved">function</span>(){min_i=-1;};var tolerance=(typeof(aTolerance)==<span class="literal">'undefined'</span>)?10:aTolerance;var zIndex=(typeof(aZIndex)==<span class="literal">'undefined'</span>)?50:aZIndex;var coord=[];var min_i=-1;var target=aTarget;var lineWidth=2;var style={<span class="literal">"position"</span>:<span class="literal">"absolute"</span>,<span class="literal">"top"</span>:<span class="literal">"0px"</span>,<span class="literal">"left"</span>:<span class="literal">"0px"</span>,<span class="literal">"z-index"</span>:zIndex};var highlight=new Highlight([target],<span class="literal">"snapping"</span>+Math.round(Math.random()*Math.pow(10,10)),style,lineWidth);}
++Snapping.<span class="reserved">prototype</span>.check=<span class="reserved">function</span>(currPoint){var minDist=false;<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.getPointCount();i++){var currDist=currPoint.dist(realToMap(<span class="reserved">this</span>.getTarget(),<span class="reserved">this</span>.getPoint(i)));<span class="reserved">if</span>(minDist===false||currDist<minDist){minDist=currDist;<span class="reserved">if</span>(minDist<<span class="reserved">this</span>.getTolerance()){<span class="reserved">this</span>.setIndexOfNearestNeighbour(i);}}}
++<span class="reserved">if</span>(<span class="reserved">this</span>.getPointCount()>0&&minDist><span class="reserved">this</span>.getTolerance()){<span class="reserved">this</span>.resetIndexOfNearestNeighbour();}
++<span class="reserved">this</span>.cleanHighlight();<span class="reserved">if</span>(<span class="reserved">this</span>.isSnapped()){<span class="reserved">this</span>.draw(<span class="reserved">this</span>.getNearestNeighbour(),<span class="reserved">this</span>.getTolerance());}};Snapping.<span class="reserved">prototype</span>.store=<span class="reserved">function</span>(geom,point){<span class="reserved">this</span>.resetPoints();<span class="reserved">this</span>.resetIndexOfNearestNeighbour();<span class="reserved">for</span>(var i=0;i<geom.count();i++){<span class="reserved">if</span>(geom.name==nameGeometryArray||geom.name==nameMultiGeometry){<span class="reserved">for</span>(var j=0;j<geom.get(i).count();j++){<span class="reserved">if</span>(geom.get(i).name==nameMultiGeometry){<span class="reserved">for</span>(var k=0;k<geom.get(i).get(j).count();k++){<span class="reserved">if</span>((geom.get(i).get(j).isComplete()===true&&typeof(point)==<span class="literal">'undefined'</span>)||(typeof(point)!=<span class="literal">'undefined'</span>&&!geom.get(i).get(j).get(k).equals(point))){<span class="reserved">this</span>.add(geom.getPoint(i,j,k));}}}
++<span class="reserved">else</span>{<span class="reserved">if</span>((geom.get(i).isComplete()===true&&typeof(point)==<span class="literal">'undefined'</span>)||(typeof(point)!=<span class="literal">'undefined'</span>&&!geom.get(i).get(j).get(k).equals(point))){<span class="reserved">this</span>.add(geom.getPoint(i,j));}}}}
++<span class="reserved">else</span>{<span class="reserved">if</span>(typeof(point)!=<span class="literal">'undefined'</span>&&!geom.get(i).get(j).get(k).equals(point)){<span class="reserved">this</span>.add(geom.get(i));}}}};Snapping.<span class="reserved">prototype</span>.isSnapped=<span class="reserved">function</span>(){<span class="reserved">if</span>(<span class="reserved">this</span>.getNearestNeighbour()!==false){<span class="reserved">return</span> true;}
++<span class="reserved">return</span> false;};Snapping.<span class="reserved">prototype</span>.getSnappedPoint=<span class="reserved">function</span>(){<span class="reserved">return</span> <span class="reserved">this</span>.getNearestNeighbour();};Snapping.<span class="reserved">prototype</span>.add=<span class="reserved">function</span>(aPoint){<span class="reserved">this</span>.addPoint(aPoint);};Snapping.<span class="reserved">prototype</span>.clean=<span class="reserved">function</span>(){<span class="reserved">this</span>.cleanHighlight();};<span class="reserved">function</span> calculateVisibleDash(p0,p1,width,height){<span class="reserved">if</span>(p0.x>p1.x){var p_temp=p0;p0=p1;p1=p_temp;p_temp=null;}
++var p=p0;var q=p1;var m;var ix;var iy;<span class="reserved">if</span>(p1.x!=p0.x){m=-(p1.y-p0.y)/(p1.x-p0.x);<span class="reserved">if</span>(p0.x<width&&p1.x>0&&!(p0.y<0&&p1.y<0)&&!(p0.y>height&&p1.y>height)){<span class="reserved">if</span>(p0.x<0){iy=p0.y-m*(0-p0.x);<span class="reserved">if</span>(iy>0&&iy<height){p=new Point(0,iy);}
++<span class="reserved">else</span> <span class="reserved">if</span>(iy>height){ix=p0.x+((p0.y-height)/m);<span class="reserved">if</span>(ix>0&&ix<width){p=new Point(ix,height);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(iy<0){ix=p0.x+(p0.y/m);<span class="reserved">if</span>(ix>0&&ix<width){p=new Point(ix,0);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(p0.y>=0&&p0.y<=height){p=p0;}
++<span class="reserved">else</span> <span class="reserved">if</span>(p0.y<0){ix=p0.x+(p0.y/m);<span class="reserved">if</span>(ix>0&&ix<width){p=new Point(ix,0);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(p0.y>height&&m>0){ix=p0.x+((p0.y-height)/m);<span class="reserved">if</span>(ix>0&&ix<width){p=new Point(ix,height);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}
++<span class="reserved">if</span>(p1.x>width){iy=p1.y-m*(width-p1.x);<span class="reserved">if</span>(iy>0&&iy<height){q=new Point(width,iy);}
++<span class="reserved">else</span> <span class="reserved">if</span>(iy<0){ix=p0.x+(p0.y/m);<span class="reserved">if</span>(ix>0&&ix<width){q=new Point(ix,0);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(iy>height){ix=p0.x+((p0.y-height)/m);<span class="reserved">if</span>(ix>0&&ix<width){q=new Point(ix,height);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(p1.y>=0&&p1.y<=height){q=p1;}
++<span class="reserved">else</span> <span class="reserved">if</span>(p1.y<0){ix=p1.x+(p1.y/m);<span class="reserved">if</span>(ix>0&&ix<width){q=new Point(ix,0);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(p1.y>height){ix=p1.x+((p1.y-height)/m);<span class="reserved">if</span>(ix>0&&ix<width){q=new Point(ix,height);}<span class="reserved">else</span>{<span class="reserved">return</span> false;}}}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">else</span>{<span class="reserved">if</span>(!(p0.y<0&&p1.y<0)&&!(p0.y>height&&p1.y>height)){<span class="reserved">if</span>(p0.y<0){p=new Point(p0.x,0);}
++<span class="reserved">else</span> <span class="reserved">if</span>(p0.y>height){p=new Point(p0.x,height);}
++<span class="reserved">else</span>{p=p0;}
++<span class="reserved">if</span>(p1.y<0){q=new Point(p0.x,0);}
++<span class="reserved">else</span> <span class="reserved">if</span>(p1.y>height){q=new Point(p0.x,height);}
++<span class="reserved">else</span>{q=p1;}}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">return</span>[new Point(Math.round(q.x),Math.round(q.y)),new Point(Math.round(p.x),Math.round(p.y))];}
++<span class="reserved">function</span> objString(a){var z=<span class="literal">""</span>;<span class="reserved">for</span>(attr in a){var b=a[attr];<span class="reserved">if</span>(typeof(b)==<span class="literal">"object"</span>){z+=objString(b);}
++<span class="reserved">else</span>{z+=attr+<span class="literal">" "</span>+b+<span class="literal">"\n"</span>;alert(attr+<span class="literal">" "</span>+b);}}
++<span class="reserved">return</span> z;}</pre>
++ <hr>
++
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top"><em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<font size="-1">
++
++</font>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</body>
++</html>
+Index: documents/jsdoc/overview-summary-map.js.html
+===================================================================
+--- documents/jsdoc/overview-summary-map.js.html (revision 0)
++++ documents/jsdoc/overview-summary-map.js.html (revision 0)
+@@ -0,0 +1,1725 @@
++<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<html>
++<head>
++<title>
++ Overview
++</title>
++<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
++<script>
++function asd() {
++
++ parent.document.title="map.js Overview";
++
++}
++</script>
++</head>
++<body bgcolor="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top">
++<em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<center>
++
++ <h2>map.js</h2>
++
++</center>
++
++
++
++
++<h4>Summary</h4>
++<p>
++
++ No overview generated for 'map.js'<BR/><BR/>
++
++</p>
++
++<hr>
++
++
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2><font size="+2">
++
++ <b>Class Summary</b>
++
++ </font></td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="DivTag.html">DivTag</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="mb_conButton.html">mb_conButton</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Mb_exception.html">Mb_exception</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="mb_mapObj_const.html">mb_mapObj_const</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Mb_notice.html">Mb_notice</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Mb_warning.html">Mb_warning</a></b></td>
++ <td> </td>
++ </tr>
++
++ </table>
++ <hr/>
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++ <a name="method_summary"><!-- --></a>
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2>
++ <font size="+2">
++ <b>Method Summary</b>
++ </font>
++ </td>
++ </tr>
++
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!cloneObject">cloneObject</a></b>(someObject)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!deleteMapObj">deleteMapObj</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!deleteWmsObject">deleteWmsObject</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!getMapObjIndexByName">getMapObjIndexByName</a></b>(frameName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!getWMSIDByTitle">getWMSIDByTitle</a></b>(frameName,wms_title)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!getWMSIndexById">getWMSIndexById</a></b>(frameName,wms_id)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!getWMSIndexByTitle">getWMSIndexByTitle</a></b>(frameName,wms_title)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!handleSelectedLayer">handleSelectedLayer</a></b>(frameName,wms_title,layerName,type,status)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!handleSelectedLayer_array">handleSelectedLayer_array</a></b>(mapObj,array_wms,array_layer,type,status)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!init">init</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!makeClickPos2RealWorldPos">makeClickPos2RealWorldPos</a></b>(frameName,myClickX,myClickY)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!makeRealWorld2mapPos">makeRealWorld2mapPos</a></b>(frameName,rw_posx,rw_posy)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_ajax_get">mb_ajax_get</a></b>(url,param,callback)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_ajax_json">mb_ajax_json</a></b>(url,param,callback)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_ajax_post">mb_ajax_post</a></b>(url,param,callback)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_arrangeElement">mb_arrangeElement</a></b>(frameName,elName,left,top)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_button_click">mb_button_click</a></b>(ind)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_button_out">mb_button_out</a></b>(ind)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_button_over">mb_button_over</a></b>(ind)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_calculateExtent">mb_calculateExtent</a></b>(frameName,minx,miny,maxx,maxy)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_checkScale">mb_checkScale</a></b>(frameName,mObj,wmsObj)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_checkTag">mb_checkTag</a></b>(frameName,tagName,elementId,appendAtTagName,attributes)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_disableButton">mb_disableButton</a></b>(elName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_disableResult">mb_disableResult</a></b>(frameName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_disableThisButton">mb_disableThisButton</a></b>(elName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_execloadWmsSubFunctions">mb_execloadWmsSubFunctions</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_execWfsReadSubFunctions">mb_execWfsReadSubFunctions</a></b>(geom)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_execWfsWriteSubFunctions">mb_execWfsWriteSubFunctions</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getchildsbyname">mb_getchildsbyname</a></b>(objInd,wmsInd,lname)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getConjunctionCharacter">mb_getConjunctionCharacter</a></b>(onlineresource)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getLayerObjByName">mb_getLayerObjByName</a></b>(fname,wms_id,layer_name)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getlayerposbyname">mb_getlayerposbyname</a></b>(objInd,wmsInd,lname)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getLayerTitleByName">mb_getLayerTitleByName</a></b>(map_index,wms_index,myLayer_name)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getMousePos">mb_getMousePos</a></b>(e,fName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_getScale">mb_getScale</a></b>(frameName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_hideHighlight">mb_hideHighlight</a></b>(frameName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_mapObjaddWMS">mb_mapObjaddWMS</a></b>(obj)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_mapObjaddWMSwithLayers">mb_mapObjaddWMSwithLayers</a></b>(obj,layers,querylayers)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_mapObjremoveWMS">mb_mapObjremoveWMS</a></b>(objind,wmsind)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_markResult">mb_markResult</a></b>(frameName,geom,col)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_moveDownWmsByIndex">mb_moveDownWmsByIndex</a></b>(mapObj_ind,index)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_moveUpWmsByIndex">mb_moveUpWmsByIndex</a></b>(mapObj_ind,index)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_moveWmsById">mb_moveWmsById</a></b>(mapObj_ind,wms_id,toIndex)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_panMap">mb_panMap</a></b>(frameName,dir)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_permanentHighlight">mb_permanentHighlight</a></b>(frameName,x,y)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_regButton">mb_regButton</a></b>(wii)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_regButton_frame">mb_regButton_frame</a></b>(wii,frameName,param)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerFeatureInfoPreFunctions">mb_registerFeatureInfoPreFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerGetScalePreFunctions">mb_registerGetScalePreFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerGML">mb_registerGML</a></b>(frameName,obj)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerInitFunctions">mb_registerInitFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerloadWmsSubFunctions">mb_registerloadWmsSubFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerMapObj">mb_registerMapObj</a></b>(frameName,elementName,wms_index,width,height)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerMapObjectSubFunctions">mb_registerMapObjectSubFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerPanSubElement">mb_registerPanSubElement</a></b>(elName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerPreFunctions">mb_registerPreFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerSubFunctions">mb_registerSubFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerVendorSpecific">mb_registerVendorSpecific</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerWfsReadSubFunctions">mb_registerWfsReadSubFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_registerWfsWriteSubFunctions">mb_registerWfsWriteSubFunctions</a></b>(stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_removeFunctionFromArray">mb_removeFunctionFromArray</a></b>(arrayname,stringFunction)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_repaint">mb_repaint</a></b>(frameName,minx,miny,maxx,maxy)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_repaintScale">mb_repaintScale</a></b>(frameName,x,y,scale)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_restateLayers">mb_restateLayers</a></b>(frameName,wms_id)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_showHighlight">mb_showHighlight</a></b>(frameName,x,y)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_swapWmsById">mb_swapWmsById</a></b>(mapObj_ind,wms1_id,wms2_id)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_swapWmsByIndex">mb_swapWmsByIndex</a></b>(mapObj_ind,indexA,indexB)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_timestamp">mb_timestamp</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_wmsMoveByIndex">mb_wmsMoveByIndex</a></b>(mapObj_ind,fromIndex,toIndex)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!setExtent">setExtent</a></b>(width,height,epsg)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!setFeatureInfoRequest">setFeatureInfoRequest</a></b>(fName,x,y,path)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!setMapRequest">setMapRequest</a></b>(frameName)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!setSingleMapRequest">setSingleMapRequest</a></b>(frameName,wms_id)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!writeTag">writeTag</a></b>(frameName,elName,tagSource)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!zoom">zoom</a></b>(frameName,in_,factor,x,y)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++
++ </table>
++ <p>
++
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++ <pre class="sourceview">var ie=document.all?1:0;var n6=document.getElementById&&!document.all?1:0;var n4=document.layers?1:0;var mb_feature_count=100;var mb_resolution=28.35;var mb_mapObj=[];var mb_fiWin=null;var mb_panActive=false;var clickX;var clickY;var mb_start_x=0;var mb_start_y=0;var mb_end_x=0;var mb_end_y=0;var mb_offset_top=0;var mb_offset_right=0;var mb_offset_bottom=0;var mb_offset_left=0;var mb_log=null;var mb_PanSubElements=[];<span class="reserved">function</span> mb_registerPanSubElement(elName){var ind=mb_PanSubElements.length;mb_PanSubElements[ind]=elName;}
++var mb_vendorSpecific=[];<span class="reserved">function</span> mb_registerVendorSpecific(stringFunction){mb_vendorSpecific[mb_vendorSpecific.length]=stringFunction;}
++var mb_security_proxy=<span class="literal">"http://wms1.ccgis.de/mapbender/tools/security_proxy.php?mb_ows_security_proxy="</span>;var mb_trans=new Image;mb_trans.src=<span class="literal">"../img/transparent.gif"</span>;<span class="reserved">function</span> init(){<span class="reserved">for</span>(var i=0;i<mb_InitFunctions.length;i++){eval(mb_InitFunctions[i]);}
++<span class="reserved">for</span>(var i=0;i<mb_mapObj.length;i++){setMapRequest(mb_mapObj[i].frameName);}}
++<span class="reserved">function</span> deleteWmsObject(){wms=[];wms_layer_count=0;}
++<span class="reserved">function</span> deleteMapObj(){mb_mapObj=[];}
++<span class="reserved">function</span> mb_registerMapObj(frameName,elementName,wms_index,width,height){mb_mapObj[mb_mapObj.length]=new mb_mapObj_const(frameName,elementName,width,height,wms_index);}
++<span class="reserved">function</span> mb_mapObj_const(frameName,elementName,width,height,wms_index){<span class="reserved">this</span>.width=width;<span class="reserved">this</span>.height=height;<span class="reserved">this</span>.frameName=frameName;<span class="reserved">this</span>.elementName=elementName;<span class="reserved">this</span>.layers=[];<span class="reserved">this</span>.styles=[];<span class="reserved">this</span>.querylayers=[];<span class="reserved">this</span>.geom=<span class="literal">""</span>;<span class="reserved">this</span>.gml=<span class="literal">""</span>;<span class="reserved">if</span>(wms_index!=null){<span class="reserved">this</span>.wms=[];<span class="reserved">this</span>.wms[0]=wms[wms_index];<span class="reserved">this</span>.wms[0].mapURL=false;var cnt_layers=0;var cnt_querylayers=0;var styles=<span class="literal">""</span>;var layers=<span class="literal">""</span>;var querylayers=<span class="literal">""</span>;<span class="reserved">for</span>(var ii=0;ii<<span class="reserved">this</span>.wms[0].objLayer.length;ii++){<span class="reserved">if</span>(<span class="reserved">this</span>.wms[0].objLayer[ii].gui_layer_visible==1&&ii>0){<span class="reserved">if</span>(cnt_layers>0){layers+=<span class="literal">","</span>;styles+=<span class="literal">","</span>;}
++layers+=<span class="reserved">this</span>.wms[0].objLayer[ii].layer_name;styles+=<span class="literal">""</span>;cnt_layers++;}
++<span class="reserved">if</span>(<span class="reserved">this</span>.wms[0].objLayer[ii].gui_layer_querylayer==1&&ii>0){<span class="reserved">if</span>(cnt_querylayers>0){querylayers+=<span class="literal">","</span>;}
++querylayers+=<span class="reserved">this</span>.wms[0].objLayer[ii].layer_name;cnt_querylayers++;}}
++<span class="reserved">this</span>.layers[0]=layers;<span class="reserved">this</span>.styles[0]=styles;<span class="reserved">this</span>.querylayers[0]=querylayers;}
++<span class="reserved">else</span>{<span class="reserved">this</span>.wms=[];<span class="reserved">for</span>(i=0;i<wms.length;i++){<span class="reserved">this</span>.wms[i]=wms[i];<span class="reserved">this</span>.wms[i].mapURL=false;}
++<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.wms.length;i++){var cnt_layers=0;var cnt_querylayers=0;var styles=<span class="literal">""</span>;var layers=<span class="literal">""</span>;var querylayers=<span class="literal">""</span>;<span class="reserved">for</span>(var ii=0;ii<<span class="reserved">this</span>.wms[i].objLayer.length;ii++){<span class="reserved">if</span>(<span class="reserved">this</span>.wms[i].objLayer[ii].gui_layer_visible==1&&ii>0){<span class="reserved">if</span>(cnt_layers>0){layers+=<span class="literal">","</span>;styles+=<span class="literal">","</span>;}
++layers+=wms[i].objLayer[ii].layer_name;styles+=<span class="literal">""</span>;cnt_layers++;}
++<span class="reserved">if</span>(<span class="reserved">this</span>.wms[i].objLayer[ii].gui_layer_querylayer==1&&ii>0){<span class="reserved">if</span>(cnt_querylayers>0){querylayers+=<span class="literal">","</span>;}
++querylayers+=wms[i].objLayer[ii].layer_name;cnt_querylayers++;}}
++<span class="reserved">this</span>.layers[i]=layers;<span class="reserved">this</span>.styles[i]=styles;<span class="reserved">this</span>.querylayers[i]=querylayers;}}
++<span class="reserved">this</span>.epsg=wms[0].gui_wms_epsg;<span class="reserved">this</span>.extent=setExtent(<span class="reserved">this</span>.width,<span class="reserved">this</span>.height,<span class="reserved">this</span>.epsg);<span class="reserved">this</span>.mapURL=[];<span class="reserved">for</span>(var i=0;i<mb_MapObjectSubFunctions.length;i++){eval(mb_MapObjectSubFunctions[i]);}}
++<span class="reserved">function</span> mb_getConjunctionCharacter(onlineresource){<span class="reserved">if</span>(onlineresource.indexOf(<span class="literal">"?"</span>)>-1){<span class="reserved">if</span>(onlineresource.charAt(onlineresource.length-1)==<span class="literal">"?"</span>){nextvalue=<span class="literal">""</span>;}<span class="reserved">else</span> <span class="reserved">if</span>(onlineresource.charAt(onlineresource.length-1)==<span class="literal">"&"</span>){nextvalue=<span class="literal">""</span>;}<span class="reserved">else</span>{nextvalue=<span class="literal">"&"</span>;}}
++<span class="reserved">if</span>(onlineresource.indexOf(<span class="literal">"?"</span>)==-1){nextvalue=<span class="literal">"?"</span>;}
++<span class="reserved">return</span> nextvalue;}
++<span class="reserved">function</span> mb_moveWmsById(mapObj_ind,wms_id,toIndex){<span class="reserved">return</span> mb_wmsMoveByIndex(mapObj_ind,getWMSIndexById(mapObj_ind,wms_id),toIndex);}
++<span class="reserved">function</span> mb_wmsMoveByIndex(mapObj_ind,fromIndex,toIndex){<span class="reserved">if</span>(fromIndex!=toIndex&&fromIndex>=0&&fromIndex<mb_mapObj[mapObj_ind].wms.length&&toIndex>=0&&toIndex<mb_mapObj[mapObj_ind].wms.length){var changed=false;<span class="reserved">if</span>(fromIndex>toIndex){<span class="reserved">for</span>(var i=fromIndex;i>toIndex;i--){var result=mb_swapWmsByIndex(mapObj_ind,i-1,i);<span class="reserved">if</span>(result==true)changed=true;}}
++<span class="reserved">else</span>{<span class="reserved">for</span>(var i=fromIndex;i<toIndex;i++){var result=mb_swapWmsByIndex(mapObj_ind,i,i+1);<span class="reserved">if</span>(result==true)changed=true;}}
++<span class="reserved">return</span> changed;}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">function</span> mb_swapWmsById(mapObj_ind,wms1_id,wms2_id){<span class="reserved">return</span> mb_swapWmsByIndex(mapObj_ind,getWMSIndexById(mapObj_ind,wms1_id),getWMSIndexById(mapObj_ind,wms2_id));}
++<span class="reserved">function</span> mb_swapWmsByIndex(mapObj_ind,indexA,indexB){<span class="reserved">if</span>(indexA!=indexB&&indexA>=0&&indexA<mb_mapObj[mapObj_ind].wms.length&&indexB>=0&&indexB<mb_mapObj[mapObj_ind].wms.length){upper=mb_mapObj[mapObj_ind].wms[indexA];mb_mapObj[mapObj_ind].wms[indexA]=mb_mapObj[mapObj_ind].wms[indexB];mb_mapObj[mapObj_ind].wms[indexB]=upper;var upperLayers=mb_mapObj[mapObj_ind].layers[indexA];var upperStyles=mb_mapObj[mapObj_ind].styles[indexA];var upperQuerylayers=mb_mapObj[mapObj_ind].querylayers[indexA];mb_mapObj[mapObj_ind].layers[indexA]=mb_mapObj[mapObj_ind].layers[indexB];mb_mapObj[mapObj_ind].styles[indexA]=mb_mapObj[mapObj_ind].styles[indexB];mb_mapObj[mapObj_ind].querylayers[indexA]=mb_mapObj[mapObj_ind].querylayers[indexB];mb_mapObj[mapObj_ind].layers[indexB]=upperLayers;mb_mapObj[mapObj_ind].styles[indexB]=upperStyles;mb_mapObj[mapObj_ind].querylayers[indexB]=upperQuerylayers;<span class="reserved">return</span> true;}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">function</span> mb_moveUpWmsByIndex(mapObj_ind,index){<span class="reserved">if</span>(index>0&&index<wms.length){<span class="reserved">return</span> mb_swapWmsByIndex(mapObj_ind,index-1,index);}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">function</span> mb_moveDownWmsByIndex(mapObj_ind,index){<span class="reserved">if</span>(index>=0&&index<wms.length-1){<span class="reserved">return</span> mb_swapWmsByIndex(mapObj_ind,index,index+1);}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">function</span> mb_mapObjaddWMS(obj){var cnt_layers=0;var cnt_querylayers=0;var styles=<span class="literal">""</span>;var layers=<span class="literal">""</span>;var querylayers=<span class="literal">""</span>;var ind=getMapObjIndexByName(obj);<span class="reserved">for</span>(var i=0;i<(wms.length-1);i++){<span class="reserved">if</span>(parseInt(wms[i].wms_id)>=parseInt(wms[wms.length-1].wms_id)){wms[wms.length-1].wms_id=parseInt(mb_mapObj[ind].wms[i].wms_id)+1;}}
++mb_mapObj[ind].wms[mb_mapObj[ind].wms.length]=wms[wms.length-1];mb_mapObj[ind].layers[mb_mapObj[ind].layers.length]=layers;mb_mapObj[ind].styles[mb_mapObj[ind].styles.length]=styles;mb_mapObj[ind].querylayers[mb_mapObj[ind].querylayers.length]=querylayers;mb_execloadWmsSubFunctions();<span class="reserved">return</span> true;}
++<span class="reserved">function</span> mb_mapObjaddWMSwithLayers(obj,layers,querylayers){var cnt_layers=0;var cnt_querylayers=0;var styles=<span class="literal">""</span>;var ind=getMapObjIndexByName(obj);mb_mapObj[ind].wms[mb_mapObj[ind].wms.length]=wms[wms.length-1];mb_mapObj[ind].layers[mb_mapObj[ind].layers.length]=layers;mb_mapObj[ind].styles[mb_mapObj[ind].styles.length]=styles;mb_mapObj[ind].querylayers[mb_mapObj[ind].querylayers.length]=querylayers;}
++<span class="reserved">function</span> mb_mapObjremoveWMS(objind,wmsind){var wms_ID=null;var new_wmsarray=[];var new_layerarray=[];var new_querylayerarray=[];var new_stylesarray=[];var new_mapURLarray=[];<span class="reserved">for</span>(var i=0;i<mb_mapObj[objind].wms.length;i++){<span class="reserved">if</span>(i!=wmsind){new_wmsarray[new_wmsarray.length]=mb_mapObj[objind].wms[i];new_layerarray[new_layerarray.length]=mb_mapObj[objind].layers[i];new_querylayerarray[new_querylayerarray.length]=mb_mapObj[objind].querylayers[i];new_stylesarray[new_stylesarray.length]=mb_mapObj[objind].styles[i];new_mapURLarray[new_mapURLarray.length]=mb_mapObj[objind].mapURL[i]}
++<span class="reserved">else</span>{wms_ID=mb_mapObj[objind].wms[i].wms_id;}}
++mb_mapObj[objind].wms=new_wmsarray;mb_mapObj[objind].layers=new_layerarray;mb_mapObj[objind].querylayers=new_querylayerarray;mb_mapObj[objind].styles=new_stylesarray;mb_mapObj[objind].mapURL=new_mapURLarray;var another_new_wmsarray=[];<span class="reserved">for</span>(var i=0;i<wms.length;i++){<span class="reserved">if</span>(wms[i].wms_id!=wms_ID){another_new_wmsarray[another_new_wmsarray.length]=wms[i];}}
++wms=another_new_wmsarray;}
++<span class="reserved">function</span> setExtent(width,height,epsg){<span class="reserved">for</span>(var i=0;i<wms[0].gui_epsg.length;i++){<span class="reserved">if</span>(wms[0].gui_epsg[i]==epsg){var bbox_minx=parseFloat(wms[0].gui_minx[i]);var bbox_miny=parseFloat(wms[0].gui_miny[i]);var bbox_maxx=parseFloat(wms[0].gui_maxx[i]);var bbox_maxy=parseFloat(wms[0].gui_maxy[i]);var extenty=bbox_maxy-bbox_miny;var extentx=bbox_maxx-bbox_minx;var relation_px_x=width/height;var relation_px_y=height/width;var relation_bbox_x=extentx/extenty;var centerx=bbox_minx+(extentx/2);var centery=bbox_miny+(extenty/2);<span class="reserved">if</span>(relation_bbox_x<=relation_px_x){bbox_minx=centerx-relation_px_x*extenty/2;bbox_maxx=centerx+relation_px_x*extenty/2;}
++<span class="reserved">if</span>(relation_bbox_x>relation_px_x){bbox_miny=centery-relation_px_y*extentx/2;bbox_maxy=centery+relation_px_y*extentx/2;}
++<span class="reserved">return</span> bbox_minx+<span class="literal">","</span>+bbox_miny+<span class="literal">","</span>+bbox_maxx+<span class="literal">","</span>+bbox_maxy;}}}
++<span class="reserved">function</span> setMapRequest(frameName){var functionName=<span class="literal">'setMapRequest'</span>;var ts=mb_timestamp();<span class="reserved">for</span>(var i=0;i<mb_MapRequestPreFunctions.length;i++){var ret=eval(mb_MapRequestPreFunctions[i]);<span class="reserved">if</span>(ret==false){<span class="reserved">return</span> true;}}
++<span class="reserved">for</span>(var i=0;i<mb_mapObj.length;i++){var newMapRequest=<span class="literal">""</span>;<span class="reserved">if</span>(mb_mapObj[i].frameName==frameName){<span class="reserved">for</span>(var ii=0;ii<mb_mapObj[i].wms.length;ii++){<span class="reserved">if</span>(mb_mapObj[i].wms[ii].gui_wms_visible>0){var myDivId=<span class="literal">"div_"</span>+ii;var myMapId=<span class="literal">"map_"</span>+ii;var str_LayerStyles=mb_checkScale(frameName,i,ii);<span class="reserved">if</span>(mb_mapObj[i].layers[ii]!=<span class="literal">""</span>&&str_LayerStyles[0]!=<span class="literal">''</span>){var newMapURL=<span class="literal">""</span>;<span class="reserved">if</span>(mb_mapObj[i].wms[ii].gui_wms_mapopacity!=1){var cadenaOpacity=<span class="literal">"opacity:"</span>+mb_mapObj[i].wms[ii].gui_wms_mapopacity+<span class="literal">"; Filter: Alpha(Opacity="</span>+mb_mapObj[i].wms[ii].gui_wms_mapopacity*100+<span class="literal">"); -moz-opacity:"</span>+mb_mapObj[i].wms[ii].gui_wms_mapopacity+<span class="literal">" ; -khtml-opacity:"</span>+mb_mapObj[i].wms[ii].gui_wms_mapopacity;newMapRequest+=<span class="literal">"<div id='"</span>+myDivId+<span class="literal">"' style=\"</span>position:absolute; top:0px; left:0px; z-index:<span class="literal">"+ii+"</span>;<span class="literal">"+cadenaOpacity+"</span>\<span class="literal">">"</span>;}
++<span class="reserved">else</span>{newMapRequest+=<span class="literal">"<div id='"</span>+myDivId+<span class="literal">"' style='position:absolute; top:0px; left:0px; z-index:"</span>+ii+<span class="literal">"'>"</span>;}
++newMapRequest+=<span class="literal">"<img id='"</span>+myMapId+<span class="literal">"' name='mapimage' src='"</span>;newMapURL+=mb_mapObj[i].wms[ii].wms_getmap;newMapURL+=mb_getConjunctionCharacter(mb_mapObj[i].wms[ii].wms_getmap);<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_version==<span class="literal">"1.0.0"</span>){newMapURL+=<span class="literal">"WMTVER="</span>+mb_mapObj[i].wms[ii].wms_version+<span class="literal">"&REQUEST=map&"</span>;}
++<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_version!=<span class="literal">"1.0.0"</span>){newMapURL+=<span class="literal">"VERSION="</span>+mb_mapObj[i].wms[ii].wms_version+<span class="literal">"&REQUEST=GetMap&SERVICE=WMS&"</span>;}
++newMapURL+=<span class="literal">"LAYERS="</span>+str_LayerStyles[0]+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"STYLES="</span>+str_LayerStyles[1]+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"SRS="</span>+mb_mapObj[i].epsg+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"BBOX="</span>+mb_mapObj[i].extent+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"WIDTH="</span>+mb_mapObj[i].width+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"HEIGHT="</span>+mb_mapObj[i].height+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"FORMAT="</span>+mb_mapObj[i].wms[ii].gui_wms_mapformat+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"BGCOLOR=0xffffff&"</span>;<span class="reserved">if</span>(mb_mapObj[i].wms[ii].gui_wms_mapformat.search(/gif/i)>-1||mb_mapObj[i].wms[ii].gui_wms_mapformat.search(/png/i)>-1){newMapURL+=<span class="literal">"TRANSPARENT=TRUE&"</span>;}
++newMapURL+=<span class="literal">"EXCEPTIONS="</span>+mb_mapObj[i].wms[ii].gui_wms_exceptionformat;<span class="reserved">for</span>(var v=0;v<mb_vendorSpecific.length;v++){var vendorSpecificString=eval(mb_vendorSpecific[v]);<span class="reserved">if</span>(typeof(vendorSpecificString)!=<span class="literal">"undefined"</span>){newMapURL+=<span class="literal">"&"</span>+vendorSpecificString;}}
++<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_filter!=<span class="literal">""</span>){var tmp=mb_mapObj[i].wms[ii].wms_filter+<span class="literal">"?id="</span>+mb_styleID;var temp=<span class="literal">"&SLD="</span>+tmp+<span class="literal">"&"</span>;newMapURL+=temp;}
++<span class="reserved">if</span>(mb_log){var tmp=eval(mb_log+<span class="literal">"('"</span>+newMapURL+<span class="literal">"','"</span>+ts+<span class="literal">"')"</span>);}
++newMapRequest+=newMapURL;mb_mapObj[i].mapURL[ii]=newMapURL;mb_mapObj[i].wms[ii].mapURL=newMapURL;newMapRequest+=<span class="literal">"' width='"</span>+mb_mapObj[i].width+<span class="literal">"' height='"</span>+mb_mapObj[i].height+<span class="literal">"' border='0'></div>"</span>;}
++<span class="reserved">else</span>{mb_mapObj[i].mapURL[ii]=false;mb_mapObj[i].wms[ii].mapURL=false;newMapRequest+=<span class="literal">"<div id='"</span>+myDivId+<span class="literal">"' style='position:absolute; top:0px; left:0px; z-index:"</span>+ii+<span class="literal">"'>"</span>;newMapRequest+=<span class="literal">"<img id='"</span>+myMapId+<span class="literal">"' name='mapimage' src='"</span>+mb_trans.src;newMapRequest+=<span class="literal">"' width='"</span>+mb_mapObj[i].width+<span class="literal">"' height='"</span>+mb_mapObj[i].height+<span class="literal">"' border='0'>"</span>;newMapRequest+=<span class="literal">"</div>"</span>;}}}
++writeTag(mb_mapObj[i].frameName,mb_mapObj[i].elementName,newMapRequest);}}
++<span class="reserved">for</span>(var i=0;i<mb_MapRequestSubFunctions.length;i++){eval(mb_MapRequestSubFunctions[i]);}}
++<span class="reserved">function</span> setSingleMapRequest(frameName,wms_id){var functionName=<span class="literal">'setSingleMapRequest'</span>;var ts=mb_timestamp();<span class="reserved">for</span>(var i=0;i<mb_MapRequestPreFunctions.length;i++){eval(mb_MapRequestPreFunctions[i]);}
++<span class="reserved">for</span>(var i=0;i<mb_mapObj.length;i++){var newMapRequest=<span class="literal">""</span>;<span class="reserved">if</span>(mb_mapObj[i].frameName==frameName){<span class="reserved">for</span>(var ii=0;ii<mb_mapObj[i].wms.length;ii++){var myDivId=<span class="literal">"div_"</span>+ii;var myMapId=<span class="literal">"map_"</span>+ii;<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_id==wms_id){var newMapURL=<span class="literal">""</span>;newMapRequest+=<span class="literal">"<img id='"</span>+myMapId+<span class="literal">"' name='mapimage' src='"</span>;newMapURL+=mb_mapObj[i].wms[ii].wms_getmap;newMapURL+=mb_getConjunctionCharacter(mb_mapObj[i].wms[ii].wms_getmap);<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_version==<span class="literal">"1.0.0"</span>){newMapURL+=<span class="literal">"WMTVER="</span>+mb_mapObj[i].wms[ii].wms_version+<span class="literal">"&REQUEST=map&"</span>;}
++<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_version!=<span class="literal">"1.0.0"</span>){newMapURL+=<span class="literal">"VERSION="</span>+mb_mapObj[i].wms[ii].wms_version+<span class="literal">"&REQUEST=GetMap&SERVICE=WMS&"</span>;}
++var str_LayerStyles=mb_checkScale(frameName,i,ii);newMapURL+=<span class="literal">"LAYERS="</span>+str_LayerStyles[0]+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"STYLES="</span>+str_LayerStyles[1]+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"SRS="</span>+mb_mapObj[i].epsg+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"BBOX="</span>+mb_mapObj[i].extent+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"WIDTH="</span>+mb_mapObj[i].width+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"HEIGHT="</span>+mb_mapObj[i].height+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"FORMAT="</span>+mb_mapObj[i].wms[ii].gui_wms_mapformat+<span class="literal">"&"</span>;newMapURL+=<span class="literal">"BGCOLOR=0xffffff&"</span>;<span class="reserved">if</span>(mb_mapObj[i].wms[ii].gui_wms_mapformat.search(/gif/i)>-1||mb_mapObj[i].wms[ii].gui_wms_mapformat.search(/png/i)>-1){newMapURL+=<span class="literal">"TRANSPARENT=TRUE&"</span>;}
++newMapURL+=<span class="literal">"EXCEPTIONS="</span>+mb_mapObj[i].wms[ii].gui_wms_exceptionformat;<span class="reserved">for</span>(var v=0;v<mb_vendorSpecific.length;v++){var vendorSpecificString=eval(mb_vendorSpecific[v]);<span class="reserved">if</span>(typeof(vendorSpecificString)!=<span class="literal">"undefined"</span>){newMapURL+=<span class="literal">"&"</span>+vendorSpecificString;}}
++<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_filter!=<span class="literal">""</span>){var tmp=mb_mapObj[i].wms[ii].wms_filter+<span class="literal">"?id="</span>+mb_styleID;var temp=<span class="literal">"&SLD="</span>+tmp+<span class="literal">"&"</span>;newMapURL+=temp;}
++<span class="reserved">if</span>(mb_mapObj[i].layers[ii]!=<span class="literal">""</span>&&str_LayerStyles[0]!=<span class="literal">""</span>){newMapRequest+=newMapURL;mb_mapObj[i].mapURL[ii]=newMapURL;mb_mapObj[i].wms[ii].mapURL=newMapURL;newMapRequest+=<span class="literal">"' width='"</span>+mb_mapObj[i].width+<span class="literal">"' height='"</span>+mb_mapObj[i].height+<span class="literal">"' border='0'>"</span>;}
++<span class="reserved">else</span>{mb_mapObj[i].mapURL[ii]=false;mb_mapObj[i].wms[ii].mapURL=false;newMapRequest=<span class="literal">"<img id='"</span>+myMapId+<span class="literal">"' name='mapimage' src='"</span>+mb_trans.src;newMapRequest+=<span class="literal">"' width='"</span>+mb_mapObj[i].width+<span class="literal">"' height='"</span>+mb_mapObj[i].height+<span class="literal">"' border='0'>"</span>;}
++<span class="reserved">if</span>(mb_log){var tmp=eval(mb_log+<span class="literal">"('"</span>+newMapURL+<span class="literal">"','"</span>+ts+<span class="literal">"')"</span>);}
++writeTag(mb_mapObj[i].frameName,myDivId,newMapRequest);}}}}
++<span class="reserved">for</span>(var i=0;i<mb_MapRequestSubFunctions.length;i++){eval(mb_MapRequestSubFunctions[i]);}}
++<span class="reserved">function</span> mb_restateLayers(frameName,wms_id){var ind=getMapObjIndexByName(frameName);<span class="reserved">for</span>(var i=0;i<mb_mapObj[ind].wms.length;i++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].wms_id==wms_id){var cnt_layers=0;var cnt_querylayers=0;var layers=<span class="literal">""</span>;var styles=<span class="literal">""</span>;var querylayers=<span class="literal">""</span>;<span class="reserved">for</span>(var ii=0;ii<mb_mapObj[ind].wms[i].objLayer.length;ii++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].objLayer[ii].gui_layer_visible==1&&ii>0){<span class="reserved">if</span>(cnt_layers>0){layers+=<span class="literal">","</span>;styles+=<span class="literal">","</span>;}
++layers+=mb_mapObj[ind].wms[i].objLayer[ii].layer_name;styles+=<span class="literal">""</span>;cnt_layers++;}
++<span class="reserved">if</span>(mb_mapObj[ind].wms[i].objLayer[ii].gui_layer_querylayer==1&&ii>0){<span class="reserved">if</span>(cnt_querylayers>0){querylayers+=<span class="literal">","</span>;}
++querylayers+=mb_mapObj[ind].wms[i].objLayer[ii].layer_name;cnt_querylayers++;}
++mb_mapObj[ind].layers[i]=layers;mb_mapObj[ind].querylayers[i]=querylayers;mb_mapObj[ind].styles[i]=styles;}}}}
++<span class="reserved">function</span> mb_checkScale(frameName,mObj,wmsObj){var thisLayer=mb_mapObj[mObj].layers[wmsObj].split(<span class="literal">","</span>);var thisScale=mb_getScale(frameName);var str_layer=<span class="literal">""</span>;var str_styles=<span class="literal">""</span>;var str_titles=<span class="literal">""</span>;var str_legendurls=<span class="literal">""</span>;var str_parent=<span class="literal">""</span>;var cnt_layer=0;<span class="reserved">for</span>(var i=0;i<mb_mapObj[mObj].wms[wmsObj].objLayer.length;i++){var myLayername=mb_mapObj[mObj].wms[wmsObj].objLayer[i].layer_name;var myMinscale=mb_mapObj[mObj].wms[wmsObj].objLayer[i].gui_layer_minscale;var myMaxscale=mb_mapObj[mObj].wms[wmsObj].objLayer[i].gui_layer_maxscale;<span class="reserved">for</span>(var ii=0;ii<thisLayer.length;ii++){var minscaleOK=false;var maxscaleOK=false;<span class="reserved">if</span>(thisLayer[ii]==myLayername){<span class="reserved">if</span>(myMinscale==0||thisScale>=myMinscale){minscaleOK=true;}
++<span class="reserved">if</span>(myMaxscale==0||thisScale<=myMaxscale){maxscaleOK=true;}
++<span class="reserved">if</span>(maxscaleOK==true&&minscaleOK==true){<span class="reserved">if</span>(cnt_layer>0){str_layer+=<span class="literal">","</span>;str_styles+=<span class="literal">","</span>;str_titles+=<span class="literal">","</span>;str_parent+=<span class="literal">","</span>;str_legendurls+=<span class="literal">","</span>;}
++str_layer+=thisLayer[ii];str_styles+=<span class="literal">""</span>;str_titles+=mb_mapObj[mObj].wms[wmsObj].objLayer[i].layer_title;str_parent+=mb_mapObj[mObj].wms[wmsObj].objLayer[i].layer_parent;<span class="reserved">if</span>(mb_mapObj[mObj].wms[wmsObj].objLayer[i].layer_style.length>0){str_legendurls+=mb_mapObj[mObj].wms[wmsObj].objLayer[i].layer_style[0][<span class="literal">"legendurl"</span>];}
++cnt_layer++;}}}}
++var str_layerstyles=[];str_layerstyles[0]=str_layer;str_layerstyles[1]=str_styles;str_layerstyles[2]=str_titles;str_layerstyles[3]=str_legendurls;str_layerstyles[4]=str_parent;<span class="reserved">return</span> str_layerstyles;}
++<span class="reserved">function</span> setFeatureInfoRequest(fName,x,y,path){var functionName=<span class="literal">'setFeatureInfoRequest'</span>;var ts=mb_timestamp();<span class="reserved">for</span>(var i=0;i<mb_FeatureInfoPreFunctions.length;i++){eval(mb_FeatureInfoPreFunctions[i]);}
++var cnt_fi=0;<span class="reserved">for</span>(var i=0;i<mb_mapObj.length;i++){<span class="reserved">if</span>(mb_mapObj[i].frameName==fName){<span class="reserved">for</span>(var ii=0;ii<mb_mapObj[i].wms.length;ii++){var newfeatureInfoRequest=<span class="literal">""</span>;var requestParams=<span class="literal">""</span>;var validation=false;newfeatureInfoRequest+=mb_mapObj[i].wms[ii].wms_getfeatureinfo;newfeatureInfoRequest+=mb_getConjunctionCharacter(mb_mapObj[i].wms[ii].wms_getfeatureinfo);<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_version==<span class="literal">"1.0.0"</span>){requestParams+=<span class="literal">"WMTVER="</span>+mb_mapObj[i].wms[ii].wms_version+<span class="literal">"&REQUEST=feature_info&"</span>;}
++<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_version!=<span class="literal">"1.0.0"</span>){requestParams+=<span class="literal">"VERSION="</span>+mb_mapObj[i].wms[ii].wms_version+<span class="literal">"&REQUEST=GetFeatureInfo&SERVICE=WMS&"</span>;}
++requestParams+=<span class="literal">"SRS="</span>+mb_mapObj[i].epsg+<span class="literal">"&"</span>;requestParams+=<span class="literal">"BBOX="</span>+mb_mapObj[i].extent+<span class="literal">"&"</span>;requestParams+=<span class="literal">"WIDTH="</span>+mb_mapObj[i].width+<span class="literal">"&"</span>;requestParams+=<span class="literal">"HEIGHT="</span>+mb_mapObj[i].height+<span class="literal">"&"</span>;requestParams+=<span class="literal">"LAYERS="</span>+mb_mapObj[i].layers[ii]+<span class="literal">"&"</span>;requestParams+=<span class="literal">"STYLES="</span>+mb_mapObj[i].styles[ii]+<span class="literal">"&"</span>;requestParams+=<span class="literal">"FORMAT="</span>+mb_mapObj[i].wms[ii].gui_wms_mapformat+<span class="literal">"&"</span>;requestParams+=<span class="literal">"INFO_FORMAT="</span>+mb_mapObj[i].wms[ii].gui_wms_featureinfoformat+<span class="literal">"&"</span>;requestParams+=<span class="literal">"EXCEPTIONS=application/vnd.ogc.se_xml&"</span>;<span class="reserved">if</span>(mb_feature_count>0){requestParams+=<span class="literal">"FEATURE_COUNT="</span>+mb_feature_count+<span class="literal">"&"</span>;}
++requestParams+=<span class="literal">"QUERY_LAYERS="</span>+mb_mapObj[i].querylayers[ii]+<span class="literal">"&"</span>;requestParams+=<span class="literal">"X="</span>+x+<span class="literal">"&"</span>;requestParams+=<span class="literal">"Y="</span>+y;<span class="reserved">if</span>(mb_mapObj[i].querylayers[ii]!=<span class="literal">""</span>&&mb_mapObj[i].layers[ii]!=<span class="literal">""</span>){validation=true;}
++<span class="reserved">for</span>(var v=0;v<mb_vendorSpecific.length;v++){var vendorSpecificString=eval(mb_vendorSpecific[v]);requestParams+=<span class="literal">"&"</span>+vendorSpecificString;}
++<span class="reserved">if</span>(mb_log&&validation){var tmp=eval(mb_log+<span class="literal">"('"</span>+newfeatureInfoRequest+requestParams+<span class="literal">"','"</span>+ts+<span class="literal">"')"</span>);}
++<span class="reserved">if</span>(document.getElementById(<span class="literal">"FeatureInfoRedirect"</span>)&&validation){newfeatureInfoRequest+=requestParams;<span class="reserved">if</span>(path){window.frames[<span class="literal">"FeatureInfoRedirect"</span>].document.getElementById(mb_mapObj[i].wms[ii].wms_id).src=path+<span class="literal">"?url="</span>+escape(newfeatureInfoRequest)+<span class="literal">"&"</span>+mb_nr;}
++<span class="reserved">else</span>{window.frames[<span class="literal">"FeatureInfoRedirect"</span>].document.getElementById(mb_mapObj[i].wms[ii].wms_id).src=newfeatureInfoRequest;}
++cnt_fi++;}
++<span class="reserved">else</span> <span class="reserved">if</span>(path&&validation){newfeatureInfoRequest+=requestParams
++window.open(path+<span class="literal">"?url="</span>+escape(newfeatureInfoRequest)+<span class="literal">"&"</span>+mb_nr,<span class="literal">""</span>,<span class="literal">"width=300,height=400,scrollbars=yes,resizable=yes"</span>);cnt_fi++;}
++<span class="reserved">else</span> <span class="reserved">if</span>(validation){newfeatureInfoRequest+=requestParams;window.open(newfeatureInfoRequest,<span class="literal">""</span>,<span class="literal">"width=300,height=400,scrollbars=yes,resizable=yes"</span>);cnt_fi++;}}}}
++<span class="reserved">if</span>(cnt_fi==0){alert(unescape(<span class="literal">"Please select a layer! \n Bitte waehlen Sie eine Ebene zur Abfrage aus!"</span>));}}
++<span class="reserved">function</span> writeTag(frameName,elName,tagSource){<span class="reserved">if</span>(frameName&&frameName!=<span class="literal">""</span>){window.frames[frameName].document.getElementById(elName).innerHTML=tagSource;}
++<span class="reserved">else</span> <span class="reserved">if</span>(!frameName||frameName==<span class="literal">""</span>){document.getElementById(elName).innerHTML=tagSource;}}
++<span class="reserved">function</span> zoom(frameName,in_,factor,x,y){var x=parseFloat(x);var y=parseFloat(y);var ind=getMapObjIndexByName(frameName);var arrayBBox=mb_mapObj[ind].extent.split(<span class="literal">","</span>);var xtentx=parseFloat(arrayBBox[2])-parseFloat(arrayBBox[0]);var xtenty=parseFloat(arrayBBox[3])-parseFloat(arrayBBox[1]);var centerx=parseFloat(arrayBBox[0])+xtentx/2;var centery=parseFloat(arrayBBox[1])+xtenty/2;var factor=parseFloat(factor);<span class="reserved">if</span>(x){centerx=x;centery=y;}
++<span class="reserved">if</span>(!in_){factor=1/factor;}
++var new_xtentx=xtentx/factor;var new_xtenty=xtenty/factor;var minx=centerx-new_xtentx/2;var miny=centery-new_xtenty/2;var maxx=centerx+new_xtentx/2;var maxy=centery+new_xtenty/2;mb_mapObj[ind].extent=minx+<span class="literal">","</span>+miny+<span class="literal">","</span>+maxx+<span class="literal">","</span>+maxy;setMapRequest(frameName);}
++<span class="reserved">function</span> mb_panMap(frameName,dir){var ind=getMapObjIndexByName(frameName);var arrayBBox=mb_mapObj[ind].extent.split(<span class="literal">","</span>);var minx=parseFloat(arrayBBox[0]);var miny=parseFloat(arrayBBox[1]);var maxx=parseFloat(arrayBBox[2]);var maxy=parseFloat(arrayBBox[3]);var xtentx=parseFloat(arrayBBox[2])-parseFloat(arrayBBox[0]);var xtenty=parseFloat(arrayBBox[3])-parseFloat(arrayBBox[1]);<span class="reserved">if</span>(dir==<span class="literal">"NW"</span>){minx=minx-(xtentx/2);maxx=maxx-(xtentx/2);miny=miny+(xtenty/2);maxy=maxy+(xtenty/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"N"</span>){miny=miny+(xtenty/2);maxy=maxy+(xtenty/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"NE"</span>){minx=minx+(xtentx/2);maxx=maxx+(xtentx/2);miny=miny+(xtenty/2);maxy=maxy+(xtenty/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"W"</span>){minx=minx-(xtentx/2);maxx=maxx-(xtentx/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"E"</span>){minx=minx+(xtentx/2);maxx=maxx+(xtentx/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"SW"</span>){minx=minx-(xtentx/2);maxx=maxx-(xtentx/2);miny=miny-(xtenty/2);maxy=maxy-(xtenty/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"S"</span>){miny=miny-(xtenty/2);maxy=maxy-(xtenty/2);}
++<span class="reserved">if</span>(dir==<span class="literal">"SE"</span>){minx=minx+(xtentx/2);maxx=maxx+(xtentx/2);miny=miny-(xtenty/2);maxy=maxy-(xtenty/2);}
++mb_mapObj[ind].extent=minx+<span class="literal">","</span>+miny+<span class="literal">","</span>+maxx+<span class="literal">","</span>+maxy;setMapRequest(frameName);}
++<span class="reserved">function</span> handleSelectedLayer(frameName,wms_title,layerName,type,status){<span class="reserved">for</span>(var i=0;i<mb_mapObj.length;i++){<span class="reserved">if</span>(mb_mapObj[i].frameName==frameName){var cnt_layer=0;var str_layer=<span class="literal">""</span>;var myMapObj=i;<span class="reserved">for</span>(var ii=0;ii<mb_mapObj[i].wms.length;ii++){<span class="reserved">if</span>(mb_mapObj[i].wms[ii].wms_title==wms_title){var myWMS=ii;<span class="reserved">if</span>(type==<span class="literal">"visible"</span>){var arrayLayer=mb_mapObj[i].layers[ii].split(<span class="literal">","</span>);}
++<span class="reserved">if</span>(type==<span class="literal">"querylayer"</span>){var arrayLayer=mb_mapObj[i].querylayers[ii].split(<span class="literal">","</span>);}
++<span class="reserved">for</span>(var iii=1;iii<mb_mapObj[i].wms[ii].objLayer.length;iii++){var layer_name=mb_mapObj[i].wms[ii].objLayer[iii].layer_name;<span class="reserved">if</span>(type==<span class="literal">"querylayer"</span>){<span class="reserved">if</span>(layer_name==layerName&&status==1&&mb_mapObj[i].wms[ii].objLayer[iii].layer_queryable==1){<span class="reserved">if</span>(cnt_layer>0){str_layer+=<span class="literal">","</span>;}
++str_layer+=layer_name;cnt_layer++;}}
++<span class="reserved">else</span> <span class="reserved">if</span>(type==<span class="literal">"visible"</span>){<span class="reserved">if</span>(layer_name==layerName&&status==1){<span class="reserved">if</span>(cnt_layer>0){str_layer+=<span class="literal">","</span>;}
++str_layer+=layer_name;cnt_layer++;}}
++<span class="reserved">for</span>(var iiii=0;iiii<arrayLayer.length;iiii++){<span class="reserved">if</span>(layer_name==arrayLayer[iiii]&&layer_name!=layerName){<span class="reserved">if</span>(cnt_layer>0){str_layer+=<span class="literal">","</span>;}
++str_layer+=layer_name;cnt_layer++;}}}}}}}
++<span class="reserved">if</span>(type==<span class="literal">"visible"</span>){mb_mapObj[myMapObj].layers[myWMS]=str_layer;var array_str_layer=str_layer.split(<span class="literal">","</span>);var str_styles=<span class="literal">""</span>;<span class="reserved">for</span>(var cnt=0;cnt<array_str_layer.length;cnt++){<span class="reserved">if</span>(cnt>0){str_styles+=<span class="literal">","</span>;}
++str_styles+=<span class="literal">""</span>;}
++mb_mapObj[myMapObj].styles[myWMS]=str_styles;}
++<span class="reserved">if</span>(type==<span class="literal">"querylayer"</span>){mb_mapObj[myMapObj].querylayers[myWMS]=str_layer;}}
++<span class="reserved">function</span> handleSelectedLayer_array(mapObj,array_wms,array_layer,type,status){var ind=getMapObjIndexByName(mapObj);<span class="reserved">for</span>(var j=0;j<array_wms.length;j++){<span class="reserved">for</span>(var i=0;i<mb_mapObj[ind].wms.length;i++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].wms_id==array_wms[j]){var check=false;<span class="reserved">for</span>(var ii=0;ii<mb_mapObj[ind].wms[i].objLayer.length;ii++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].wms_id==array_wms[j]&&mb_mapObj[ind].wms[i].objLayer[ii].layer_name==array_layer[j]){<span class="reserved">if</span>(type==<span class="literal">"visible"</span>){mb_mapObj[ind].wms[i].objLayer[ii].gui_layer_visible=parseInt(status);check=true;}
++<span class="reserved">if</span>(type==<span class="literal">"querylayer"</span>&&(mb_mapObj[ind].wms[i].objLayer[ii].gui_layer_queryable==<span class="literal">"1"</span>||mb_mapObj[ind].wms[i].objLayer[ii].gui_layer_queryable==1)){mb_mapObj[ind].wms[i].objLayer[ii].gui_layer_querylayer=parseInt(status);}}}
++mb_restateLayers(mapObj,array_wms[j]);<span class="reserved">if</span>(check==true){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].gui_wms_visible==1){setSingleMapRequest(mapObj,mb_mapObj[ind].wms[i].wms_id);}}}}}}
++<span class="reserved">function</span> makeClickPos2RealWorldPos(frameName,myClickX,myClickY){var ind=getMapObjIndexByName(frameName);var width=parseInt(mb_mapObj[ind].width);var height=parseInt(mb_mapObj[ind].height);var arrayBBox=mb_mapObj[ind].extent.split(<span class="literal">","</span>);var minX=parseFloat(arrayBBox[0]);var minY=parseFloat(arrayBBox[1]);var maxX=parseFloat(arrayBBox[2]);var maxY=parseFloat(arrayBBox[3]);var deltaX=(maxX-minX)/width;var deltaY=(maxY-minY)/height;<span class="reserved">if</span>(deltaX>0){var roundx=1/Math.pow(10,(Math.round(Math.log(deltaX)/Math.log(10))));}
++<span class="reserved">else</span>{var roundx=Math.pow(10,(Math.round(Math.log(deltaX)/Math.log(10))));}
++<span class="reserved">if</span>(deltaY>0){var roundy=1/Math.pow(10,(Math.round(Math.log(deltaY)/Math.log(10))));}
++<span class="reserved">else</span>{var roundy=Math.pow(10,(Math.round(Math.log(deltaY)/Math.log(10))));}
++var xtentx=maxX-minX;var xtenty=maxY-minY;var posX=parseFloat(minX+(myClickX/width)*xtentx);var posY=parseFloat(maxY-(myClickY/height)*xtenty);posX=Math.round(posX*roundx)/roundx;posY=Math.round(posY*roundy)/roundy;<span class="reserved">return</span> new Array(posX,posY);}
++<span class="reserved">function</span> makeRealWorld2mapPos(frameName,rw_posx,rw_posy){var ind=getMapObjIndexByName(frameName);var arrayBBox=mb_mapObj[ind].extent.split(<span class="literal">","</span>);var minX=parseFloat(arrayBBox[0]);var minY=parseFloat(arrayBBox[1]);var maxX=parseFloat(arrayBBox[2]);var maxY=parseFloat(arrayBBox[3]);var xtentx=parseFloat(arrayBBox[2])-parseFloat(arrayBBox[0]);var xtenty=parseFloat(arrayBBox[3])-parseFloat(arrayBBox[1]);var width=mb_mapObj[ind].width;var height=mb_mapObj[ind].height;pixPos_x=Math.round(parseFloat(((rw_posx-minX)/xtentx)*width));pixPos_y=Math.round(parseFloat(((maxY-rw_posy)/xtenty)*height));<span class="reserved">return</span> new Array(pixPos_x,pixPos_y);}
++<span class="reserved">function</span> mb_arrangeElement(frameName,elName,left,top){<span class="reserved">if</span>(frameName!=<span class="literal">""</span>){window.frames[frameName].document.getElementById(elName).style.top=top;window.frames[frameName].document.getElementById(elName).style.left=left;}
++<span class="reserved">else</span>{document.getElementById(elName).style.top=top;document.getElementById(elName).style.left=left;}}
++<span class="reserved">function</span> mb_getMousePos(e,fName){<span class="reserved">if</span>(fName){<span class="reserved">if</span>(ie){clickX=window.frames[fName].event.clientX;clickY=window.frames[fName].event.clientY;}
++<span class="reserved">else</span>{clickX=e.pageX;clickY=e.pageY;}}
++<span class="reserved">else</span>{<span class="reserved">if</span>(ie){clickX=event.clientX;clickY=event.clientY;}
++<span class="reserved">else</span>{clickX=e.pageX;clickY=e.pageY;}}
++var pos=new Array(clickX,clickY);<span class="reserved">return</span> pos;}
++<span class="reserved">function</span> getMapObjIndexByName(frameName){<span class="reserved">for</span>(var i=0;i<mb_mapObj.length;i++){<span class="reserved">if</span>(mb_mapObj[i].frameName==frameName){<span class="reserved">return</span> i;}}}
++<span class="reserved">function</span> mb_getLayerTitleByName(map_index,wms_index,myLayer_name){<span class="reserved">for</span>(var i=0;i<mb_mapObj[map_index].wms[wms_index].objLayer.length;i++){<span class="reserved">if</span>(mb_mapObj[map_index].wms[wms_index].objLayer[i].layer_name==myLayer_name){<span class="reserved">return</span> mb_mapObj[map_index].wms[wms_index].objLayer[i].layer_title;}}}
++<span class="reserved">function</span> getWMSIDByTitle(frameName,wms_title){var ind=getMapObjIndexByName(frameName);<span class="reserved">for</span>(var i=0;i<mb_mapObj[ind].wms.length;i++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].wms_title==wms_title){<span class="reserved">return</span> mb_mapObj[ind].wms[i].wms_id;}}}
++<span class="reserved">function</span> getWMSIndexByTitle(frameName,wms_title){var ind=getMapObjIndexByName(frameName);<span class="reserved">for</span>(var i=0;i<mb_mapObj[ind].wms.length;i++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].wms_title==wms_title){<span class="reserved">return</span> i;}}}
++<span class="reserved">function</span> getWMSIndexById(frameName,wms_id){var ind=getMapObjIndexByName(frameName);<span class="reserved">for</span>(var i=0;i<mb_mapObj[ind].wms.length;i++){<span class="reserved">if</span>(mb_mapObj[ind].wms[i].wms_id==wms_id){<span class="reserved">return</span> i;}}}
++<span class="reserved">function</span> mb_getScale(frameName){<span class="reserved">for</span>(var i=0;i<mb_GetScalePreFunctions.length;i++){var myScale=eval(mb_GetScalePreFunctions[i]);}
++<span class="reserved">if</span>(myScale){var Y_str=myScale;}
++<span class="reserved">else</span>{var ind=getMapObjIndexByName(frameName);var arrayBBox=mb_mapObj[ind].extent.split(<span class="literal">","</span>);var xtenty=parseFloat(arrayBBox[3])-parseFloat(arrayBBox[1]);var scaleY=(xtenty/mb_mapObj[ind].height)*(mb_resolution*100);<span class="reserved">if</span>(scaleY<1){var Y_str=scaleY;}<span class="reserved">else</span>{var Y_str=Math.round(scaleY);}}
++<span class="reserved">return</span> Y_str;}
++<span class="reserved">function</span> mb_repaintScale(frameName,x,y,scale){var ind=getMapObjIndexByName(frameName);<span class="reserved">if</span>(x==null&&y==null){var arrayBBox=mb_mapObj[ind].extent.split(<span class="literal">","</span>);x=parseFloat(arrayBBox[0])+((parseFloat(arrayBBox[2])-parseFloat(arrayBBox[0]))/2);y=parseFloat(arrayBBox[1])+((parseFloat(arrayBBox[3])-parseFloat(arrayBBox[1]))/2);}
++var minx=parseFloat(x)-(mb_mapObj[ind].width/(mb_resolution*100*2)*scale);var miny=parseFloat(y)-(mb_mapObj[ind].height/(mb_resolution*100*2)*scale);var maxx=parseFloat(x)+(mb_mapObj[ind].width/(mb_resolution*100*2)*scale);var maxy=parseFloat(y)+(mb_mapObj[ind].height/(mb_resolution*100*2)*scale);mb_repaint(frameName,minx,miny,maxx,maxy);}
++<span class="reserved">function</span> mb_repaint(frameName,minx,miny,maxx,maxy){var ind=getMapObjIndexByName(frameName);mb_mapObj[ind].extent=minx+<span class="literal">","</span>+miny+<span class="literal">","</span>+maxx+<span class="literal">","</span>+maxy;setMapRequest(frameName);}
++<span class="reserved">function</span> mb_calculateExtent(frameName,minx,miny,maxx,maxy){var ind=getMapObjIndexByName(frameName);var extenty=parseFloat(maxy)-parseFloat(miny);var extentx=parseFloat(maxx)-parseFloat(minx);var relation_px_x=mb_mapObj[ind].width/mb_mapObj[ind].height;var relation_px_y=mb_mapObj[ind].height/mb_mapObj[ind].width;var relation_bbox_x=extentx/extenty;var centerx=parseFloat(minx)+(extentx/2);var centery=parseFloat(miny)+(extenty/2);<span class="reserved">if</span>(relation_bbox_x<=relation_px_x){minx=centerx-relation_px_x*extenty/2;maxx=centerx+relation_px_x*extenty/2;}
++<span class="reserved">if</span>(relation_bbox_x>relation_px_x){miny=centery-relation_px_y*extentx/2;maxy=centery+relation_px_y*extentx/2;}
++mb_mapObj[ind].extent=minx+<span class="literal">","</span>+miny+<span class="literal">","</span>+maxx+<span class="literal">","</span>+maxy;}
++<span class="reserved">function</span> mb_showHighlight(frameName,x,y){var pos=makeRealWorld2mapPos(frameName,x,y);mb_arrangeElement(frameName,<span class="literal">"highlight"</span>,pos[0]-7,pos[1]-7);window.frames[frameName].document.getElementById(<span class="literal">"highlight"</span>).style.visibility=<span class="literal">'visible'</span>;}
++<span class="reserved">function</span> mb_hideHighlight(frameName){mb_arrangeElement(frameName,<span class="literal">"highlight"</span>,-20,-20);mb_arrangeElement(frameName,<span class="literal">"highlight"</span>,-20,-20);window.frames[frameName].document.getElementById(<span class="literal">"highlight"</span>).style.visibility=<span class="literal">'hidden'</span>;}
++<span class="reserved">function</span> mb_permanentHighlight(frameName,x,y){var pos=makeRealWorld2mapPos(frameName,x,y);mb_arrangeElement(frameName,<span class="literal">"permanent"</span>,pos[0]-7,pos[1]-7);window.frames[frameName].document.getElementById(<span class="literal">"permanent"</span>).style.visibility=<span class="literal">'visible'</span>;}
++<span class="reserved">function</span> mb_markResult(frameName,geom,col){var x=<span class="literal">""</span>;var y=<span class="literal">""</span>;var tmp=[];var ind=getMapObjIndexByName(frameName);<span class="reserved">for</span>(var i=0;i<geom.length;i++){<span class="reserved">if</span>(i>0){x+=<span class="literal">":"</span>;y+=<span class="literal">":"</span>;}
++tmp=geom[i].split(<span class="literal">","</span>);<span class="reserved">for</span>(var ii=0;ii<tmp.length;ii+=2){var pos=makeRealWorld2mapPos(frameName,tmp[ii],tmp[ii+1]);<span class="reserved">if</span>(ii>0){x+=<span class="literal">","</span>;y+=<span class="literal">","</span>;}
++x+=pos[0];y+=pos[1];}}
++var source=<span class="literal">"<img src='../extensions/markResult.php?x="</span>+x+<span class="literal">"&y="</span>+y+<span class="literal">"&width="</span>+mb_mapObj[ind].width+<span class="literal">"&height="</span>+mb_mapObj[ind].height+<span class="literal">"&color="</span>+col+<span class="literal">"'>"</span>;writeTag(frameName,<span class="literal">"markResult"</span>,source);}
++<span class="reserved">function</span> mb_disableResult(frameName){writeTag(frameName,<span class="literal">"markResult"</span>,<span class="literal">""</span>);}
++<span class="reserved">function</span> mb_registerGML(frameName,obj){var ind=getMapObjIndexByName(frameName);mb_mapObj[ind].geom=obj;}
++<span class="reserved">function</span> mb_timestamp(){var d=new Date();var ts=Math.round(Date.parse(d)/1000);<span class="reserved">return</span> ts;}
++<span class="reserved">function</span> mb_getlayerposbyname(objInd,wmsInd,lname){var t=mb_mapObj[objInd].wms[wmsInd];<span class="reserved">for</span>(var i=0;i<t.objLayer.length;i++){<span class="reserved">if</span>(t.objLayer[i].layer_name==lname){<span class="reserved">return</span> t.objLayer[i].layer_pos;}}}
++<span class="reserved">function</span> mb_getLayerObjByName(fname,wms_id,layer_name){var ind=getMapObjIndexByName(fname);var wmsInd=getWMSIndexById(fname,wms_id);var t=mb_mapObj[ind].wms[wmsInd];<span class="reserved">for</span>(var i=0;i<t.objLayer.length;i++){<span class="reserved">if</span>(t.objLayer[i].layer_name==layer_name){<span class="reserved">return</span> t.objLayer[i];}}}
++<span class="reserved">function</span> mb_getchildsbyname(objInd,wmsInd,lname){var t=mb_mapObj[objInd].wms[wmsInd];var pos=mb_getlayerposbyname(objInd,wmsInd,lname);var l=[];l[<span class="literal">"name"</span>]=[];l[<span class="literal">"title"</span>]=[];l[<span class="literal">"legendurl"</span>]=[];<span class="reserved">for</span>(var i=0;i<t.objLayer.length;i++){<span class="reserved">if</span>(t.objLayer[i].layer_parent==pos){l[<span class="literal">"name"</span>][l[<span class="literal">"name"</span>].length]=t.objLayer[i].layer_name;l[<span class="literal">"title"</span>][l[<span class="literal">"title"</span>].length]=t.objLayer[i].layer_title;<span class="reserved">if</span>(t.objLayer[i].layer_style.length>0){l[<span class="literal">"legendurl"</span>][l[<span class="literal">"legendurl"</span>].length]=t.objLayer[i].layer_style[0][<span class="literal">"legendurl"</span>];}<span class="reserved">else</span>{l[<span class="literal">"legendurl"</span>][l[<span class="literal">"legendurl"</span>].length]=0;}}}
++<span class="reserved">if</span>(l[<span class="literal">"name"</span>].length>0){<span class="reserved">return</span> l;}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++<span class="reserved">function</span> DivTag(aTagName,aFrameName,aStyle){<span class="reserved">this</span>.exists=<span class="reserved">function</span>(){<span class="reserved">return</span>(rootNode.getElementById(tagName))?true:false;};<span class="reserved">this</span>.getTag=<span class="reserved">function</span>(){<span class="reserved">return</span> rootNode.getElementById(tagName);};var determineRootNode=<span class="reserved">function</span>(){node=document;<span class="reserved">if</span>(frameName!==<span class="literal">""</span>){<span class="reserved">if</span>(checkFrame()){node=window.frames[frameName].document;}
++<span class="reserved">else</span>{var e=new Mb_exception(<span class="literal">"frame "</span>+frameName+<span class="literal">" doesn't exist."</span>);}}
++<span class="reserved">return</span> node;};var toCamelCase=<span class="reserved">function</span>(aString){var newString=<span class="literal">""</span>;<span class="reserved">for</span>(var i=0;i<aString.length;i++){<span class="reserved">if</span>(aString.substr(i,1)!=<span class="literal">"-"</span>){newString+=aString.substr(i,1);}
++<span class="reserved">else</span>{i++;newString+=aString.substr(i,1).toUpperCase();}}
++<span class="reserved">return</span> newString;}
++var setStyle=<span class="reserved">function</span>(){<span class="reserved">if</span>(that.exists()){var node=rootNode.getElementById(tagName);node.setAttribute(<span class="literal">"style"</span>,<span class="literal">""</span>);<span class="reserved">for</span>(var attr in tagStyle){<span class="reserved">if</span>(typeof(tagStyle[attr])!=<span class="literal">"function"</span>&&typeof(tagStyle[attr])!=<span class="literal">"object"</span>){var evalString=<span class="literal">"node.style."</span>+toCamelCase(attr)+<span class="literal">" = \"</span><span class="literal">"+tagStyle[attr]+"</span>\<span class="literal">";"</span>;eval(evalString);}}}}
++var create=<span class="reserved">function</span>(){<span class="reserved">if</span>(!that.exists()){var divTag=rootNode.createElement(<span class="literal">"div"</span>);var divTagAppended=rootNode.getElementsByTagName(<span class="literal">"body"</span>)[0].appendChild(divTag);divTagAppended.id=tagName;}
++<span class="reserved">else</span>{that.clean();}
++setStyle();};var checkFrame=<span class="reserved">function</span>(){<span class="reserved">if</span>(frameName!==<span class="literal">""</span>){<span class="reserved">return</span>(typeof(window.frames[frameName])!=<span class="literal">'undefined'</span>);}
++<span class="reserved">return</span> true;};var that=<span class="reserved">this</span>;var tagName=aTagName;var frameName=aFrameName;var rootNode=determineRootNode();var tagStyle=aStyle;create();}
++DivTag.<span class="reserved">prototype</span>.write=<span class="reserved">function</span>(someText){<span class="reserved">if</span>(<span class="reserved">this</span>.exists()){<span class="reserved">this</span>.getTag().innerHTML=someText;}};DivTag.<span class="reserved">prototype</span>.clean=<span class="reserved">function</span>(){<span class="reserved">this</span>.write(<span class="literal">""</span>);};var Mb_log=<span class="reserved">function</span>(){var that=<span class="reserved">this</span>;var levelArray=global_log_levels.split(<span class="literal">","</span>);var log_level=global_mb_log_level;var log_js=global_mb_log_js;var indexOfLevel=<span class="reserved">function</span>(aLevel){<span class="reserved">for</span>(var i=0;i<levelArray.length;i++){<span class="reserved">if</span>(aLevel==levelArray[i]){<span class="reserved">return</span> i;}}
++<span class="reserved">return</span> false;};var isValidLevel=<span class="reserved">function</span>(aLevel){var isNotOff=typeof(log_js)!=<span class="literal">'undefined'</span>&&log_js!=<span class="literal">"off"</span>;var levelIndex=indexOfLevel(aLevel);var isAppropriate=(typeof(levelIndex)==<span class="literal">'number'</span>&&levelIndex<indexOfLevel(log_level));<span class="reserved">return</span>(isNotOff&&isAppropriate);};<span class="reserved">this</span>.throwException=<span class="reserved">function</span>(message,level){<span class="reserved">if</span>(isValidLevel(level)){<span class="reserved">if</span>(log_js==<span class="literal">"on"</span>){try{mb_ajaxWrap_post(<span class="literal">'../php/mb_js_exception.php'</span>,{level:level,text:message});}
++catch(e){alert(e+<span class="literal">": "</span>+message);}}
++<span class="reserved">else</span> <span class="reserved">if</span>(log_js==<span class="literal">"alert"</span>){alert(message);}
++<span class="reserved">else</span> <span class="reserved">if</span>(log_js==<span class="literal">"console"</span>){<span class="reserved">if</span>(level==<span class="literal">"warning"</span>){console.warn(<span class="literal">"%s"</span>,message);}
++<span class="reserved">else</span> <span class="reserved">if</span>(level==<span class="literal">"error"</span>){console.error(<span class="literal">"%s"</span>,message);}
++<span class="reserved">else</span>{console.log(<span class="literal">"%s"</span>,message);}}}};}
++<span class="reserved">function</span> Mb_exception(message){var level=<span class="literal">"error"</span>;<span class="reserved">this</span>.throwException(message,level);}
++Mb_exception.<span class="reserved">prototype</span>=new Mb_log();<span class="reserved">function</span> Mb_warning(message){var level=<span class="literal">"warning"</span>;<span class="reserved">this</span>.throwException(message,level);}
++Mb_warning.<span class="reserved">prototype</span>=new Mb_log();<span class="reserved">function</span> Mb_notice(message){var level=<span class="literal">"notice"</span>;<span class="reserved">this</span>.throwException(message,level);}
++Mb_notice.<span class="reserved">prototype</span>=new Mb_log();<span class="reserved">function</span> mb_ajax_get(url,param,callback){try{mb_ajaxWrap_get(url,param,callback);}
++catch(e){var error=new Mb_exception(<span class="literal">'map.php: mb_ajax_get:'</span>+e);}}
++<span class="reserved">function</span> mb_ajax_post(url,param,callback){try{mb_ajaxWrap_post(url,param,callback);}
++catch(e){var error=new Mb_exception(<span class="literal">'map.php: mb_ajax_post:'</span>+e);}}
++<span class="reserved">function</span> mb_ajax_json(url,param,callback){try{mb_ajaxWrap_json(url,param,callback);}
++catch(e){var error=new Mb_exception(<span class="literal">'map.php: mb_ajax_json:'</span>+e);}}
++var mb_button=[];<span class="reserved">function</span> mb_regButton_frame(wii,frameName,param){var ind=mb_button.length;mb_button[ind]=new mb_conButton(wii,ind);<span class="reserved">if</span>(frameName==null){<span class="reserved">if</span>(param==null){eval(wii+<span class="literal">"("</span>+ind+<span class="literal">")"</span>);}
++<span class="reserved">else</span>{eval(wii+<span class="literal">"("</span>+ind+<span class="literal">", "</span>+param+<span class="literal">")"</span>);}}
++<span class="reserved">else</span> <span class="reserved">if</span>(param==null){eval(<span class="literal">"window.frames['"</span>+frameName+<span class="literal">"']."</span>+wii+<span class="literal">"("</span>+ind+<span class="literal">")"</span>);}
++<span class="reserved">else</span>{eval(<span class="literal">"window.frames['"</span>+frameName+<span class="literal">"']."</span>+wii+<span class="literal">"("</span>+ind+<span class="literal">", "</span>+param+<span class="literal">")"</span>);}
++mb_button[ind].prev=mb_button[ind].src;mb_button[ind].src=mb_button[ind].img_off;mb_button[ind].onmouseover=new Function(<span class="literal">"mb_button_over("</span>+ind+<span class="literal">")"</span>);mb_button[ind].onmouseout=new Function(<span class="literal">"mb_button_out("</span>+ind+<span class="literal">")"</span>);mb_button[ind].onclick=new Function(<span class="literal">"mb_button_click("</span>+ind+<span class="literal">")"</span>);<span class="reserved">if</span>(frameName==null){mb_button[ind].frameName=<span class="literal">""</span>;}
++<span class="reserved">else</span>{mb_button[ind].frameName=frameName;}}
++<span class="reserved">function</span> mb_regButton(wii){mb_regButton_frame(wii,null,null);}
++<span class="reserved">function</span> mb_conButton(wii,ind){<span class="reserved">this</span>.wii=wii;<span class="reserved">return</span> true;}
++<span class="reserved">function</span> mb_button_over(ind){<span class="reserved">if</span>(mb_button[ind].status==0){mb_button[ind].prev=mb_button[ind].src;mb_button[ind].src=mb_button[ind].img_over;}}
++<span class="reserved">function</span> mb_button_out(ind){mb_button[ind].src=mb_button[ind].prev;}
++<span class="reserved">function</span> mb_button_click(ind){var mbStatus=mb_button[ind].status;<span class="reserved">if</span>(mbStatus==0){mb_disableButton(mb_button[ind].elName);mb_button[ind].prev=mb_button[ind].img_on;mb_button[ind].src=mb_button[ind].img_on;mb_button[ind].status=1;<span class="reserved">if</span>(mb_button[ind].frameName!=<span class="literal">""</span>){window.frames[mb_button[ind].frameName].document.getElementById(mb_button[ind].elName).go();}
++<span class="reserved">else</span>{document.getElementById(mb_button[ind].elName).go();}}
++<span class="reserved">else</span>{mb_button[ind].prev=mb_button[ind].img_off;mb_button[ind].src=mb_button[ind].img_off;mb_button[ind].status=0;<span class="reserved">if</span>(mb_button[ind].frameName!=<span class="literal">""</span>){window.frames[mb_button[ind].frameName].document.getElementById(mb_button[ind].elName).stop();}
++<span class="reserved">else</span>{document.getElementById(mb_button[ind].elName).stop();}}}
++<span class="reserved">function</span> mb_disableButton(elName){<span class="reserved">for</span>(var i=0;i<mb_button.length;i++){<span class="reserved">if</span>(mb_button[i].elName!=elName&&mb_button[i].status==1){mb_button[i].status=0;<span class="reserved">if</span>(mb_button[i].frameName!=<span class="literal">""</span>){window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).src=mb_button[i].img_off;window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).stop();}
++<span class="reserved">else</span>{document.getElementById(mb_button[i].elName).src=mb_button[i].img_off;document.getElementById(mb_button[i].elName).stop();}
++<span class="reserved">return</span> true;}}}
++<span class="reserved">function</span> mb_disableThisButton(elName){<span class="reserved">for</span>(var i=0;i<mb_button.length;i++){<span class="reserved">if</span>(mb_button[i].elName==elName&&mb_button[i].status==1){mb_button[i].status=0;<span class="reserved">if</span>(mb_button[i].frameName!=<span class="literal">""</span>){window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).src=mb_button[i].img_off;window.frames[mb_button[i].frameName].document.getElementById(mb_button[i].elName).stop();}
++<span class="reserved">else</span>{document.getElementById(mb_button[i].elName).src=mb_button[i].img_off;document.getElementById(mb_button[i].elName).stop();}
++<span class="reserved">return</span> true;}}}
++<span class="reserved">function</span> cloneObject(someObject){var clone=[];<span class="reserved">for</span>(attribute in someObject){var currentElement=someObject[attribute];<span class="reserved">if</span>(typeof(currentElement)==<span class="literal">"object"</span>){clone[attribute]=cloneObject(currentElement);}
++<span class="reserved">else</span>{clone[attribute]=currentElement;}}
++<span class="reserved">return</span> clone;}
++var List=<span class="reserved">function</span>(){<span class="reserved">this</span>.count=<span class="reserved">function</span>(){<span class="reserved">return</span> <span class="reserved">this</span>.list.length;};<span class="reserved">this</span>.del=<span class="reserved">function</span>(i){i=<span class="reserved">this</span>.getIndex(i);<span class="reserved">for</span>(var z=i;z<<span class="reserved">this</span>.count()-1;z++){<span class="reserved">this</span>.list[z]=<span class="reserved">this</span>.list[z+1];}
++<span class="reserved">this</span>.list.length-=1;};<span class="reserved">this</span>.empty=<span class="reserved">function</span>(){<span class="reserved">while</span>(<span class="reserved">this</span>.list!=null&&<span class="reserved">this</span>.count()>0){<span class="reserved">this</span>.list.pop();}}
++<span class="reserved">this</span>.get=<span class="reserved">function</span>(i){i=<span class="reserved">this</span>.getIndex(i);<span class="reserved">if</span>(i!==false){<span class="reserved">return</span> <span class="reserved">this</span>.list[i];}
++<span class="reserved">return</span> false;};<span class="reserved">this</span>.add=<span class="reserved">function</span>(item){<span class="reserved">this</span>.list.push(item);};<span class="reserved">this</span>.addCopy=<span class="reserved">function</span>(item){<span class="reserved">this</span>.list.push(cloneObject(item));};<span class="reserved">this</span>.union=<span class="reserved">function</span>(aList){<span class="reserved">for</span>(var i=0;i<aList.count();i++){<span class="reserved">this</span>.addCopy(aList.get(i));}};<span class="reserved">this</span>.getIndex=<span class="reserved">function</span>(i){<span class="reserved">if</span>((i>=0&&i<<span class="reserved">this</span>.list.length)||(i*(-1)>0&&i*(-1)<=<span class="reserved">this</span>.list.length)){<span class="reserved">if</span>(i>=0){<span class="reserved">return</span> i;}<span class="reserved">else</span>{<span class="reserved">return</span> <span class="reserved">this</span>.list.length+i;}}
++<span class="reserved">else</span>{var e=new Mb_exception(<span class="literal">"class List: function getIndex: member index "</span>+i+<span class="literal">" is not valid"</span>);<span class="reserved">return</span> false;}};<span class="reserved">this</span>.toString=<span class="reserved">function</span>(){var str=<span class="literal">""</span>;<span class="reserved">for</span>(var i=0;i<<span class="reserved">this</span>.count();i++){str+=<span class="reserved">this</span>.get(i).toString();}
++<span class="reserved">return</span> str;};<span class="reserved">this</span>.list=null;};var mb_MapRequestSubFunctions=[];var mb_WfsReadSubFunctions=[];var mb_WfsWriteSubFunctions=[];var mb_MapRequestPreFunctions=[];var mb_FeatureInfoPreFunctions=[];var mb_InitFunctions=[];var mb_MapObjectSubFunctions=[];var mb_GetScalePreFunctions=[];var mb_loadWmsSubFunctions=[];<span class="reserved">function</span> mb_registerInitFunctions(stringFunction){mb_InitFunctions[mb_InitFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerPreFunctions(stringFunction){mb_MapRequestPreFunctions[mb_MapRequestPreFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerFeatureInfoPreFunctions(stringFunction){mb_FeatureInfoPreFunctions[mb_FeatureInfoPreFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerSubFunctions(stringFunction){mb_MapRequestSubFunctions[mb_MapRequestSubFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerMapObjectSubFunctions(stringFunction){mb_MapObjectSubFunctions[mb_MapObjectSubFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerGetScalePreFunctions(stringFunction){mb_GetScalePreFunctions[mb_GetScalePreFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerloadWmsSubFunctions(stringFunction){mb_loadWmsSubFunctions[mb_loadWmsSubFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerWfsReadSubFunctions(stringFunction){mb_WfsReadSubFunctions[mb_WfsReadSubFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_registerWfsWriteSubFunctions(stringFunction){mb_WfsWriteSubFunctions[mb_WfsWriteSubFunctions.length]=stringFunction;}
++<span class="reserved">function</span> mb_removeFunctionFromArray(arrayname,stringFunction){var length=eval(arrayname+<span class="literal">".length"</span>);<span class="reserved">for</span>(var i=0;i<length;i++){<span class="reserved">if</span>(eval(arrayname+<span class="literal">"["</span>+i+<span class="literal">"]"</span>)==stringFunction){var newArray1=eval(arrayname+<span class="literal">".slice(0, "</span>+(i-1)+<span class="literal">")"</span>);var newArray2=eval(arrayname+<span class="literal">".slice("</span>+(i+1)+<span class="literal">", "</span>+length+<span class="literal">")"</span>);eval(arrayname+<span class="literal">" = newArray1.concat(newArray2)"</span>);i--;length--;}}}
++<span class="reserved">function</span> mb_execloadWmsSubFunctions(){<span class="reserved">for</span>(var i=0;i<mb_loadWmsSubFunctions.length;i++){eval(mb_loadWmsSubFunctions[i]);}}
++<span class="reserved">function</span> mb_execWfsReadSubFunctions(geom){<span class="reserved">for</span>(var i=0;i<mb_WfsReadSubFunctions.length;i++){mb_WfsReadSubFunctions[i](geom);}}
++<span class="reserved">function</span> mb_execWfsWriteSubFunctions(){<span class="reserved">for</span>(var i=0;i<mb_WfsWriteSubFunctions.length;i++){mb_WfsWriteSubFunctions[i]();}}
++<span class="reserved">function</span> mb_checkTag(frameName,tagName,elementId,appendAtTagName,attributes){var oldElement;var newElement;var prefix;<span class="reserved">if</span>(frameName&&frameName!=<span class="literal">""</span>){prefix=window.frames[frameName].document;}
++<span class="reserved">else</span> <span class="reserved">if</span>(!frameName||frameName==<span class="literal">""</span>){prefix=document;}
++oldElement=prefix.getElementById(elementId);<span class="reserved">if</span>(oldElement==null){newElement=prefix.createElement(tagName);newElement=prefix.getElementsByTagName(appendAtTagName)[0].appendChild(newElement);}
++<span class="reserved">else</span>{<span class="reserved">if</span>(oldElement.nodeName.toLowerCase()==tagName.toLowerCase()){<span class="reserved">for</span>(var i=0;i<attributes.length;i++){oldElement.setAttribute(attributes[i][0],attributes[i][1]);}
++<span class="reserved">return</span> oldElement;}
++<span class="reserved">else</span>{<span class="reserved">return</span> false;}}
++var newElementAttributeNode=document.createAttribute(<span class="literal">"id"</span>);newElementAttributeNode.value=elementId;newElement.setAttributeNode(newElementAttributeNode);<span class="reserved">for</span>(var i=0;i<attributes.length;i++){newElement.setAttribute(attributes[i][0],attributes[i][1]);}
++<span class="reserved">return</span> newElement;}</pre>
++ <hr>
++
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top"><em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<font size="-1">
++
++</font>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</body>
++</html>
+Index: documents/jsdoc/overview-summary-map_obj.js.html
+===================================================================
+--- documents/jsdoc/overview-summary-map_obj.js.html (revision 0)
++++ documents/jsdoc/overview-summary-map_obj.js.html (revision 0)
+@@ -0,0 +1,302 @@
++<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<html>
++<head>
++<title>
++ Overview
++</title>
++<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
++<script>
++function asd() {
++
++ parent.document.title="map_obj.js Overview";
++
++}
++</script>
++</head>
++<body bgcolor="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top">
++<em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<center>
++
++ <h2>map_obj.js</h2>
++
++</center>
++
++
++
++
++<h4>Summary</h4>
++<p>
++
++ No overview generated for 'map_obj.js'<BR/><BR/>
++
++</p>
++
++<hr>
++
++
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2><font size="+2">
++
++ <b>Class Summary</b>
++
++ </font></td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="wms_const.html">wms_const</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="wms_layer.html">wms_layer</a></b></td>
++ <td> </td>
++ </tr>
++
++ </table>
++ <hr/>
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++ <a name="method_summary"><!-- --></a>
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2>
++ <font size="+2">
++ <b>Method Summary</b>
++ </font>
++ </td>
++ </tr>
++
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!add_wms">add_wms</a></b>(wms_id,wms_version,wms_title,wms_abstract,wms_getmap,wms_getfeatureinfo,wms_getlegendurl,wms_filter,gui_wms_mapformat,gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!layer_addEpsg">layer_addEpsg</a></b>(epsg,minx,miny,maxx,maxy)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!wms_add_data_type_format">wms_add_data_type_format</a></b>(datatype,dataformat)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!wms_add_layer">wms_add_layer</a></b>(layer_parent,layer_uid,layer_name,layer_title,layer_dataurl_href,layer_pos,layer_queryable,layer_minscale,layer_maxscale,layer_metadataurl,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,gui_layer_wfs_featuretype)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!wms_addLayerStyle">wms_addLayerStyle</a></b>(styleName,styleTitle,count,layerCount,styleLegendUrl,styleLegendUrlFormat)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!wms_addSRS">wms_addSRS</a></b>(epsg,minx,miny,maxx,maxy)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++
++ </table>
++ <p>
++
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++ <pre class="sourceview">var wms=new Array();var wms_layer_count=0;<span class="reserved">function</span> add_wms(wms_id,wms_version,wms_title,wms_abstract,wms_getmap,wms_getfeatureinfo,wms_getlegendurl,wms_filter,gui_wms_mapformat,gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible){wms[wms.length]=new wms_const(wms_id,wms_version,wms_title,wms_abstract,wms_getmap,wms_getfeatureinfo,wms_getlegendurl,wms_filter,gui_wms_mapformat,gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible);wms_layer[wms.length-1]=new Array();}
++<span class="reserved">function</span> wms_const(wms_id,wms_version,wms_title,wms_abstract,wms_getmap,wms_getfeatureinfo,wms_getlegendurl,wms_filter,gui_wms_mapformat,gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible){<span class="reserved">if</span>(!wms_id){var id_ok=false;<span class="reserved">while</span>(id_ok==false){wms_id=<span class="literal">"a"</span>+Math.round(10000*Math.random());id_ok=true;<span class="reserved">for</span>(var i=0;i<wms.length&&id_ok==true;i++){<span class="reserved">if</span>(wms_id==wms[i].wms_id)id_ok=false;}}}
++<span class="reserved">this</span>.wms_id=wms_id;<span class="reserved">this</span>.wms_version=wms_version;<span class="reserved">this</span>.wms_title=wms_title;<span class="reserved">this</span>.wms_abstract=wms_abstract;<span class="reserved">this</span>.wms_getmap=wms_getmap;<span class="reserved">this</span>.wms_getfeatureinfo=wms_getfeatureinfo;<span class="reserved">this</span>.wms_getlegendurl=wms_getlegendurl;<span class="reserved">this</span>.wms_filter=wms_filter;<span class="reserved">this</span>.data_type=new Array();<span class="reserved">this</span>.data_format=new Array();<span class="reserved">this</span>.objLayer=new Array();<span class="reserved">this</span>.gui_wms_mapformat=gui_wms_mapformat;<span class="reserved">this</span>.gui_wms_featureinfoformat=gui_wms_featureinfoformat;<span class="reserved">this</span>.gui_wms_exceptionformat=gui_wms_exceptionformat;<span class="reserved">this</span>.gui_wms_epsg=gui_wms_epsg;<span class="reserved">this</span>.gui_wms_visible=gui_wms_visible;<span class="reserved">this</span>.gui_epsg=new Array();<span class="reserved">this</span>.gui_minx=new Array();<span class="reserved">this</span>.gui_miny=new Array();<span class="reserved">this</span>.gui_maxx=new Array();<span class="reserved">this</span>.gui_maxy=new Array();<span class="reserved">this</span>.gui_wms_mapopacity=1;}
++<span class="reserved">function</span> wms_add_data_type_format(datatype,dataformat){var insertDataFormat=true;<span class="reserved">for</span>(var i=0;i<wms[wms.length-1].data_type.length;i++){<span class="reserved">if</span>(wms[wms.length-1].data_type[i]==datatype&&wms[wms.length-1].data_format[i]==dataformat){insertDataFormat=false;}}
++<span class="reserved">if</span>(insertDataFormat==true){wms[wms.length-1].data_type[wms[wms.length-1].data_type.length]=datatype;wms[wms.length-1].data_format[wms[wms.length-1].data_format.length]=dataformat;}}
++<span class="reserved">function</span> wms_addSRS(epsg,minx,miny,maxx,maxy){wms[wms.length-1].gui_epsg[wms[wms.length-1].gui_epsg.length]=epsg;wms[wms.length-1].gui_minx[wms[wms.length-1].gui_minx.length]=minx;wms[wms.length-1].gui_miny[wms[wms.length-1].gui_miny.length]=miny;wms[wms.length-1].gui_maxx[wms[wms.length-1].gui_maxx.length]=maxx;wms[wms.length-1].gui_maxy[wms[wms.length-1].gui_maxy.length]=maxy;}
++<span class="reserved">function</span> wms_addLayerStyle(styleName,styleTitle,count,layerCount,styleLegendUrl,styleLegendUrlFormat){<span class="reserved">if</span>(wms[wms.length-1].objLayer[layerCount]){wms[wms.length-1].objLayer[layerCount].layer_style[count]=new Array();wms[wms.length-1].objLayer[layerCount].layer_style[count][<span class="literal">"name"</span>]=styleName;wms[wms.length-1].objLayer[layerCount].layer_style[count][<span class="literal">"title"</span>]=styleTitle;wms[wms.length-1].objLayer[layerCount].layer_style[count][<span class="literal">"legendurl"</span>]=styleLegendUrl;wms[wms.length-1].objLayer[layerCount].layer_style[count][<span class="literal">"legendurlformat"</span>]=styleLegendUrlFormat;}}
++<span class="reserved">function</span> wms_add_layer(layer_parent,layer_uid,layer_name,layer_title,layer_dataurl_href,layer_pos,layer_queryable,layer_minscale,layer_maxscale,layer_metadataurl,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,gui_layer_wfs_featuretype){wms[wms.length-1].objLayer[wms[wms.length-1].objLayer.length]=new wms_layer(layer_parent,layer_uid,layer_name,layer_title,layer_dataurl_href,layer_pos,layer_queryable,layer_minscale,layer_maxscale,layer_metadataurl,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,gui_layer_wfs_featuretype);}
++<span class="reserved">function</span> layer_addEpsg(epsg,minx,miny,maxx,maxy){var j=wms[wms.length-1].objLayer.length-1;var k=wms[wms.length-1].objLayer[j].layer_epsg.length;wms[wms.length-1].objLayer[j].layer_epsg[k]=new Array();wms[wms.length-1].objLayer[j].layer_epsg[k][<span class="literal">"epsg"</span>]=epsg;wms[wms.length-1].objLayer[j].layer_epsg[k][<span class="literal">"minx"</span>]=minx;wms[wms.length-1].objLayer[j].layer_epsg[k][<span class="literal">"miny"</span>]=miny;wms[wms.length-1].objLayer[j].layer_epsg[k][<span class="literal">"maxx"</span>]=maxx;wms[wms.length-1].objLayer[j].layer_epsg[k][<span class="literal">"maxy"</span>]=maxy;}
++<span class="reserved">function</span> wms_layer(layer_parent,wms_layer_uid,layer_name,layer_title,layer_dataurl_href,layer_pos,layer_queryable,layer_minscale,layer_maxscale,layer_metadataurl,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,gui_layer_wfs_featuretype){<span class="reserved">this</span>.layer_id=wms_layer_count;<span class="reserved">this</span>.layer_uid=wms_layer_uid;<span class="reserved">this</span>.layer_parent=layer_parent;<span class="reserved">this</span>.layer_name=layer_name;<span class="reserved">this</span>.layer_title=layer_title;<span class="reserved">this</span>.layer_dataurl_href=layer_dataurl_href;<span class="reserved">this</span>.layer_pos=layer_pos;<span class="reserved">this</span>.layer_queryable=layer_queryable;<span class="reserved">this</span>.layer_minscale=layer_minscale;<span class="reserved">this</span>.layer_maxscale=layer_maxscale;<span class="reserved">this</span>.layer_metadataurl=layer_metadataurl;<span class="reserved">this</span>.layer_epsg=new Array();<span class="reserved">this</span>.gui_layer_wms_id=gui_layer_wms_id;<span class="reserved">this</span>.gui_layer_status=gui_layer_status;<span class="reserved">this</span>.gui_layer_selectable=gui_layer_selectable;<span class="reserved">this</span>.gui_layer_visible=gui_layer_visible;<span class="reserved">this</span>.gui_layer_queryable=gui_layer_queryable;<span class="reserved">this</span>.gui_layer_querylayer=gui_layer_querylayer;<span class="reserved">this</span>.gui_layer_minscale=gui_layer_minscale;<span class="reserved">this</span>.gui_layer_maxscale=gui_layer_maxscale;<span class="reserved">this</span>.gui_layer_wfs_featuretype=gui_layer_wfs_featuretype;<span class="reserved">this</span>.layer_style=new Array();wms_layer_count++;}</pre>
++ <hr>
++
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top"><em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<font size="-1">
++
++</font>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:23 2008</div>
++</body>
++</html>
+Index: documents/jsdoc/overview-summary-point.js.html
+===================================================================
+--- documents/jsdoc/overview-summary-point.js.html (revision 0)
++++ documents/jsdoc/overview-summary-point.js.html (revision 0)
+@@ -0,0 +1,276 @@
++<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<html>
++<head>
++<title>
++ Overview
++</title>
++<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
++<script>
++function asd() {
++
++ parent.document.title="point.js Overview";
++
++}
++</script>
++</head>
++<body bgcolor="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top">
++<em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<center>
++
++ <h2>point.js</h2>
++
++</center>
++
++
++
++
++<h4>Summary</h4>
++<p>
++
++ No overview generated for 'point.js'<BR/><BR/>
++
++</p>
++
++<hr>
++
++
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2><font size="+2">
++
++ <b>Class Summary</b>
++
++ </font></td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="Point.html">Point</a></b></td>
++ <td> </td>
++ </tr>
++
++ </table>
++ <hr/>
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++ <a name="method_summary"><!-- --></a>
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2>
++ <font size="+2">
++ <b>Method Summary</b>
++ </font>
++ </td>
++ </tr>
++
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mapToReal">mapToReal</a></b>(frameName,aPoint)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mb_calcExtent">mb_calcExtent</a></b>(frameName,min,max)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!realToMap">realToMap</a></b>(frameName,aPoint)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!roundToDigits">roundToDigits</a></b>(aFloat,numberOfDigits)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++
++ </table>
++ <p>
++
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++ <pre class="sourceview"><span class="reserved">function</span> Point(x,y){<span class="reserved">this</span>.x=parseFloat(x);<span class="reserved">this</span>.y=parseFloat(y);}
++Point.<span class="reserved">prototype</span>.dist=<span class="reserved">function</span>(p){<span class="reserved">return</span> Math.sqrt(Math.pow(<span class="reserved">this</span>.y-p.y,2)+Math.pow(<span class="reserved">this</span>.x-p.x,2));}
++Point.<span class="reserved">prototype</span>.equals=<span class="reserved">function</span>(p){<span class="reserved">if</span>(<span class="reserved">this</span>.x==p.x&&<span class="reserved">this</span>.y==p.y){<span class="reserved">return</span> true;}
++<span class="reserved">return</span> false;}
++Point.<span class="reserved">prototype</span>.minus=<span class="reserved">function</span>(p){<span class="reserved">return</span> new Point(<span class="reserved">this</span>.x-p.x,<span class="reserved">this</span>.y-p.y);}
++Point.<span class="reserved">prototype</span>.plus=<span class="reserved">function</span>(p){<span class="reserved">return</span> new Point(<span class="reserved">this</span>.x+p.x,<span class="reserved">this</span>.y+p.y);}
++Point.<span class="reserved">prototype</span>.dividedBy=<span class="reserved">function</span>(c){<span class="reserved">if</span>(c!=0){<span class="reserved">return</span> new Point(<span class="reserved">this</span>.x/c,<span class="reserved">this</span>.y/c);}
++var e=new Mb_exception(<span class="literal">"Point.dividedBy: Division by zero"</span>);<span class="reserved">return</span> false;}
++Point.<span class="reserved">prototype</span>.times=<span class="reserved">function</span>(c){<span class="reserved">return</span> new Point(<span class="reserved">this</span>.x*c,<span class="reserved">this</span>.y*c);}
++Point.<span class="reserved">prototype</span>.round=<span class="reserved">function</span>(numOfDigits){<span class="reserved">return</span> new Point(roundToDigits(<span class="reserved">this</span>.x,numOfDigits),roundToDigits(<span class="reserved">this</span>.y,numOfDigits));}
++Point.<span class="reserved">prototype</span>.toString=<span class="reserved">function</span>(){<span class="reserved">return</span><span class="literal">"("</span>+<span class="reserved">this</span>.x+<span class="literal">", "</span>+<span class="reserved">this</span>.y+<span class="literal">")"</span>;}
++<span class="reserved">function</span> mapToReal(frameName,aPoint){var v;<span class="reserved">if</span>(typeof(mb_mapObj)==<span class="literal">'object'</span>)v=makeClickPos2RealWorldPos(frameName,aPoint.x,aPoint.y);<span class="reserved">else</span> <span class="reserved">if</span>(typeof(parent.mb_mapObj)==<span class="literal">'object'</span>)v=parent.makeClickPos2RealWorldPos(frameName,aPoint.x,aPoint.y);<span class="reserved">else</span> alert(<span class="literal">'where am i?'</span>);<span class="reserved">return</span> new Point(v[0],v[1]);}
++<span class="reserved">function</span> realToMap(frameName,aPoint){var v;<span class="reserved">if</span>(typeof(mb_mapObj)==<span class="literal">'object'</span>){v=makeRealWorld2mapPos(frameName,aPoint.x,aPoint.y);}
++<span class="reserved">else</span> <span class="reserved">if</span>(typeof(parent.mb_mapObj)==<span class="literal">'object'</span>){v=parent.makeRealWorld2mapPos(frameName,aPoint.x,aPoint.y);}
++<span class="reserved">else</span>{var e=new Mb_exception(<span class="literal">'Point.realToMap:where am i?'</span>);}
++<span class="reserved">return</span> new Point(v[0],v[1]);}
++<span class="reserved">function</span> mb_calcExtent(frameName,min,max){var ind;<span class="reserved">if</span>(typeof(mb_mapObj)==<span class="literal">'object'</span>){ind=getMapObjIndexByName(frameName);}
++<span class="reserved">else</span> <span class="reserved">if</span>(typeof(parent.mb_mapObj)==<span class="literal">'object'</span>){ind=parent.getMapObjIndexByName(frameName);}
++<span class="reserved">else</span>{var e=new Mb_exception(<span class="literal">'Point.mb_calcExtent: function getMapObjIndexByName not found'</span>);}
++var extent=max.minus(min);var center=extent.dividedBy(2).plus(min);var relation_px_x=mb_mapObj[ind].width/mb_mapObj[ind].height;var relation_px_y=mb_mapObj[ind].height/mb_mapObj[ind].width;var relation_bbox_x=extent.x/extent.y;var new_min;var new_max;<span class="reserved">if</span>(relation_bbox_x<=relation_px_x){new_min=new Point(center.x-relation_px_x*extent.y/2,min.y);new_max=new Point(center.x+relation_px_x*extent.y/2,max.y);}
++<span class="reserved">else</span> <span class="reserved">if</span>(relation_bbox_x>relation_px_x){new_min=new Point(min.x,center.y-relation_px_y*extent.x/2);new_max=new Point(max.x,center.y+relation_px_y*extent.x/2);}
++mb_mapObj[ind].extent=new_min.x+<span class="literal">","</span>+new_min.y+<span class="literal">","</span>+new_max.x+<span class="literal">","</span>+new_max.y;}
++<span class="reserved">function</span> roundToDigits(aFloat,numberOfDigits){<span class="reserved">return</span> Math.round(aFloat*Math.pow(10,parseInt(numberOfDigits)))/Math.pow(10,parseInt(numberOfDigits));}</pre>
++ <hr>
++
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top"><em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<font size="-1">
++
++</font>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</body>
++</html>
+Index: documents/jsdoc/overview-summary-wz_jsgraphics.js.html
+===================================================================
+--- documents/jsdoc/overview-summary-wz_jsgraphics.js.html (revision 0)
++++ documents/jsdoc/overview-summary-wz_jsgraphics.js.html (revision 0)
+@@ -0,0 +1,1503 @@
++<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<html>
++<head>
++<title>
++ Overview
++</title>
++<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
++<script>
++function asd() {
++
++ parent.document.title="wz_jsgraphics.js Overview";
++
++}
++</script>
++</head>
++<body bgcolor="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top">
++<em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<center>
++
++ <h2>wz_jsgraphics.js</h2>
++
++</center>
++
++
++
++
++<h4>Summary</h4>
++<p>
++
++ No overview generated for 'wz_jsgraphics.js'<BR/><BR/>
++
++</p>
++
++<hr>
++
++
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2><font size="+2">
++
++ <b>Class Summary</b>
++
++ </font></td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="jsgFont.html">jsgFont</a></b></td>
++ <td> </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="jsgStroke.html">jsgStroke</a></b></td>
++ <td> </td>
++ </tr>
++
++ </table>
++ <hr/>
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++ <a name="method_summary"><!-- --></a>
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2>
++ <font size="+2">
++ <b>Method Summary</b>
++ </font>
++ </td>
++ </tr>
++
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!chkDHTM">chkDHTM</a></b>(x, i)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!htmPrtRpc">htmPrtRpc</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!htmRpc">htmRpc</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static Object</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!integer_compare">integer_compare</a></b>(x,y)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!jsGraphics">jsGraphics</a></b>(id, wnd)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkDiv">mkDiv</a></b>(x, y, w, h)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkDivIe">mkDivIe</a></b>(x, y, w, h)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkDivPrt">mkDivPrt</a></b>(x, y, w, h)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkLin">mkLin</a></b>(x1, y1, x2, y2)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkLin2D">mkLin2D</a></b>(x1, y1, x2, y2)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkLinDott">mkLinDott</a></b>(x1, y1, x2, y2)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkLyr">mkLyr</a></b>(x, y, w, h)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkOv">mkOv</a></b>(left, top, width, height)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkOv2D">mkOv2D</a></b>(left, top, width, height)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkOvDott">mkOvDott</a></b>(left, top, width, height)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkRect">mkRect</a></b>(x, y, w, h)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!mkRectDott">mkRectDott</a></b>(x, y, w, h)
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!pntCnv">pntCnv</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!pntCnvDom">pntCnvDom</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!pntCnvIe">pntCnvIe</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!pntCnvIhtm">pntCnvIhtm</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td align="right" valign="top" width="1%">
++ <font size="-1">
++ <code>static void</code>
++ </font>
++ </td>
++ <td>
++ <code>
++ <b>
++ <a href="GLOBALS.html#!s!pntDoc">pntDoc</a></b>()
++ </code>
++ <br>
++
++
++ </td>
++ </tr>
++
++
++ </table>
++ <p>
++
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++ <pre class="sourceview"><span class="comment">/* This notice must be untouched at all times.
++
++wz_jsgraphics.js v. 2.3
++The latest version is available at
++http://www.walterzorn.com
++or http://www.devira.com
++or http://www.walterzorn.de
++
++Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
++Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
++Last modified: 29. 9. 2004
++
++Performance optimizations for Internet Explorer
++by Thomas Frank and John Holdsworth.
++fillPolygon method implemented by Matthieu Haller.
++
++High Performance JavaScript Graphics Library.
++Provides methods
++- to draw lines, rectangles, ellipses, polygons
++ with specifiable line thickness,
++- to fill rectangles and ellipses
++- to draw text.
++NOTE: Operations, functions and branching have rather been optimized
++to efficiency and speed than to shortness of source code.
++
++LICENSE: LGPL
++
++This library is free software; you can redistribute it and/or
++modify it under the terms of the GNU Lesser General Public
++License (LGPL) as published by the Free Software Foundation; either
++version 2.1 of the License, or (at your option) any later version.
++
++This library 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
++Lesser General Public License for more details.
++
++You should have received a copy of the GNU Lesser General Public
++License along with this library; if not, write to the Free Software
++Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA,
++or see http://www.gnu.org/copyleft/lesser.html
++*/</span>
++
++
++var jg_ihtm, jg_ie, jg_fast, jg_dom, jg_moz,
++jg_n4 = (document.layers && typeof document.classes != <span class="literal">"undefined"</span>);
++
++
++<span class="reserved">function</span> chkDHTM(x, i)
++{
++ x = document.body || null;
++ jg_ie = x && typeof x.insertAdjacentHTML != <span class="literal">"undefined"</span>;
++ jg_dom = (x && !jg_ie &&
++ typeof x.appendChild != <span class="literal">"undefined"</span> &&
++ typeof document.createRange != <span class="literal">"undefined"</span> &&
++ typeof (i = document.createRange()).setStartBefore != <span class="literal">"undefined"</span> &&
++ typeof i.createContextualFragment != <span class="literal">"undefined"</span>);
++ jg_ihtm = !jg_ie && !jg_dom && x && typeof x.innerHTML != <span class="literal">"undefined"</span>;
++ jg_fast = jg_ie && document.all && !window.opera;
++ jg_moz = jg_dom && typeof x.style.MozOpacity != <span class="literal">"undefined"</span>;
++}
++
++
++<span class="reserved">function</span> pntDoc()
++{
++ <span class="reserved">this</span>.wnd.document.write(jg_fast? <span class="reserved">this</span>.htmRpc() : <span class="reserved">this</span>.htm);
++ <span class="reserved">this</span>.htm = <span class="literal">''</span>;
++}
++
++
++<span class="reserved">function</span> pntCnvDom()
++{
++ var x = document.createRange();
++ x.setStartBefore(<span class="reserved">this</span>.cnv);
++ x = x.createContextualFragment(jg_fast? <span class="reserved">this</span>.htmRpc() : <span class="reserved">this</span>.htm);
++ <span class="reserved">this</span>.cnv.appendChild(x);
++ <span class="reserved">this</span>.htm = <span class="literal">''</span>;
++}
++
++
++<span class="reserved">function</span> pntCnvIe()
++{
++ <span class="reserved">this</span>.cnv.insertAdjacentHTML(<span class="literal">"BeforeEnd"</span>, jg_fast? <span class="reserved">this</span>.htmRpc() : <span class="reserved">this</span>.htm);
++ <span class="reserved">this</span>.htm = <span class="literal">''</span>;
++}
++
++
++<span class="reserved">function</span> pntCnvIhtm()
++{
++ <span class="reserved">this</span>.cnv.innerHTML += <span class="reserved">this</span>.htm;
++ <span class="reserved">this</span>.htm = <span class="literal">''</span>;
++}
++
++
++<span class="reserved">function</span> pntCnv()
++{
++ <span class="reserved">this</span>.htm = <span class="literal">''</span>;
++}
++
++
++<span class="reserved">function</span> mkDiv(x, y, w, h)
++{
++ <span class="reserved">if</span> (!isNaN(h)) {
++ <span class="reserved">this</span>.htm += <span class="literal">'<div style="position:absolute;'</span>+
++ <span class="literal">'left:'</span> + x + <span class="literal">'px;'</span>+
++ <span class="literal">'top:'</span> + y + <span class="literal">'px;'</span>+
++ <span class="literal">'width:'</span> + w + <span class="literal">'px;'</span>+
++ <span class="literal">'height:'</span> + h + <span class="literal">'px;'</span>;
++ <span class="reserved">if</span> (ie) {
++ <span class="reserved">this</span>.htm += <span class="literal">'-opacity:'</span> + cw_opacity + <span class="literal">';'</span> +
++ <span class="literal">'-khtml-opacity:'</span> + cw_opacity + <span class="literal">';'</span>+
++ <span class="literal">'filter: alpha(opacity='</span> + (cw_opacity * 100) + <span class="literal">');'</span>;
++ }
++
++ <span class="comment">//'-moz-opacity:' + window.cw_opacity + ';'+</span>
++ <span class="reserved">this</span>.htm +=
++ <span class="literal">'clip:rect(0,'</span>+w+<span class="literal">'px,'</span>+h+<span class="literal">'px,0);'</span>+
++ <span class="literal">'background-color:'</span> + <span class="reserved">this</span>.color +
++ (!jg_moz? <span class="literal">';overflow:hidden'</span> : <span class="literal">''</span>)+
++ <span class="literal">';"><\/div>'</span>;
++ }
++}
++
++
++<span class="reserved">function</span> mkDivIe(x, y, w, h)
++{
++ <span class="reserved">if</span> (!isNaN(h)) {
++ <span class="reserved">this</span>.htm += <span class="literal">'%%'</span>+<span class="reserved">this</span>.color+<span class="literal">';'</span>+x+<span class="literal">';'</span>+y+<span class="literal">';'</span>+w+<span class="literal">';'</span>+h+<span class="literal">';'</span>;
++ }
++}
++
++
++<span class="reserved">function</span> mkDivPrt(x, y, w, h)
++{
++ <span class="reserved">this</span>.htm += <span class="literal">'<div style="position:absolute;'</span>+
++ <span class="literal">'border-left:'</span> + w + <span class="literal">'px solid '</span> + <span class="reserved">this</span>.color + <span class="literal">';'</span>+
++ <span class="literal">'left:'</span> + x + <span class="literal">'px;'</span>+
++ <span class="literal">'top:'</span> + y + <span class="literal">'px;'</span>+
++ <span class="literal">'width:0px;'</span>+
++ <span class="literal">'height:'</span> + h + <span class="literal">'px;'</span>+
++ <span class="literal">'clip:rect(0,'</span>+w+<span class="literal">'px,'</span>+h+<span class="literal">'px,0);'</span>+
++ <span class="literal">'background-color:'</span> + <span class="reserved">this</span>.color +
++ (!jg_moz? <span class="literal">';overflow:hidden'</span> : <span class="literal">''</span>)+
++ <span class="literal">';"><\/div>'</span>;
++}
++
++
++<span class="reserved">function</span> mkLyr(x, y, w, h)
++{
++ <span class="reserved">this</span>.htm += <span class="literal">'<layer '</span>+
++ <span class="literal">'left="'</span> + x + <span class="literal">'" '</span>+
++ <span class="literal">'top="'</span> + y + <span class="literal">'" '</span>+
++ <span class="literal">'width="'</span> + w + <span class="literal">'" '</span>+
++ <span class="literal">'height="'</span> + h + <span class="literal">'" '</span>+
++ <span class="literal">'bgcolor="'</span> + <span class="reserved">this</span>.color + <span class="literal">'"><\/layer>\n'</span>;
++}
++
++
++var regex = /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;
++<span class="reserved">function</span> htmRpc()
++{
++ <span class="reserved">return</span> <span class="reserved">this</span>.htm.replace(
++ regex,
++ <span class="literal">'<div style="overflow:hidden;position:absolute;background-color:'</span>+
++ <span class="literal">'$1;left:$2;top:$3;width:$4;height:$5"></div>\n'</span>);
++}
++
++
++<span class="reserved">function</span> htmPrtRpc()
++{
++ <span class="reserved">return</span> <span class="reserved">this</span>.htm.replace(
++ regex,
++ <span class="literal">'<div style="overflow:hidden;position:absolute;background-color:'</span>+
++ <span class="literal">'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n'</span>);
++}
++
++
++<span class="reserved">function</span> mkLin(x1, y1, x2, y2)
++{
++ <span class="reserved">if</span> (x1 > x2)
++ {
++ var _x2 = x2;
++ var _y2 = y2;
++ x2 = x1;
++ y2 = y1;
++ x1 = _x2;
++ y1 = _y2;
++ }
++ var dx = x2-x1, dy = Math.abs(y2-y1),
++ x = x1, y = y1,
++ yIncr = (y1 > y2)? -1 : 1;
++
++ <span class="reserved">if</span> (dx >= dy)
++ {
++ var pr = dy<<1,
++ pru = pr - (dx<<1),
++ p = pr-dx,
++ ox = x;
++ <span class="reserved">while</span> ((dx--) > 0)
++ {
++ ++x;
++ <span class="reserved">if</span> (p > 0)
++ {
++ <span class="reserved">this</span>.mkDiv(ox, y, x-ox, 1);
++ y += yIncr;
++ p += pru;
++ ox = x;
++ }
++ <span class="reserved">else</span> p += pr;
++ }
++ <span class="reserved">this</span>.mkDiv(ox, y, x2-ox+1, 1);
++ }
++
++ <span class="reserved">else</span>
++ {
++ var pr = dx<<1,
++ pru = pr - (dy<<1),
++ p = pr-dy,
++ oy = y;
++ <span class="reserved">if</span> (y2 <= y1)
++ {
++ <span class="reserved">while</span> ((dy--) > 0)
++ {
++ <span class="reserved">if</span> (p > 0)
++ {
++ <span class="reserved">this</span>.mkDiv(x++, y, 1, oy-y+1);
++ y += yIncr;
++ p += pru;
++ oy = y;
++ }
++ <span class="reserved">else</span>
++ {
++ y += yIncr;
++ p += pr;
++ }
++ }
++ <span class="reserved">this</span>.mkDiv(x2, y2, 1, oy-y2+1);
++ }
++ <span class="reserved">else</span>
++ {
++ <span class="reserved">while</span> ((dy--) > 0)
++ {
++ y += yIncr;
++ <span class="reserved">if</span> (p > 0)
++ {
++ <span class="reserved">this</span>.mkDiv(x++, oy, 1, y-oy);
++ p += pru;
++ oy = y;
++ }
++ <span class="reserved">else</span> p += pr;
++ }
++ <span class="reserved">this</span>.mkDiv(x2, oy, 1, y2-oy+1);
++ }
++ }
++}
++
++
++<span class="reserved">function</span> mkLin2D(x1, y1, x2, y2)
++{
++ <span class="reserved">if</span> (x1 > x2)
++ {
++ var _x2 = x2;
++ var _y2 = y2;
++ x2 = x1;
++ y2 = y1;
++ x1 = _x2;
++ y1 = _y2;
++ }
++ var dx = x2-x1, dy = Math.abs(y2-y1),
++ x = x1, y = y1,
++ yIncr = (y1 > y2)? -1 : 1;
++
++ var s = <span class="reserved">this</span>.stroke;
++ <span class="reserved">if</span> (dx >= dy)
++ {
++ <span class="reserved">if</span> (s-3 > 0)
++ {
++ var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;
++ _s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;
++ }
++ <span class="reserved">else</span> var _s = s;
++ var ad = Math.ceil(s/2);
++
++ var pr = dy<<1,
++ pru = pr - (dx<<1),
++ p = pr-dx,
++ ox = x;
++ <span class="reserved">while</span> ((dx--) > 0)
++ {
++ ++x;
++ <span class="reserved">if</span> (p > 0)
++ {
++ <span class="reserved">this</span>.mkDiv(ox, y, x-ox+ad, _s);
++ y += yIncr;
++ p += pru;
++ ox = x;
++ }
++ <span class="reserved">else</span> p += pr;
++ }
++ <span class="reserved">this</span>.mkDiv(ox, y, x2-ox+ad+1, _s);
++ }
++
++ <span class="reserved">else</span>
++ {
++ <span class="reserved">if</span> (s-3 > 0)
++ {
++ var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;
++ _s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;
++ }
++ <span class="reserved">else</span> var _s = s;
++ var ad = Math.round(s/2);
++
++ var pr = dx<<1,
++ pru = pr - (dy<<1),
++ p = pr-dy,
++ oy = y;
++ <span class="reserved">if</span> (y2 <= y1)
++ {
++ ++ad;
++ <span class="reserved">while</span> ((dy--) > 0)
++ {
++ <span class="reserved">if</span> (p > 0)
++ {
++ <span class="reserved">this</span>.mkDiv(x++, y, _s, oy-y+ad);
++ y += yIncr;
++ p += pru;
++ oy = y;
++ }
++ <span class="reserved">else</span>
++ {
++ y += yIncr;
++ p += pr;
++ }
++ }
++ <span class="reserved">this</span>.mkDiv(x2, y2, _s, oy-y2+ad);
++ }
++ <span class="reserved">else</span>
++ {
++ <span class="reserved">while</span> ((dy--) > 0)
++ {
++ y += yIncr;
++ <span class="reserved">if</span> (p > 0)
++ {
++ <span class="reserved">this</span>.mkDiv(x++, oy, _s, y-oy+ad);
++ p += pru;
++ oy = y;
++ }
++ <span class="reserved">else</span> p += pr;
++ }
++ <span class="reserved">this</span>.mkDiv(x2, oy, _s, y2-oy+ad+1);
++ }
++ }
++}
++
++
++<span class="reserved">function</span> mkLinDott(x1, y1, x2, y2)
++{
++ <span class="reserved">if</span> (x1 > x2)
++ {
++ var _x2 = x2;
++ var _y2 = y2;
++ x2 = x1;
++ y2 = y1;
++ x1 = _x2;
++ y1 = _y2;
++ }
++ var dx = x2-x1, dy = Math.abs(y2-y1),
++ x = x1, y = y1,
++ yIncr = (y1 > y2)? -1 : 1,
++ drw = true;
++ <span class="reserved">if</span> (dx >= dy)
++ {
++ var pr = dy<<1,
++ pru = pr - (dx<<1),
++ p = pr-dx;
++ <span class="reserved">while</span> ((dx--) > 0)
++ {
++ <span class="reserved">if</span> (drw) <span class="reserved">this</span>.mkDiv(x, y, 1, 1);
++ drw = !drw;
++ <span class="reserved">if</span> (p > 0)
++ {
++ y += yIncr;
++ p += pru;
++ }
++ <span class="reserved">else</span> p += pr;
++ ++x;
++ }
++ <span class="reserved">if</span> (drw) <span class="reserved">this</span>.mkDiv(x, y, 1, 1);
++ }
++
++ <span class="reserved">else</span>
++ {
++ var pr = dx<<1,
++ pru = pr - (dy<<1),
++ p = pr-dy;
++ <span class="reserved">while</span> ((dy--) > 0)
++ {
++ <span class="reserved">if</span> (drw) <span class="reserved">this</span>.mkDiv(x, y, 1, 1);
++ drw = !drw;
++ y += yIncr;
++ <span class="reserved">if</span> (p > 0)
++ {
++ ++x;
++ p += pru;
++ }
++ <span class="reserved">else</span> p += pr;
++ }
++ <span class="reserved">if</span> (drw) <span class="reserved">this</span>.mkDiv(x, y, 1, 1);
++ }
++}
++
++
++<span class="reserved">function</span> mkOv(left, top, width, height)
++{
++ var a = width>>1, b = height>>1,
++ wod = width&1, hod = (height&1)+1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ ox = 0, oy = b,
++ aa = (a*a)<<1, bb = (b*b)<<1,
++ st = (aa>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa*((b<<1)-1),
++ w, h;
++ <span class="reserved">while</span> (y > 0)
++ {
++ <span class="reserved">if</span> (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (tt < 0)
++ {
++ st += bb*((x<<1)+3) - (aa<<1)*(y-1);
++ tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
++ w = x-ox;
++ h = oy-y;
++ <span class="reserved">if</span> (w&2 && h&2)
++ {
++ <span class="reserved">this</span>.mkOvQds(cx, cy, -x+2, ox+wod, -oy, oy-1+hod, 1, 1);
++ <span class="reserved">this</span>.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1);
++ }
++ <span class="reserved">else</span> <span class="reserved">this</span>.mkOvQds(cx, cy, -x+1, ox+wod, -oy, oy-h+hod, w, h);
++ ox = x;
++ oy = y;
++ }
++ <span class="reserved">else</span>
++ {
++ tt -= aa*((y<<1)-3);
++ st -= (aa<<1)*(--y);
++ }
++ }
++ <span class="reserved">this</span>.mkDiv(cx-a, cy-oy, a-ox+1, (oy<<1)+hod);
++ <span class="reserved">this</span>.mkDiv(cx+ox+wod, cy-oy, a-ox+1, (oy<<1)+hod);
++}
++
++
++<span class="reserved">function</span> mkOv2D(left, top, width, height)
++{
++ var s = <span class="reserved">this</span>.stroke;
++ width += s-1;
++ height += s-1;
++ var a = width>>1, b = height>>1,
++ wod = width&1, hod = (height&1)+1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ aa = (a*a)<<1, bb = (b*b)<<1,
++ st = (aa>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa*((b<<1)-1);
++
++ <span class="reserved">if</span> (s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0))
++ {
++ var ox = 0, oy = b,
++ w, h,
++ pxl, pxr, pxt, pxb, pxw;
++ <span class="reserved">while</span> (y > 0)
++ {
++ <span class="reserved">if</span> (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (tt < 0)
++ {
++ st += bb*((x<<1)+3) - (aa<<1)*(y-1);
++ tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
++ w = x-ox;
++ h = oy-y;
++
++ <span class="reserved">if</span> (w-1)
++ {
++ pxw = w+1+(s&1);
++ h = s;
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (h-1)
++ {
++ pxw = s;
++ h += 1+(s&1);
++ }
++ <span class="reserved">else</span> pxw = h = s;
++ <span class="reserved">this</span>.mkOvQds(cx, cy, -x+1, ox-pxw+w+wod, -oy, -h+oy+hod, pxw, h);
++ ox = x;
++ oy = y;
++ }
++ <span class="reserved">else</span>
++ {
++ tt -= aa*((y<<1)-3);
++ st -= (aa<<1)*(--y);
++ }
++ }
++ <span class="reserved">this</span>.mkDiv(cx-a, cy-oy, s, (oy<<1)+hod);
++ <span class="reserved">this</span>.mkDiv(cx+a+wod-s+1, cy-oy, s, (oy<<1)+hod);
++ }
++
++ <span class="reserved">else</span>
++ {
++ var _a = (width-((s-1)<<1))>>1,
++ _b = (height-((s-1)<<1))>>1,
++ _x = 0, _y = _b,
++ _aa = (_a*_a)<<1, _bb = (_b*_b)<<1,
++ _st = (_aa>>1)*(1-(_b<<1)) + _bb,
++ _tt = (_bb>>1) - _aa*((_b<<1)-1),
++
++ pxl = new Array(),
++ pxt = new Array(),
++ _pxb = new Array();
++ pxl[0] = 0;
++ pxt[0] = b;
++ _pxb[0] = _b-1;
++ <span class="reserved">while</span> (y > 0)
++ {
++ <span class="reserved">if</span> (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ pxl[pxl.length] = x;
++ pxt[pxt.length] = y;
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (tt < 0)
++ {
++ st += bb*((x<<1)+3) - (aa<<1)*(y-1);
++ tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
++ pxl[pxl.length] = x;
++ pxt[pxt.length] = y;
++ }
++ <span class="reserved">else</span>
++ {
++ tt -= aa*((y<<1)-3);
++ st -= (aa<<1)*(--y);
++ }
++
++ <span class="reserved">if</span> (_y > 0)
++ {
++ <span class="reserved">if</span> (_st < 0)
++ {
++ _st += _bb*((_x<<1)+3);
++ _tt += (_bb<<1)*(++_x);
++ _pxb[_pxb.length] = _y-1;
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (_tt < 0)
++ {
++ _st += _bb*((_x<<1)+3) - (_aa<<1)*(_y-1);
++ _tt += (_bb<<1)*(++_x) - _aa*(((_y--)<<1)-3);
++ _pxb[_pxb.length] = _y-1;
++ }
++ <span class="reserved">else</span>
++ {
++ _tt -= _aa*((_y<<1)-3);
++ _st -= (_aa<<1)*(--_y);
++ _pxb[_pxb.length-1]--;
++ }
++ }
++ }
++
++ var ox = 0, oy = b,
++ _oy = _pxb[0],
++ l = pxl.length,
++ w, h;
++ <span class="reserved">for</span> (var i = 0; i < l; i++)
++ {
++ <span class="reserved">if</span> (typeof _pxb[i] != <span class="literal">"undefined"</span>)
++ {
++ <span class="reserved">if</span> (_pxb[i] < _oy || pxt[i] < oy)
++ {
++ x = pxl[i];
++ <span class="reserved">this</span>.mkOvQds(cx, cy, -x+1, ox+wod, -oy, _oy+hod, x-ox, oy-_oy);
++ ox = x;
++ oy = pxt[i];
++ _oy = _pxb[i];
++ }
++ }
++ <span class="reserved">else</span>
++ {
++ x = pxl[i];
++ <span class="reserved">this</span>.mkDiv(cx-x+1, cy-oy, 1, (oy<<1)+hod);
++ <span class="reserved">this</span>.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
++ ox = x;
++ oy = pxt[i];
++ }
++ }
++ <span class="reserved">this</span>.mkDiv(cx-a, cy-oy, 1, (oy<<1)+hod);
++ <span class="reserved">this</span>.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
++ }
++}
++
++
++<span class="reserved">function</span> mkOvDott(left, top, width, height)
++{
++ var a = width>>1, b = height>>1,
++ wod = width&1, hod = height&1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,
++ st = (aa2>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa2*((b<<1)-1),
++ drw = true;
++ <span class="reserved">while</span> (y > 0)
++ {
++ <span class="reserved">if</span> (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (tt < 0)
++ {
++ st += bb*((x<<1)+3) - aa4*(y-1);
++ tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3);
++ }
++ <span class="reserved">else</span>
++ {
++ tt -= aa2*((y<<1)-3);
++ st -= aa4*(--y);
++ }
++ <span class="reserved">if</span> (drw) <span class="reserved">this</span>.mkOvQds(cx, cy, -x, x+wod, -y, y+hod, 1, 1);
++ drw = !drw;
++ }
++}
++
++
++<span class="reserved">function</span> mkRect(x, y, w, h)
++{
++ var s = <span class="reserved">this</span>.stroke;
++ <span class="reserved">this</span>.mkDiv(x, y, w, s);
++ <span class="reserved">this</span>.mkDiv(x+w, y, s, h);
++ <span class="reserved">this</span>.mkDiv(x, y+h, w+s, s);
++ <span class="reserved">this</span>.mkDiv(x, y+s, s, h-s);
++}
++
++
++<span class="reserved">function</span> mkRectDott(x, y, w, h)
++{
++ <span class="reserved">this</span>.drawLine(x, y, x+w, y);
++ <span class="reserved">this</span>.drawLine(x+w, y, x+w, y+h);
++ <span class="reserved">this</span>.drawLine(x, y+h, x+w, y+h);
++ <span class="reserved">this</span>.drawLine(x, y, x, y+h);
++}
++
++
++<span class="reserved">function</span> jsgFont()
++{
++ <span class="reserved">this</span>.PLAIN = <span class="literal">'font-weight:normal;'</span>;
++ <span class="reserved">this</span>.BOLD = <span class="literal">'font-weight:bold;'</span>;
++ <span class="reserved">this</span>.ITALIC = <span class="literal">'font-style:italic;'</span>;
++ <span class="reserved">this</span>.ITALIC_BOLD = <span class="reserved">this</span>.ITALIC + <span class="reserved">this</span>.BOLD;
++ <span class="reserved">this</span>.BOLD_ITALIC = <span class="reserved">this</span>.ITALIC_BOLD;
++}
++var Font = new jsgFont();
++
++
++<span class="reserved">function</span> jsgStroke()
++{
++ <span class="reserved">this</span>.DOTTED = -1;
++}
++var Stroke = new jsgStroke();
++
++
++<span class="reserved">function</span> jsGraphics(id, wnd)
++{
++ <span class="reserved">this</span>.setColor = new Function(<span class="literal">'arg'</span>, <span class="literal">'this.color = arg.toLowerCase();'</span>);
++
++ <span class="reserved">this</span>.setStroke = <span class="reserved">function</span>(x)
++ {
++ <span class="reserved">this</span>.stroke = x;
++ <span class="reserved">if</span> (!(x+1))
++ {
++ <span class="reserved">this</span>.drawLine = mkLinDott;
++ <span class="reserved">this</span>.mkOv = mkOvDott;
++ <span class="reserved">this</span>.drawRect = mkRectDott;
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (x-1 > 0)
++ {
++ <span class="reserved">this</span>.drawLine = mkLin2D;
++ <span class="reserved">this</span>.mkOv = mkOv2D;
++ <span class="reserved">this</span>.drawRect = mkRect;
++ }
++ <span class="reserved">else</span>
++ {
++ <span class="reserved">this</span>.drawLine = mkLin;
++ <span class="reserved">this</span>.mkOv = mkOv;
++ <span class="reserved">this</span>.drawRect = mkRect;
++ }
++ };
++
++
++ <span class="reserved">this</span>.setPrintable = <span class="reserved">function</span>(arg)
++ {
++ <span class="reserved">this</span>.printable = arg;
++ <span class="reserved">if</span> (jg_fast)
++ {
++ <span class="reserved">this</span>.mkDiv = mkDivIe;
++ <span class="reserved">this</span>.htmRpc = arg? htmPrtRpc : htmRpc;
++ }
++ <span class="reserved">else</span> <span class="reserved">this</span>.mkDiv = jg_n4? mkLyr : arg? mkDivPrt : mkDiv;
++ };
++
++
++ <span class="reserved">this</span>.setFont = <span class="reserved">function</span>(fam, sz, sty)
++ {
++ <span class="reserved">this</span>.ftFam = fam;
++ <span class="reserved">this</span>.ftSz = sz;
++ <span class="reserved">this</span>.ftSty = sty || Font.PLAIN;
++ };
++
++
++ <span class="reserved">this</span>.drawPolyline = <span class="reserved">this</span>.drawPolyLine = <span class="reserved">function</span>(x, y, s)
++ {
++ <span class="reserved">for</span> (var i=0 ; i<x.length-1 ; i++ )
++ <span class="reserved">this</span>.drawLine(x[i], y[i], x[i+1], y[i+1]);
++ };
++
++
++ <span class="reserved">this</span>.fillRect = <span class="reserved">function</span>(x, y, w, h)
++ {
++ <span class="reserved">this</span>.mkDiv(x, y, w, h);
++ };
++
++
++ <span class="reserved">this</span>.drawPolygon = <span class="reserved">function</span>(x, y)
++ {
++ <span class="reserved">this</span>.drawPolyline(x, y);
++ <span class="reserved">this</span>.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]);
++ };
++
++
++ <span class="reserved">this</span>.drawEllipse = <span class="reserved">this</span>.drawOval = <span class="reserved">function</span>(x, y, w, h)
++ {
++ <span class="reserved">this</span>.mkOv(x, y, w, h);
++ };
++
++
++ <span class="reserved">this</span>.fillEllipse = <span class="reserved">this</span>.fillOval = <span class="reserved">function</span>(left, top, w, h)
++ {
++ var a = (w -= 1)>>1, b = (h -= 1)>>1,
++ wod = (w&1)+1, hod = (h&1)+1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ ox = 0, oy = b,
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,
++ st = (aa2>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa2*((b<<1)-1),
++ pxl, dw, dh;
++ <span class="reserved">if</span> (w+1) <span class="reserved">while</span> (y > 0)
++ {
++ <span class="reserved">if</span> (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (tt < 0)
++ {
++ st += bb*((x<<1)+3) - aa4*(y-1);
++ pxl = cx-x;
++ dw = (x<<1)+wod;
++ tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3);
++ dh = oy-y;
++ <span class="reserved">this</span>.mkDiv(pxl, cy-oy, dw, dh);
++ <span class="reserved">this</span>.mkDiv(pxl, cy+oy-dh+hod, dw, dh);
++ ox = x;
++ oy = y;
++ }
++ <span class="reserved">else</span>
++ {
++ tt -= aa2*((y<<1)-3);
++ st -= aa4*(--y);
++ }
++ }
++ <span class="reserved">this</span>.mkDiv(cx-a, cy-oy, w+1, (oy<<1)+hod);
++ };
++
++
++
++<span class="comment">/* fillPolygon method, implemented by Matthieu Haller.
++This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.
++C source of GD 1.8.4 found at http://www.boutell.com/gd/
++
++THANKS to Kirsten Schulz for the polygon fixes!
++
++The intersection finding technique of this code could be improved
++by remembering the previous intertersection, and by using the slope.
++That could help to adjust intersections to produce a nice
++interior_extrema. */</span>
++ <span class="reserved">this</span>.fillPolygon = <span class="reserved">function</span>(array_x, array_y)
++ {
++ var i;
++ var y;
++ var miny, maxy;
++ var x1, y1;
++ var x2, y2;
++ var ind1, ind2;
++ var ints;
++
++ var n = array_x.length;
++
++ <span class="reserved">if</span> (!n) <span class="reserved">return</span>;
++
++
++ miny = array_y[0];
++ maxy = array_y[0];
++ <span class="reserved">for</span> (i = 1; i < n; i++)
++ {
++ <span class="reserved">if</span> (array_y[i] < miny)
++ miny = array_y[i];
++
++ <span class="reserved">if</span> (array_y[i] > maxy)
++ maxy = array_y[i];
++ }
++ <span class="reserved">for</span> (y = miny; y <= maxy; y++)
++ {
++ var polyInts = new Array();
++ ints = 0;
++ <span class="reserved">for</span> (i = 0; i < n; i++)
++ {
++ <span class="reserved">if</span> (!i)
++ {
++ ind1 = n-1;
++ ind2 = 0;
++ }
++ <span class="reserved">else</span>
++ {
++ ind1 = i-1;
++ ind2 = i;
++ }
++ y1 = array_y[ind1];
++ y2 = array_y[ind2];
++ <span class="reserved">if</span> (y1 < y2)
++ {
++ x1 = array_x[ind1];
++ x2 = array_x[ind2];
++ }
++ <span class="reserved">else</span> <span class="reserved">if</span> (y1 > y2)
++ {
++ y2 = array_y[ind1];
++ y1 = array_y[ind2];
++ x2 = array_x[ind1];
++ x1 = array_x[ind2];
++ }
++ <span class="reserved">else</span> continue;
++
++ <span class="comment">// modified 11. 2. 2004 Walter Zorn</span>
++ <span class="reserved">if</span> ((y >= y1) && (y < y2))
++ polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
++
++ <span class="reserved">else</span> <span class="reserved">if</span> ((y == maxy) && (y > y1) && (y <= y2))
++ polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
++ }
++ polyInts.sort(integer_compare);
++ <span class="reserved">for</span> (i = 0; i < ints; i+=2)
++ <span class="reserved">this</span>.mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1);
++ }
++ };
++
++
++ <span class="reserved">this</span>.drawString = <span class="reserved">function</span>(txt, x, y)
++ {
++ <span class="reserved">this</span>.htm += <span class="literal">'<div style="position:absolute;white-space:nowrap;'</span>+
++ <span class="literal">'left:'</span> + x + <span class="literal">'px;'</span>+
++ <span class="literal">'top:'</span> + y + <span class="literal">'px;'</span>+
++ <span class="literal">'font-family:'</span> + <span class="reserved">this</span>.ftFam + <span class="literal">';'</span>+
++ <span class="literal">'font-size:'</span> + <span class="reserved">this</span>.ftSz + <span class="literal">';'</span>+
++ <span class="literal">'color:'</span> + <span class="reserved">this</span>.color + <span class="literal">';'</span> + <span class="reserved">this</span>.ftSty + <span class="literal">'">'</span>+
++ txt +
++ <span class="literal">'<\/div>'</span>;
++ }
++
++
++ <span class="reserved">this</span>.drawImage = <span class="reserved">function</span>(imgSrc, x, y, w, h)
++ {
++ <span class="reserved">this</span>.htm += <span class="literal">'<div style="position:absolute;'</span>+
++ <span class="literal">'left:'</span> + x + <span class="literal">'px;'</span>+
++ <span class="literal">'top:'</span> + y + <span class="literal">'px;'</span>+
++ <span class="literal">'width:'</span> + w + <span class="literal">';'</span>+
++ <span class="literal">'height:'</span> + h + <span class="literal">';">'</span>+
++ <span class="literal">'<img src="'</span> + imgSrc + <span class="literal">'" width="'</span> + w + <span class="literal">'" height="'</span> + h + <span class="literal">'">'</span>+
++ <span class="literal">'<\/div>'</span>;
++ }
++
++
++ <span class="reserved">this</span>.clear = <span class="reserved">function</span>()
++ {
++ <span class="reserved">this</span>.htm = <span class="literal">""</span>;
++ <span class="reserved">if</span> (<span class="reserved">this</span>.cnv) <span class="reserved">this</span>.cnv.innerHTML = <span class="reserved">this</span>.defhtm;
++ };
++
++
++ <span class="reserved">this</span>.mkOvQds = <span class="reserved">function</span>(cx, cy, xl, xr, yt, yb, w, h)
++ {
++ <span class="reserved">this</span>.mkDiv(xr+cx, yt+cy, w, h);
++ <span class="reserved">this</span>.mkDiv(xr+cx, yb+cy, w, h);
++ <span class="reserved">this</span>.mkDiv(xl+cx, yb+cy, w, h);
++ <span class="reserved">this</span>.mkDiv(xl+cx, yt+cy, w, h);
++ };
++
++ <span class="reserved">this</span>.setStroke(1);
++ <span class="reserved">this</span>.setFont(<span class="literal">'verdana,geneva,helvetica,sans-serif'</span>, String.fromCharCode(0x31, 0x32, 0x70, 0x78), Font.PLAIN);
++ <span class="reserved">this</span>.color = <span class="literal">'#000000'</span>;
++ <span class="reserved">this</span>.htm = <span class="literal">''</span>;
++ <span class="reserved">this</span>.wnd = wnd || window;
++
++ <span class="reserved">if</span> (!(jg_ie || jg_dom || jg_ihtm)) chkDHTM();
++ <span class="reserved">if</span> (typeof id != <span class="literal">'string'</span> || !id) <span class="reserved">this</span>.paint = pntDoc;
++ <span class="reserved">else</span>
++ {
++ <span class="reserved">this</span>.cnv = document.all? (<span class="reserved">this</span>.wnd.document.all[id] || null)
++ : document.getElementById? (<span class="reserved">this</span>.wnd.document.getElementById(id) || null)
++ : null;
++ <span class="reserved">this</span>.defhtm = (<span class="reserved">this</span>.cnv && <span class="reserved">this</span>.cnv.innerHTML)? <span class="reserved">this</span>.cnv.innerHTML : <span class="literal">''</span>;
++ <span class="reserved">this</span>.paint = jg_dom? pntCnvDom : jg_ie? pntCnvIe : jg_ihtm? pntCnvIhtm : pntCnv;
++ }
++
++ <span class="reserved">this</span>.setPrintable(false);
++}
++
++
++
++<span class="reserved">function</span> integer_compare(x,y)
++{
++ <span class="reserved">return</span> (x < y) ? -1 : ((x > y)*1);
++}
++
++</pre>
++ <hr>
++
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td>
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top"><em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<font size="-1">
++
++</font>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:23 2008</div>
++</body>
++</html>
+Index: documents/jsdoc/overview-summary.html
+===================================================================
+--- documents/jsdoc/overview-summary.html (revision 0)
++++ documents/jsdoc/overview-summary.html (revision 0)
+@@ -0,0 +1,166 @@
++<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<html>
++<head>
++<title>
++ Overview
++</title>
++<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
++<script>
++function asd() {
++
++ parent.document.title=" Overview";
++
++}
++</script>
++</head>
++<body bgcolor="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>Overview</b></font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <font class="NavBarFont1">File</font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top">
++<em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<center>
++
++ <h2>JSDoc Documentation</h2>
++
++</center>
++
++
++<h4>Summary</h4>
++<p>
++
++ No summary generated for these documents.
++
++</p>
++
++<hr>
++
++
++ <table border="1" cellpadding="3" cellspacing="0" width="100%">
++ <tr bgcolor="#CCCCFF" class="TableHeadingColor">
++ <td colspan=2><font size="+2">
++
++ <b>File Summary</b>
++
++ </font></td>
++ </tr>
++
++ <tr bgcolor="white" class="TableRowColor">
++ <td width="15%"><b><a href="overview-summary-geometry.js.html">geometry.js</a></b></td>
++ <td> </td>
++ </tr>
++
++ </table>
++ <hr/>
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++
++
++<!-- ========== START OF NAVBAR ========== -->
++<a name="navbar_top"><!-- --></a>
++<table border="0" width="100%" cellpadding="1" cellspacing="0">
++<tr>
++<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
++<a name="navbar_top_firstrow"><!-- --></a>
++<table border="0" cellpadding="0" cellspacing="3">
++ <tr align="center" valign="top">
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>Overview</b></font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <font class="NavBarFont1">File</font> </td>
++
++
++ <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td>
++ <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td>
++ </tr>
++</table>
++</td>
++<td bgcolor="#EEEEFF" align="right" valign="top"><em>
++<b></b></em>
++</td>
++</tr>
++
++<tr>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ PREV
++ NEXT</font></td>
++<td bgcolor="white" class="NavBarCell2"><font size="-2">
++ <a href="index.html" target="_top"><b>FRAMES</b></a>
++ <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
++
++<script>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</script>
++<noscript>
++<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
++</noscript>
++</font></td>
++</tr>
++</table>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<font size="-1">
++
++</font>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</body>
++</html>
+Index: documents/jsdoc/overview-tree.html
+===================================================================
+--- documents/jsdoc/overview-tree.html (revision 0)
++++ documents/jsdoc/overview-tree.html (revision 0)
+@@ -0,0 +1,132 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++ Class Hierarchy
++</TITLE>
++<LINK REL="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++<SCRIPT>
++function asd()
++{
++parent.document.title=" Class Hierarchy";
++}
++</SCRIPT>
++</HEAD>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_top"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_top_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"><A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><b>Overview</b></A></FONT> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><b>Tree</b></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><b>Index</b></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><b>Help</b></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD BGCOLOR="#FFFFFF" ALIGN="right" VALIGN="top"><EM>
++<B></B></EM>
++</TD>
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ PREV
++ NEXT</FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<H2>Class Hierarchy</H2>
++
++<UL><LI TYPE="circle">Object</LI><UL>
++ <LI TYPE="circle"><B><a href='Canvas.html'>Canvas</a></B></LI>
++ <LI TYPE="circle"><B><a href='GeomType.html'>GeomType</a></B></LI>
++ <LI TYPE="circle"><B><a href='Highlight.html'>Highlight</a></B></LI>
++ <LI TYPE="circle">
++ List</LI>
++ <UL>
++ <LI TYPE="circle"><B><a href='Geometry.html'>Geometry</a></B></LI>
++ <LI TYPE="circle"><B><a href='GeometryArray.html'>GeometryArray</a></B></LI>
++ <LI TYPE="circle"><B><a href='MultiGeometry.html'>MultiGeometry</a></B></LI> </UL>
++ <LI TYPE="circle"><B><a href='Snapping.html'>Snapping</a></B></LI>
++ <LI TYPE="circle"><B><a href='Wfs_element.html'>Wfs_element</a></B></LI> </UL></UL>
++
++<HR>
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_top"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_top_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"><A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><b>Overview</b></A></FONT> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><b>Tree</b></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><b>Index</b></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><b>Help</b></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD BGCOLOR="#FFFFFF" ALIGN="right" VALIGN="top"><EM>
++<B></B></EM>
++</TD>
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ PREV
++ NEXT</FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++
++<hr>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" parent="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Point.html
+===================================================================
+--- documents/jsdoc/Point.html (revision 0)
++++ documents/jsdoc/Point.html (revision 0)
+@@ -0,0 +1,576 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Point
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Point";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-point.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Point</H2>
++<PRE>Object
++ |
++ +--<b>Point</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Point</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-point.js.html'>point.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#x">x</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Point()">Point</A></B>(x,y)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#dist">dist</A></B>(p)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#dividedBy">dividedBy</A></B>(c)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#equals">equals</A></B>(p)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#minus">minus</A></B>(p)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#plus">plus</A></B>(p)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#round">round</A></B>(numOfDigits)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#times">times</A></B>(c)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#toString">toString</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="x"><!-- --></A>
++ <H3>x</H3>
++ <PRE>Object <B>x</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Point()"><!-- --></A><H3>
++Point</H3>
++<PRE><B>Point</B>(x,y)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="dist"><!-- --></A>
++ <H3>dist</H3>
++ <PRE>Object <B>dist</B>(p)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="dividedBy"><!-- --></A>
++ <H3>dividedBy</H3>
++ <PRE>Object <B>dividedBy</B>(c)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="equals"><!-- --></A>
++ <H3>equals</H3>
++ <PRE>Object <B>equals</B>(p)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="minus"><!-- --></A>
++ <H3>minus</H3>
++ <PRE>Object <B>minus</B>(p)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="plus"><!-- --></A>
++ <H3>plus</H3>
++ <PRE>Object <B>plus</B>(p)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="round"><!-- --></A>
++ <H3>round</H3>
++ <PRE>Object <B>round</B>(numOfDigits)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="times"><!-- --></A>
++ <H3>times</H3>
++ <PRE>Object <B>times</B>(c)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="toString"><!-- --></A>
++ <H3>toString</H3>
++ <PRE>void <B>toString</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-point.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:22 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/Snapping.html
+===================================================================
+--- documents/jsdoc/Snapping.html (revision 0)
++++ documents/jsdoc/Snapping.html (revision 0)
+@@ -0,0 +1,471 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Snapping
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Snapping";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="MultiGeometry.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Wfs_element.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Snapping</H2>
++<PRE>Object
++ |
++ +--<b>Snapping</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Snapping</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Snapping()">Snapping</A></B>(aTarget,aTolerance,aColor,aZIndex)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#add">add</A></B>(aPoint)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#check">check</A></B>(currPoint)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#clean">clean</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getSnappedPoint">getSnappedPoint</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#isSnapped">isSnapped</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> void</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#store">store</A></B>(geom,point)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Snapping()"><!-- --></A><H3>
++Snapping</H3>
++<PRE><B>Snapping</B>(aTarget,aTolerance,aColor,aZIndex)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="add"><!-- --></A>
++ <H3>add</H3>
++ <PRE>void <B>add</B>(aPoint)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="check"><!-- --></A>
++ <H3>check</H3>
++ <PRE>void <B>check</B>(currPoint)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="clean"><!-- --></A>
++ <H3>clean</H3>
++ <PRE>void <B>clean</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getSnappedPoint"><!-- --></A>
++ <H3>getSnappedPoint</H3>
++ <PRE>Object <B>getSnappedPoint</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="isSnapped"><!-- --></A>
++ <H3>isSnapped</H3>
++ <PRE>Object <B>isSnapped</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="store"><!-- --></A>
++ <H3>store</H3>
++ <PRE>void <B>store</B>(geom,point)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="MultiGeometry.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="Wfs_element.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/stylesheet.css
+===================================================================
+--- documents/jsdoc/stylesheet.css (revision 0)
++++ documents/jsdoc/stylesheet.css (revision 0)
+@@ -0,0 +1,39 @@
++/* JSDoc style sheet */
++
++/* Define colors, fonts and other style attributes here to override the defaults */
++
++/* Page background color */
++body { background-color: #FFFFFF }
++
++/* Table colors */
++.TableHeadingColor { background: #CCCCFF } /* Dark mauve */
++.TableSubHeadingColor { background: #EEEEFF } /* Light mauve */
++.TableRowColor { background: #FFFFFF } /* White */
++
++/* Font used in left-hand frame lists */
++.FrameTitleFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
++.FrameHeadingFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
++.FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
++
++/* Example of smaller, sans-serif font in frames */
++/* .FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */
++
++/* Navigation bar fonts and colors */
++.NavBarCell1 { background-color:#EEEEFF;}/* Light mauve */
++.NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */
++.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;}
++.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
++
++.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
++.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
++
++.jsdoc_ctime { font-family: Arial, Helvetica, sans-serif; font-size: 9pt;
++ text-align: right }
++
++/* Sourcecode view */
++.sourceview { background: #FFFFFF }
++.attrib { color: #DD7777 }
++.comment { color: #55AA55 }
++.reserved { color: #FF5555 }
++.literal { color: #5555FF }
++
+Index: documents/jsdoc/Wfs_element.html
+===================================================================
+--- documents/jsdoc/Wfs_element.html (revision 0)
++++ documents/jsdoc/Wfs_element.html (revision 0)
+@@ -0,0 +1,372 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++Wfs_element
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="Wfs_element";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Snapping.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class Wfs_element</H2>
++<PRE>Object
++ |
++ +--<b>Wfs_element</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>Wfs_element</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-geometry.js.html'>geometry.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#Wfs_element()">Wfs_element</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++<A NAME="method_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Method Summary</B></FONT></TD>
++</TR>
++
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#count">count</A></B>()
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getElementIndexByName">getElementIndexByName</A></B>(elementName)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
++ <FONT SIZE="-1">
++ <CODE> Object</CODE>
++ </FONT>
++ </TD>
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#getElementValueByName">getElementValueByName</A></B>(elementName)
++ </CODE>
++ <BR>
++
++
++ </TD>
++ </TR>
++
++
++</TABLE>
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="Wfs_element()"><!-- --></A><H3>
++Wfs_element</H3>
++<PRE><B>Wfs_element</B>()</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++<A NAME="method_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2">
++ <B>Method Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<!-- One single method detail entry -->
++
++ <A NAME="count"><!-- --></A>
++ <H3>count</H3>
++ <PRE>Object <B>count</B>()</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getElementIndexByName"><!-- --></A>
++ <H3>getElementIndexByName</H3>
++ <PRE>Object <B>getElementIndexByName</B>(elementName)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++ <A NAME="getElementValueByName"><!-- --></A>
++ <H3>getElementValueByName</H3>
++ <PRE>Object <B>getElementValueByName</B>(elementName)</PRE>
++
++
++ <!-- METHOD PARAMETERS START -->
++
++ <!-- METHOD PARAMETERS END -->
++
++
++
++ <!-- ADDITIONAL ATTRIBUTES START -->
++
++ <!-- ADDITIONAL ATTRIBUTES END -->
++<HR>
++
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-geometry.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="Snapping.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 15:41:17 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/wms_const.html
+===================================================================
+--- documents/jsdoc/wms_const.html (revision 0)
++++ documents/jsdoc/wms_const.html (revision 0)
+@@ -0,0 +1,289 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++wms_const
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="wms_const";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map_obj.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="wms_layer.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class wms_const</H2>
++<PRE>Object
++ |
++ +--<b>wms_const</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>wms_const</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map_obj.js.html'>map_obj.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#wms_id">wms_id</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#wms_const()">wms_const</A></B>(wms_id,wms_version,wms_title,wms_abstract,wms_getmap,wms_getfeatureinfo,wms_getlegendurl,wms_filter,gui_wms_mapformat,gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="wms_id"><!-- --></A>
++ <H3>wms_id</H3>
++ <PRE>Object <B>wms_id</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="wms_const()"><!-- --></A><H3>
++wms_const</H3>
++<PRE><B>wms_const</B>(wms_id,wms_version,wms_title,wms_abstract,wms_getmap,wms_getfeatureinfo,wms_getlegendurl,wms_filter,gui_wms_mapformat,gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map_obj.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <A HREF="wms_layer.html"><B>NEXT CLASS</B></A></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:23 2008</div>
++</BODY>
++</HTML>
+Index: documents/jsdoc/wms_layer.html
+===================================================================
+--- documents/jsdoc/wms_layer.html (revision 0)
++++ documents/jsdoc/wms_layer.html (revision 0)
+@@ -0,0 +1,289 @@
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
++<!--NewPage-->
++<HTML>
++<HEAD>
++<TITLE>
++wms_layer
++</TITLE>
++<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
++</HEAD>
++<SCRIPT>
++function asd()
++{
++parent.document.title="wms_layer";
++}
++</SCRIPT>
++<BODY BGCOLOR="white" onload="asd();">
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map_obj.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="wms_const.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++<!-- =========== END OF NAVBAR =========== -->
++<HR>
++
++<!-- ======== START OF CLASS DATA ======== -->
++<H2>Class wms_layer</H2>
++<PRE>Object
++ |
++ +--<b>wms_layer</b>
++</PRE>
++
++
++<HR>
++<DL>
++ <!-- Class definition -->
++ <DT>class
++ <B>wms_layer</B>
++
++
++</DL>
++
++ <P>
++ <I>Defined in <a href='overview-summary-map_obj.js.html'>map_obj.js</a></I><BR/><BR/>
++ </P>
++
++ <HR>
++
++<!-- ======== NESTED CLASS SUMMARY ======== -->
++
++<!-- ======== END NESTED CLASS SUMMARY ======== -->
++
++
++<!-- =========== FIELD SUMMARY =========== -->
++
++ <A NAME="field_summary"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=2><FONT SIZE="+2">
++ <B>Field Summary</B></FONT></TD>
++ </TR>
++
++ <!-- This is one instance field summary -->
++
++ <TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
++ <CODE> Object</CODE></FONT></TD>
++ <TD><CODE><B><A HREF="#layer_id">layer_id</A></B></CODE>
++ <BR>
++ </TD>
++ </TR>
++
++
++ </TABLE>
++
++
++
++
++
++<!-- =========== END FIELD SUMMARY =========== -->
++
++
++<!-- ======== CONSTRUCTOR SUMMARY ======== -->
++
++<A NAME="constructor_summary"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++<TD COLSPAN=2><FONT SIZE="+2">
++<B>Constructor Summary</B></FONT></TD>
++</TR>
++<TR BGCOLOR="white" CLASS="TableRowColor">
++ <TD>
++ <CODE>
++ <B>
++ <A HREF="#wms_layer()">wms_layer</A></B>(layer_parent,wms_layer_uid,layer_name,layer_title,layer_dataurl_href,layer_pos,layer_queryable,layer_minscale,layer_maxscale,layer_metadataurl,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,gui_layer_wfs_featuretype)
++ </CODE>
++ <BR>
++
++
++ </TD>
++</TR>
++</TABLE>
++
++<!-- ======== END CONSTRUCTOR SUMMARY ======== -->
++
++
++
++<!-- ========== METHOD SUMMARY =========== -->
++
++
++
++<P>
++<!-- ========== END METHOD SUMMARY =========== -->
++
++
++<!-- ============ FIELD DETAIL START =========== -->
++
++ <A NAME="field_detail"><!-- --></A>
++ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
++ </TR>
++ </TABLE>
++
++
++ <A NAME="layer_id"><!-- --></A>
++ <H3>layer_id</H3>
++ <PRE>Object <B>layer_id</B></PRE>
++ <UL>
++
++
++ </UL>
++ <HR>
++
++
++
++<!-- ============ FIELD DETAIL END =========== -->
++
++ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
++
++<A NAME="constructor_detail"><!-- --></A>
++<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
++ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
++ <TD COLSPAN=1>
++ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
++ </TD>
++ </TR>
++</TABLE>
++
++<A NAME="wms_layer()"><!-- --></A><H3>
++wms_layer</H3>
++<PRE><B>wms_layer</B>(layer_parent,wms_layer_uid,layer_name,layer_title,layer_dataurl_href,layer_pos,layer_queryable,layer_minscale,layer_maxscale,layer_metadataurl,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,gui_layer_wfs_featuretype)</PRE>
++
++
++
++
++ </UL>
++
++
++<!-- Constructor return value(s) -->
++
++<!-- End constructor return value(s) -->
++
++<!-- ADDITIONAL ATTRIBUTES -->
++
++<HR/>
++<!-- END ADDITIONAL ATTRIBUTES -->
++
++<!-- ========= CONSTRUCTOR DETAIL END ======== -->
++
++
++<!-- ============ METHOD DETAIL START ========== -->
++
++
++<!-- ============ METHOD DETAIL END ========== -->
++
++<!-- ========= END OF CLASS DATA ========= -->
++
++<!-- ========== START OF NAVBAR ========== -->
++<A NAME="navbar_bottom"><!-- --></A>
++<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
++<TR>
++<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
++<A NAME="navbar_bottom_firstrow"><!-- --></A>
++<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
++ <TR ALIGN="center" VALIGN="top">
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-map_obj.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A> </TD>
++ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A> </TD>
++ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!-- </TD-->
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
++ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
++ </TR>
++</TABLE>
++</TD>
++<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
++<B></B>
++</EM>
++</TD
++</TR>
++
++<TR>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="wms_const.html"><B>PREV CLASS</B></A><!--
++ NEXT CLASS
++-->
++ <B>NEXT CLASS</B></FONT></TD>
++<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
++ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
++ <A HREF="" TARGET="_top"><B>NO FRAMES</B></A>
++
++<SCRIPT>
++ <!--
++ if(window==top) {
++ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
++ }
++ //-->
++</SCRIPT>
++<NOSCRIPT>
++<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
++</NOSCRIPT>
++</FONT></TD>
++</TR>
++<TR>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++ SUMMARY: <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
++<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
++DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
++</TR>
++</TABLE>
++
++<!-- =========== END OF NAVBAR =========== -->
++
++<HR>
++<FONT SIZE="-1">
++
++</FONT>
++<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Apr 7 14:39:23 2008</div>
++</BODY>
++</HTML>
+Index: http/classes/class_administration.php
+===================================================================
+--- http/classes/class_administration.php (revision 2361)
++++ http/classes/class_administration.php (working copy)
+@@ -760,9 +760,13 @@
+ }
+
+ function checkModulePermission($arrayGuis, $modulePath, $column){
+- $check = true;
++ $check = CHECK;
++
+ if($check == true){
+ $perm = false;
++ if (!preg_match("/[a-z_]+/", $column)) {
++ return false;
++ }
+ if(count($arrayGuis)>0){
+ $v = array();
+ $t = array();
+@@ -790,6 +794,61 @@
+ }
+ }
+
++ /**
++ * Checks if a user is allowed to access a GUI element
++ *
++ * @return boolean
++ * @param $arrayGuis Object
++ * @param $modulePath Object
++ * @param $elementTag Object
++ */
++ function checkModulePermission_new($userId, $modulePath, $elementTag){
++ if (CHECK) {
++ $arrayGuis = $this->getGuisByPermission($userId, true);
++
++ switch ($elementTag) {
++ case "a" :
++ $column = "e_attributes";
++ $pattern = "/^.*href\s*=\s*(\'|\")\.\.((\/[a-zA-Z0-9_\/\.]+)+)(\?|\'|\").*$/";
++ $replace = "$2";
++ break;
++ case "iframe" :
++ $column = "e_src";
++ $pattern = "/^\.\.((\/[a-zA-Z0-9_\/\.]+)+)(\?|\'|\").*$/";
++ $replace = "$1";
++ break;
++ }
++
++ if ($column && count($arrayGuis) > 0) {
++ $v = array();
++ $t = array();
++ $sql = "SELECT DISTINCT ".$column." FROM gui_element WHERE fkey_gui_id IN (";
++ for($i=0; $i<count($arrayGuis); $i++){
++ if($i > 0){ $sql .= ","; }
++ $sql .= "$".($i+1);
++ array_push($v,$arrayGuis[$i]);
++ array_push($t,'s');
++ }
++ $sql .= ") ORDER BY " . $column;
++ $res = db_prep_query($sql,$v,$t);
++ while($row = db_fetch_array($res)){
++ if ($row[$column]) {
++ if (preg_match($pattern, stripslashes($row[$column]))) {
++ $dbFilename = preg_replace($pattern, $replace, stripslashes($row[$column]));
++// $e = new mb_notice($dbFilename . " - " . $modulePath);
++
++ if(strpos($modulePath, $dbFilename) !== false){
++ return true;
++ }
++ }
++ }
++ }
++ }
++ return false;
++ }
++ return true;
++ }
++
+ function getWMSOWSstring($wms_id){
+ $sql = "SELECT wms_owsproxy FROM wms WHERE wms_id = $1 ";
+ $v = array($wms_id);
+Index: http/classes/class_gui.php
+===================================================================
+--- http/classes/class_gui.php (revision 2361)
++++ http/classes/class_gui.php (working copy)
+@@ -1,5 +1,4 @@
+ <?php
+-
+ # $Id$
+ # http://www.mapbender.org/index.php/class_gui.php
+ # Copyright (C) 2002 CCGIS
+@@ -19,18 +18,26 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+-class gui{
++/**
++ * GUI is a set of GUI elements and services.
++ */
++class gui {
+
+- function gui() {
++ public function __construct () {
+ }
+
+- // CB - returns true if a gui '$gui_id' exists
+- function guiExists($gui_id){
+- $sql = "SELECT * FROM gui ";
+- $sql .= "WHERE gui_id = $1";
++ /**
++ * Checks if a GUI with a given ID exists in the database
++ *
++ * @param integer $gui_id the ID of the GUI that is being checked
++ * @return boolean true if a gui '$gui_id' exists; else false
++ */
++ public function guiExists ($gui_id){
++ $sql = "SELECT * FROM gui WHERE gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+@@ -35,236 +42,177 @@
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+ $row = db_fetch_array($res);
+- if ($row) return true;
+- else return false;
++ if ($row) {
++ return true;
++ }
++ return false;
+ }
+
+- // CB - deletes a GUI $guiId and all its links to users, layers etc.
+- function deleteGui ($guiId) {
++
++ /**
++ * Deletes a GUI $guiId and all its links to users, layers etc.
++ *
++ * @param Integer $guiId the GUI that is going to be deleted
++ * @return boolean true if the deletion succeded, else false
++ */
++ public function deleteGui ($guiId) {
+ $guiList = $guiId;
+
+- $sql = "BEGIN";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ $sql = array();
++ $v = array();
++ $t = array();
+
+- $sql = "DELETE FROM gui WHERE gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "BEGIN");
++ array_push($v, array());
++ array_push($t, array());
++
++ array_push($sql, "DELETE FROM gui WHERE gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_element WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_element WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
++
++ array_push($sql, "DELETE FROM gui_element_vars WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_element_vars WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_layer WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_layer WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_mb_group WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_mb_group WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_mb_user WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_mb_user WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_treegde WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_treegde WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_wfs WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_wfs WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "DELETE FROM gui_wms WHERE fkey_gui_id = $1");
++ array_push($v, array($guiList));
++ array_push($t, array('s'));
+
+- $sql = "DELETE FROM gui_wms WHERE fkey_gui_id = $1";
+- $v = array($guiList);
+- $t = array('s');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "COMMIT");
++ array_push($v, array());
++ array_push($t, array());
+
+- // if $error is true, the transaction is aborted -> rollback
+- if (!$error) {
+- $sql = "COMMIT";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
+- }
+- //if $error is false, the transaction is executed -> commit
+- else {
+- $sql = "ROLLBACK";
+- $res = db_query($sql);
++ // execute all SQLs
++ for ($i = 0; $i < count($sql); $i++) {
++ $res = db_prep_query($sql[$i], $v[$i], $t[$i]);
++ // if an SQL fails, send a ROLLBACK and return false
+ if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
++ db_query("ROLLBACK");
++ return false;
+ }
+ }
+- return !$error;
++ return true;
+ }
+
+- // CB - rename a GUI
+- function renameGui ($guiId, $newGuiName) {
+- $error = false;
++ /** Renames the GUI $guiID to $newGUIName
++ *
++ * @param Integer $guiId ID of the GUI
++ * @param String $newGuiName the new name of the GUI
++ * @return boolean true if the renaming succeded, else false
++ */
++ public function renameGui ($guiId, $newGuiName) {
+ if ($this->copyGui($guiId, $newGuiName, true)) {
+ $this->deleteGui($guiId);
++ return true;
+ }
+- else {
+- $error = true;
+- }
+- return !$error;
++ return false;
+ }
+
+- // CB - copies a GUI $guiId and all its links to users, layers etc. to GUI $newGuiName
+- function copyGui ($guiId, $newGuiName, $withUsers) {
+- $error = false;
++ /**
++ *
++ * Copies a GUI $guiId and all its links to users, layers etc. to GUI $newGuiName
++ *
++ * @param Integer $guiId ID of the GUI
++ * @param String $newGuiName the new name of the GUI
++ * @param boolean $withUsers true if the users, that may access the GUI $guiId, shall have access to the new GUI; else false.
++ *
++ * @return boolean true if the renaming succeded, else false
++ */
++ public function copyGui ($guiId, $newGuiName, $withUsers) {
+ $guiList = $guiId;
+ if (!$this->guiExists($newGuiName)) {
+- $sql = "BEGIN";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++
++ $sql = array();
++ $v = array();
++ $t = array();
++
++ array_push($sql, "BEGIN");
++ array_push($v, array());
++ array_push($t, array());
+
+- $sql = "INSERT INTO gui (gui_id, gui_name, gui_description, gui_public) SELECT '" . $newGuiName . "', '" . $newGuiName . "',gui_description, gui_public FROM gui WHERE gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "INSERT INTO gui (gui_id, gui_name, gui_description, gui_public) SELECT $1, $2, gui_description, gui_public FROM gui WHERE gui_id = $3;");
++ array_push($v, array ($newGuiName, $newGuiName, $guiList));
++ array_push($t, array ("s", "s", "s"));;
++
++ array_push($sql, "INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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) SELECT $1, e_id, e_pos, e_public, e_comment, 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 FROM gui_element WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+
+- $sql = "INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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) SELECT '" . $newGuiName . "', e_id, e_pos, e_public, e_comment, 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 FROM gui_element WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "INSERT INTO gui_element_vars (fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) SELECT $1, fkey_e_id, var_name, var_value, context, var_type FROM gui_element_vars WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+
+- $sql = "INSERT INTO gui_element_vars (fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) SELECT '" . $newGuiName . "', fkey_e_id, var_name, var_value, context, var_type FROM gui_element_vars WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "INSERT INTO gui_layer (fkey_gui_id, fkey_layer_id, gui_layer_wms_id, gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, gui_layer_querylayer, gui_layer_minscale, gui_layer_maxscale, gui_layer_priority, gui_layer_style, gui_layer_wfs_featuretype) SELECT $1, fkey_layer_id, gui_layer_wms_id, gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, gui_layer_querylayer, gui_layer_minscale, gui_layer_maxscale, gui_layer_priority, gui_layer_style, gui_layer_wfs_featuretype FROM gui_layer WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+
+- $sql = "INSERT INTO gui_layer (fkey_gui_id, fkey_layer_id, gui_layer_wms_id, gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, gui_layer_querylayer, gui_layer_minscale, gui_layer_maxscale, gui_layer_priority, gui_layer_style, gui_layer_wfs_featuretype) SELECT '" . $newGuiName . "', fkey_layer_id, gui_layer_wms_id, gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, gui_layer_querylayer, gui_layer_minscale, gui_layer_maxscale, gui_layer_priority, gui_layer_style, gui_layer_wfs_featuretype FROM gui_layer WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
+-
+- $sql = "INSERT INTO gui_mb_group (fkey_gui_id, fkey_mb_group_id, mb_group_type) SELECT '" . $newGuiName . "', fkey_mb_group_id, mb_group_type FROM gui_mb_group WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ if ($withUsers == true) {
++ /* group of original gui is copied as well */
++ array_push($sql, "INSERT INTO gui_mb_group (fkey_gui_id, fkey_mb_group_id, mb_group_type) SELECT $1, fkey_mb_group_id, mb_group_type FROM gui_mb_group WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+
+- if ($withUsers == true) {
+ /* users of original gui are copied as well */
+- $sql = "INSERT INTO gui_mb_user (fkey_gui_id, fkey_mb_user_id, mb_user_type) SELECT '" . $newGuiName . "', fkey_mb_user_id, mb_user_type FROM gui_mb_user WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "INSERT INTO gui_mb_user (fkey_gui_id, fkey_mb_user_id, mb_user_type) SELECT $1, fkey_mb_user_id, mb_user_type FROM gui_mb_user WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+ }
+ else {
+ // users of original gui are not copied, the current user is set as owner
+- $sql = "INSERT INTO gui_mb_user (fkey_gui_id, fkey_mb_user_id, mb_user_type) VALUES ($1, $2, 'owner')";
+- $v = array($newGuiName, $_SESSION["mb_user_id"]);
+- $t = array('s', 'i');
+- $res = db_prep_query($sql,$v,$t);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
+- }
+- $sql = "INSERT INTO gui_treegde (fkey_gui_id, fkey_layer_id, id, lft, rgt, my_layer_title, layer, wms_id) SELECT '" . $newGuiName . "', fkey_layer_id, id, lft, rgt, my_layer_title, layer, wms_id FROM gui_treegde WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
++ array_push($sql, "INSERT INTO gui_mb_user (fkey_gui_id, fkey_mb_user_id, mb_user_type) VALUES ($1, $2, 'owner')");
++ array_push($v, array($newGuiName, $_SESSION["mb_user_id"]));
++ array_push($t, array('s', 'i'));
+ }
++ array_push($sql, "INSERT INTO gui_treegde (fkey_gui_id, fkey_layer_id, id, lft, rgt, my_layer_title, layer, wms_id) SELECT $1, fkey_layer_id, id, lft, rgt, my_layer_title, layer, wms_id FROM gui_treegde WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+
+- $sql = "INSERT INTO gui_wfs (fkey_gui_id, fkey_wfs_id) SELECT '" . $newGuiName . "', fkey_wfs_id FROM gui_wfs WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "INSERT INTO gui_wfs (fkey_gui_id, fkey_wfs_id) SELECT $1, fkey_wfs_id FROM gui_wfs WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
+
+- $sql = "INSERT INTO gui_wms (fkey_gui_id, fkey_wms_id, gui_wms_position, gui_wms_mapformat, gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg, gui_wms_visible) SELECT '" . $newGuiName . "', fkey_wms_id, gui_wms_position, gui_wms_mapformat, gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg, gui_wms_visible FROM gui_wms WHERE fkey_gui_id = '" . $guiList . "';";
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
+- }
++ array_push($sql, "INSERT INTO gui_wms (fkey_gui_id, fkey_wms_id, gui_wms_position, gui_wms_mapformat, gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg, gui_wms_visible) SELECT $1, fkey_wms_id, gui_wms_position, gui_wms_mapformat, gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg, gui_wms_visible FROM gui_wms WHERE fkey_gui_id = $2;");
++ array_push($v, array($newGuiName, $guiList));
++ array_push($t, array("s", "s"));
++
++ array_push($sql, "COMMIT");
++ array_push($v, array());
++ array_push($t, array());
+
+- // if $error is false, the transaction is executed -> commit
+- if (!$error) {
+- $sql = "COMMIT";
+- }
+- else {
+- $sql = "ROLLBACK";
+- }
+- $res = db_query($sql);
+- if (!$res) {
+- $report .= "<br><br>" . $sql . "<br><br>" . db_error() . "<br>";
+- $error = true;
++ // execute all SQLs
++ for ($i = 0; $i < count($sql); $i++) {
++ $res = db_prep_query($sql[$i], $v[$i], $t[$i]);
++ // if an SQL fails, send a ROLLBACK and return false
++ if (!$res) {
++ db_query("ROLLBACK");
++ return false;
++ }
+ }
+- return !$error;
++ return true;
+ }
+ else {
+ echo "<script language='javascript'>";
+Index: http/classes/class_log.php
+===================================================================
+--- http/classes/class_log.php (revision 2361)
++++ http/classes/class_log.php (working copy)
+@@ -23,7 +23,7 @@
+ *modul "GET /map/http/ HTTP/1.1"
+ */
+
+-class log{
++class log {
+ var $dir = "../../log/";
+ var $log_username = true;
+
+@@ -32,12 +32,14 @@
+ * {'file' || 'db'}
+ */
+ var $logtype = 'db';
+-
+- function log($module,$req,$time_client){
++
++ function log($module,$req,$time_client,$type = ""){
+
+ $this->url = $req;
++ if($type == "")
++ $type = $this->logtype;
+
+- if($this->logtype == "file"){
++ if($type == "file"){
+ if(is_dir($this->dir)){
+ $logfile = $this->dir . "mb_access_" . date("Y_m_d") . ".log";
+ if(!$h = @fopen($logfile,"a")){
+@@ -65,7 +67,7 @@
+ }
+ }
+ }
+- else if($this->logtype == 'db'){
++ else if($type == 'db'){
+
+
+ include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+@@ -72,34 +74,14 @@
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+ for($i = 0; $i < count($this->url); $i++){
+- $sql = "INSERT INTO mb_log(";
+-
+- $sql .= "time_client,";
+- $sql .= "time_server,";
+- $sql .= "time_readable,";
+- $sql .= "mb_session,";
+- $sql .= "gui,";
+- $sql .= "module,";
+- $sql .= "ip,";
+- $sql .= "username,";
+- $sql .= "userid,";
+- $sql .= "request";
+-
+- $sql .= ") VALUES (";
++ $sql = "INSERT INTO mb_log (";
++ $sql .= "time_client, time_server, time_readable, mb_session, ";
++ $sql .= "gui, module, ip, username, userid, request";
++ $sql .= ") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)";
+
+- $sql .= "'".$time_client."',";
+- $sql .= "'".strtotime("now")."',";
+- $sql .= "'[".date("d/M/Y:H:i:s O")."]',";
+- $sql .= "'".SID."',";
+- $sql .= "'".$_SESSION["mb_user_gui"]."',";
+- $sql .= "'".$module."',";
+- $sql .= "'".$_SESSION["mb_user_ip"]."',";
+- $sql .= "'".$_SESSION["mb_user_name"]."',";
+- $sql .= "'".$_SESSION["mb_user_id"]."',";
+- $sql .= "'".$this->url[$i]."'";
+- $sql .= ")";
+-
+- $res = db_query($sql)or die(db_error());
++ $v = array($time_client, strtotime("now"), "[".date("d/M/Y:H:i:s O")."]", SID, $_SESSION["mb_user_gui"], $module, $_SESSION["mb_user_ip"], $_SESSION["mb_user_name"], $_SESSION["mb_user_id"], $this->url[$i]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "s", "s");
++ $res = db_prep_query($sql, $v, $t)or die(db_error());
+
+ if(!$res){
+ include_once(dirname(__FILE__)."/class_mb_exception.php");
+Index: http/classes/class_stripRequest.php
+===================================================================
+--- http/classes/class_stripRequest.php (revision 2361)
++++ http/classes/class_stripRequest.php (working copy)
+@@ -80,6 +80,7 @@
+ return $output;
+ }
+ }
++
+ function append($param){
+ $this->url .= "&".$param;
+ $this->encodeGET();
+Index: http/classes/class_wfs.php
+===================================================================
+--- http/classes/class_wfs.php (revision 2361)
++++ http/classes/class_wfs.php (working copy)
+@@ -223,20 +223,14 @@
+
+ # TABLE wfs
+
+- $sql = "INSERT INTO wfs (wfs_version, wfs_name, wfs_title, wfs_abstract, wfs_getcapabilities, wfs_describefeaturetype, wfs_getfeature, wfs_transaction) ";
+- $sql .= "VALUES(";
+- $sql .= "'" . $this->wfs_version ."', ";
+- $sql .= "'" . db_escape_string(str_replace("'","",$this->wfs_name)) ."', ";
+- $sql .= "'" . db_escape_string(str_replace("'","",$this->wfs_title)) ."', ";
+- $sql .= "'" . db_escape_string(str_replace("'","",$this->wfs_abstract)) . "', ";
+- $sql .= "'" . $this->wfs_getcapabilities ."', ";
+- $sql .= "'" . $this->wfs_describefeaturetype . "', ";
+- $sql .= "'". $this->wfs_getfeature . "', ";
+- $sql .= "'". $this->wfs_transaction . "'";
+- $sql .= ");";
++ $sql = "INSERT INTO wfs (wfs_version, wfs_name, wfs_title, wfs_abstract, ";
++ $sql .= "wfs_getcapabilities, wfs_describefeaturetype, wfs_getfeature, ";
++ $sql .= "wfs_transaction) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)";
++ $v = array($this->wfs_version, db_escape_string(str_replace("'","",$this->wfs_name)), db_escape_string(str_replace("'","",$this->wfs_title)), db_escape_string(str_replace("'","",$this->wfs_abstract)), $this->wfs_getcapabilities, $this->wfs_describefeaturetype, $this->wfs_getfeature, $this->wfs_transaction);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s");
+ #echo "sql wfs: <br>".$sql;
+
+- $res = db_query($sql)or die(db_error());
++ $res = db_prep_query($sql, $v, $t)or die(db_error());
+
+ $myWFS = db_insert_id($con,'wfs','wfs_id');
+ #echo "<br> myWFS: ".$myWFS;
+@@ -244,17 +238,14 @@
+ # TABLE wfs_featuretype
+
+ for($i=0; $i<count($this->wfs_featuretype); $i++){
+- $sql = "INSERT INTO wfs_featuretype(fkey_wfs_id, featuretype_name, featuretype_title, featuretype_srs) ";
+- $sql .= "VALUES(";
+- $sql .= $myWFS . ",";
+- $sql .= "'".$this->wfs_featuretype[$i]->featuretype_name . "',";
+- $sql .= "'".$this->wfs_featuretype[$i]->featuretype_title."',";
+- $sql .= "'".$this->wfs_featuretype[$i]->featuretype_srs."'";
+- $sql .= ")";
++ $sql = "INSERT INTO wfs_featuretype(fkey_wfs_id, featuretype_name, ";
++ $sql .= "featuretype_title, featuretype_srs) VALUES ($1, $2, $3, $4)";
++ $v = array($myWFS, $this->wfs_featuretype[$i]->featuretype_name, $this->wfs_featuretype[$i]->featuretype_title, $this->wfs_featuretype[$i]->featuretype_srs);
++ $t = array("i", "s", "s", "s");
+
+ #$res = mysql_query($sql) or $this->cleanDB($myWFS,$sql);
+
+- $res = db_query($sql) or $this->cleanDB($myWFS,$sql);
++ $res = db_prep_query($sql, $v, $t) or $this->cleanDB($myWFS,$sql);
+
+
+ # save the id of each featuretype:
+@@ -261,26 +252,23 @@
+ $this->wfs_featuretype[$i]->mysql_id = db_insert_id($con,'wfs_featuretype','featuretype_id');
+
+ for($j=0; $j<count($this->wfs_featuretype[$i]->featuretype_element);$j++){
+- $sql = "INSERT INTO wfs_element(fkey_featuretype_id, element_name,element_type) ";
+- $sql .= "VALUES(";
+- $sql .= "'" .$this->wfs_featuretype[$i]->mysql_id. "', ";
+- $sql .= "'" .$this->wfs_featuretype[$i]->featuretype_element[$j]["name"]. "', ";
+- $sql .= "'" .$this->wfs_featuretype[$i]->featuretype_element[$j]["type"]. "' ";
+- $sql .= ")";
++ $sql = "INSERT INTO wfs_element(fkey_featuretype_id, ";
++ $sql .= "element_name,element_type) VALUES ($1, $2, $3)";
++
++ $v = array($this->wfs_featuretype[$i]->mysql_id, $this->wfs_featuretype[$i]->featuretype_element[$j]["name"], $this->wfs_featuretype[$i]->featuretype_element[$j]["type"]);
++ $t = array("s", "s", "s");
+
+- $res = db_query($sql) or $this->cleanDB($myWFS,$sql);
++ $res = db_prep_query($sql, $v, $t) or $this->cleanDB($myWFS,$sql);
+ }
+
+ for($j=0; $j<count($this->wfs_featuretype[$i]->featuretype_namespace);$j++){
+- $sql = "INSERT INTO wfs_featuretype_namespace(fkey_wfs_id, fkey_featuretype_id, namespace, namespace_location) ";
+- $sql .= "VALUES(";
+- $sql .= "'" .$myWFS. "',";
+- $sql .= "'" .$this->wfs_featuretype[$i]->mysql_id. "', ";
+- $sql .= "'" .$this->wfs_featuretype[$i]->featuretype_namespace[$j]["name"]. "', ";
+- $sql .= "'" .$this->wfs_featuretype[$i]->featuretype_namespace[$j]["value"]. "' ";
+- $sql .= ")";
++ $sql = "INSERT INTO wfs_featuretype_namespace (fkey_wfs_id, ";
++ $sql .= "fkey_featuretype_id, namespace, namespace_location) ";
++ $sql .= "VALUES ($1, $2, $3, $4)";
++ $v = array($myWFS, $this->wfs_featuretype[$i]->mysql_id, $this->wfs_featuretype[$i]->featuretype_namespace[$j]["name"], $this->wfs_featuretype[$i]->featuretype_namespace[$j]["value"]);
++ $t = array("i", "s", "s", "s");
+
+- $res = db_query($sql) or $this->cleanDB($myWFS,$sql);
++ $res = db_prep_query($sql, $v, $t) or $this->cleanDB($myWFS,$sql);
+ }
+ }
+
+@@ -287,12 +275,11 @@
+ # TABLE gui_wfs
+
+ $sql ="INSERT INTO gui_wfs (fkey_gui_id, fkey_wfs_id)";
+- $sql .= "VALUES(";
+- $sql .= "'" . $gui_id . "', ";
+- $sql .= $myWFS;
+- $sql .= ");";
++ $sql .= "VALUES ($1, $2)";
++ $v = array($gui_id, $myWFS);
++ $t = array("s", "i");
+
+- $res = db_query($sql) or $this->cleanDB($myWFS,$sql);
++ $res = db_prep_query($sql, $v, $t) or $this->cleanDB($myWFS,$sql);
+ }
+ function cleanDB($wfsid,$sql){
+ global $DBSERVER,$DB,$OWNER,$PW;
+@@ -298,8 +285,10 @@
+ global $DBSERVER,$DB,$OWNER,$PW;
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+- $s = "DELETE FROM wfs WHERE wfs_id = ".$wfsid;
+- $res = db_query($s);
++ $s = "DELETE FROM wfs WHERE wfs_id = $1";
++ $v = array($wfsid);
++ $t = array("i");
++ $res = db_prep_query($s, $v, $t);
+ echo "<br>Error in :".$sql."<br>";
+ echo "<br>Db cleaned.<br>";
+ die;
+Index: http/classes/class_wfs_conf.php
+===================================================================
+--- http/classes/class_wfs_conf.php (revision 2361)
++++ http/classes/class_wfs_conf.php (working copy)
+@@ -1,5 +1,5 @@
+ <?php
+-# $Id: class_wfs_conf.php 530 2006-06-19 15:08:35Z vera_schulze $
++# $Id$
+ # http://www.mapbender.org/index.php/class_wfs_conf.php
+ # Copyright (C) 2002 CCGIS
+ #
+@@ -91,8 +91,10 @@
+ global $DBSERVER,$DB,$OWNER,$PW;
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+- $sql = "SELECT * FROM wfs_featuretype WHERE fkey_wfs_id = ".$id;
+- $res = db_query($sql);
++ $sql = "SELECT * FROM wfs_featuretype WHERE fkey_wfs_id = $1";
++ $v = array($id);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while ($row = db_fetch_array($res)){
+ $this->featuretype_id[$cnt] = $row["featuretype_id"];
+@@ -118,8 +120,10 @@
+ global $DBSERVER,$DB,$OWNER,$PW;
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+- $sql = "SELECT * FROM wfs_element WHERE fkey_featuretype_id = ".$fid;
+- $res = db_query($sql);
++ $sql = "SELECT * FROM wfs_element WHERE fkey_featuretype_id = $1";
++ $v = array($fid);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while ($row = db_fetch_array($res)){
+ $this->element_id[$cnt] = $row["element_id"];
+@@ -142,8 +146,10 @@
+ global $DBSERVER,$DB,$OWNER,$PW;
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+- $sql = "SELECT * FROM wfs_featuretype_namespace WHERE fkey_featuretype_id = ".$fid;
+- $res = db_query($sql);
++ $sql = "SELECT * FROM wfs_featuretype_namespace WHERE fkey_featuretype_id = $1";
++ $v = array($fid);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while ($row = db_fetch_array($res)){
+ $this->namespace_name[$cnt] = $row["namespace"];
+Index: http/classes/class_wms.php
+===================================================================
+--- http/classes/class_wms.php (revision 2361)
++++ http/classes/class_wms.php (working copy)
+@@ -94,7 +94,7 @@
+ xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
+ xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
+ xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,CHARSET);
+- xml_parse_into_struct($parser,$this->wms_getcapabilities_doc,$values,$tags);
++ xml_parse_into_struct($parser,$data,$values,$tags);
+
+ $code = xml_get_error_code($parser);
+ if ($code) {
+@@ -1340,7 +1340,12 @@
+ while($row = db_fetch_array($res)){
+ unset($mySubmit);
+ $myGUI[$cnt] = $row["fkey_gui_id"];
+- $sql = "UPDATE gui_wms SET ";
++
++ $sql = "UPDATE gui_wms SET ";
++ $v = array();
++ $t = array();
++ $paramCount = 0;
++
+ for($i=0; $i<count($this->data_type); $i++){
+ # gui_wms_mapformat
+ if(strtolower($this->data_type[$i]) == "map" && strtolower($this->data_format[$i]) == strtolower($row["gui_wms_mapformat"])){
+@@ -1356,12 +1361,18 @@
+ }
+ }
+ if(!$myMapFormat){
+- $sql .= "gui_wms_mapformat = '".$this->gui_wms_mapformat."' ";
++ $paramCount++;
++ $sql .= "gui_wms_mapformat = $" . $paramCount . " ";
+ $mySubmit = true;
++ array_push($v, $this->gui_wms_mapformat);
++ array_push($t, "s");
+ }
+ if(!$myFeatureInfoFormat){
+ if($mySubmit){ $sql .= ",";}
+- $sql .= "gui_wms_featureinfoformat = '".$this->gui_wms_featureinfoformat."' ";
++ $paramCount++;
++ $sql .= "gui_wms_featureinfoformat = $" . $paramCount . " ";
++ array_push($v, $this->gui_wms_featureinfoformat);
++ array_push($t, "s");
+ $mySubmit = true;
+ }
+ if(!$myExceptionFormat){
+@@ -1366,7 +1377,10 @@
+ }
+ if(!$myExceptionFormat){
+ if($mySubmit){ $sql .= ",";}
+- $sql .= "gui_wms_exceptionformat = '".$this->gui_wms_exceptionformat."' ";
++ $paramCount++;
++ $sql .= "gui_wms_exceptionformat = $" . $paramCount ." ";
++ array_push($v, $this->gui_wms_exceptionformat);
++ array_push($t, "s");
+ $mySubmit = true;
+ }
+
+@@ -1378,12 +1392,30 @@
+ }
+ if(!$myGUI_EPSG){
+ if($mySubmit){ $sql .= ",";}
+- $sql .= "gui_wms_epsg = '".$this->gui_wms_epsg."' ";
++ $paramCount++;
++ $sql .= "gui_wms_epsg = $" . $paramCount . " ";
++ array_push($v, $this->gui_wms_epsg);
++ array_push($t, "s");
+ $mySubmit = true;
+ }
+- $sql .= " WHERE fkey_gui_id = '".$row["fkey_gui_id"]."' AND fkey_wms_id = " . $myWMS;
++ $paramCount++;
++ $sql .= " WHERE fkey_gui_id = $" . $paramCount . " ";
++ array_push($v, $row["fkey_gui_id"]);
++ array_push($t, "s");
++
++ $paramCount++;
++ $sql .= "AND fkey_wms_id = $" . $paramCount;
++ array_push($v, $myWMS);
++ array_push($t, "i");
+ if($mySubmit){
+- $this->transaction($sql);
++ $res = db_prep_query($sql,$v,$t);
++ if(!$res){
++ db_rollback();
++ echo "<pre>".$sql."</pre><br> <br><p>";
++ echo db_error();
++ echo "<br /> UPDATE ERROR -> KILL PROCESS AND ROLLBACK....................no update<br><br>";
++ $e = new mb_exception("class_wms.php: transaction: Transaction aborted, rollback.");
++ }
+ }
+ $cnt++;
+ }
+@@ -1399,26 +1431,7 @@
+ function getCapabilitiesDoc() {
+ return $this->wms_getcapabilities_doc;
+ }
+- function transaction($sql){
+- #echo "<hr>". $sql;
+- $ok = db_query($sql);
+- if(!$ok){
+- echo "<pre>".$sql."</pre><br> <br><p>";
+- $error = db_error();
+- $sql = "ROLLBACK";
+- $res = db_query($sql);
+- if(SYS_DBTYPE=="pgsql")
+- {
+- $sql = "SET AUTOCOMMIT=0";
+- }
+- else
+- {
+- $sql = "SET AUTOCOMMIT=1";
+- }
+- echo $error;
+- echo "<br /> UPDATE ERROR -> KILL PROCESS AND ROLLBACK....................no update<br><br>";
+- }
+- }
++
+ /**
+ * creatObjfromDB
+ *
+Index: http/extensions/ext_featureInfoTunnel.php
+===================================================================
+--- http/extensions/ext_featureInfoTunnel.php (revision 2361)
++++ http/extensions/ext_featureInfoTunnel.php (working copy)
+@@ -16,7 +16,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once("../classes/class_stripRequest.php");
+ require_once("../classes/class_connector.php");
+ $mr = new stripRequest(urldecode($_REQUEST["url"]));
+Index: http/extensions/ext_weldMaps.php
+===================================================================
+--- http/extensions/ext_weldMaps.php (revision 2361)
++++ http/extensions/ext_weldMaps.php (working copy)
+@@ -112,7 +112,7 @@
+ return $newResolution;
+ }
+ }
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $map_urls = explode("###",$_SESSION["mb_print_url"]);
+ $output = new weldMaps($map_urls, $_SESSION["mb_print_resolution"]);
+ ?>
+\ No newline at end of file
+Index: http/extensions/geom2wfst.php
+===================================================================
+--- http/extensions/geom2wfst.php (revision 2361)
++++ http/extensions/geom2wfst.php (working copy)
+@@ -18,7 +18,7 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
+
+
+Index: http/extensions/markResult.php
+===================================================================
+--- http/extensions/markResult.php (revision 2361)
++++ http/extensions/markResult.php (working copy)
+@@ -23,6 +23,8 @@
+ * $color -> Color of the polygon/line, commasaparated RGB-values
+ *
+ */
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ import_request_variables("PG");
+ $tmpx = array();
+ $tmpy = array();
+Index: http/extensions/wz_jsgraphics.js
+===================================================================
+--- http/extensions/wz_jsgraphics.js (revision 2361)
++++ http/extensions/wz_jsgraphics.js (working copy)
+@@ -1,211 +1,938 @@
+-var jg_ihtm,jg_ie,jg_fast,jg_dom,jg_moz,jg_n4=(document.layers&&typeof document.classes!="undefined");function chkDHTM(x,i)
+-{x=document.body||null;jg_ie=x&&typeof x.insertAdjacentHTML!="undefined";jg_dom=(x&&!jg_ie&&typeof x.appendChild!="undefined"&&typeof document.createRange!="undefined"&&typeof(i=document.createRange()).setStartBefore!="undefined"&&typeof i.createContextualFragment!="undefined");jg_ihtm=!jg_ie&&!jg_dom&&x&&typeof x.innerHTML!="undefined";jg_fast=jg_ie&&document.all&&!window.opera;jg_moz=jg_dom&&typeof x.style.MozOpacity!="undefined";}
++/* This notice must be untouched at all times.
++
++wz_jsgraphics.js v. 2.3
++The latest version is available at
++http://www.walterzorn.com
++or http://www.devira.com
++or http://www.walterzorn.de
++
++Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
++Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
++Last modified: 29. 9. 2004
++
++Performance optimizations for Internet Explorer
++by Thomas Frank and John Holdsworth.
++fillPolygon method implemented by Matthieu Haller.
++
++High Performance JavaScript Graphics Library.
++Provides methods
++- to draw lines, rectangles, ellipses, polygons
++ with specifiable line thickness,
++- to fill rectangles and ellipses
++- to draw text.
++NOTE: Operations, functions and branching have rather been optimized
++to efficiency and speed than to shortness of source code.
++
++LICENSE: LGPL
++
++This library is free software; you can redistribute it and/or
++modify it under the terms of the GNU Lesser General Public
++License (LGPL) as published by the Free Software Foundation; either
++version 2.1 of the License, or (at your option) any later version.
++
++This library 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
++Lesser General Public License for more details.
++
++You should have received a copy of the GNU Lesser General Public
++License along with this library; if not, write to the Free Software
++Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA,
++or see http://www.gnu.org/copyleft/lesser.html
++*/
++
++
++var jg_ihtm, jg_ie, jg_fast, jg_dom, jg_moz,
++jg_n4 = (document.layers && typeof document.classes != "undefined");
++
++
++function chkDHTM(x, i)
++{
++ x = document.body || null;
++ jg_ie = x && typeof x.insertAdjacentHTML != "undefined";
++ jg_dom = (x && !jg_ie &&
++ typeof x.appendChild != "undefined" &&
++ typeof document.createRange != "undefined" &&
++ typeof (i = document.createRange()).setStartBefore != "undefined" &&
++ typeof i.createContextualFragment != "undefined");
++ jg_ihtm = !jg_ie && !jg_dom && x && typeof x.innerHTML != "undefined";
++ jg_fast = jg_ie && document.all && !window.opera;
++ jg_moz = jg_dom && typeof x.style.MozOpacity != "undefined";
++}
++
++
+ function pntDoc()
+-{this.wnd.document.write(jg_fast?this.htmRpc():this.htm);this.htm='';}
++{
++ this.wnd.document.write(jg_fast? this.htmRpc() : this.htm);
++ this.htm = '';
++}
++
++
+ function pntCnvDom()
+-{var x=document.createRange();x.setStartBefore(this.cnv);x=x.createContextualFragment(jg_fast?this.htmRpc():this.htm);this.cnv.appendChild(x);this.htm='';}
++{
++ var x = document.createRange();
++ x.setStartBefore(this.cnv);
++ x = x.createContextualFragment(jg_fast? this.htmRpc() : this.htm);
++ this.cnv.appendChild(x);
++ this.htm = '';
++}
++
++
+ function pntCnvIe()
+-{this.cnv.insertAdjacentHTML("BeforeEnd",jg_fast?this.htmRpc():this.htm);this.htm='';}
++{
++ this.cnv.insertAdjacentHTML("BeforeEnd", jg_fast? this.htmRpc() : this.htm);
++ this.htm = '';
++}
++
++
+ function pntCnvIhtm()
+-{this.cnv.innerHTML+=this.htm;this.htm='';}
++{
++ this.cnv.innerHTML += this.htm;
++ this.htm = '';
++}
++
++
+ function pntCnv()
+-{this.htm='';}
+-function mkDiv(x,y,w,h)
+-{this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+'px;'+'height:'+h+'px;';if(ie){this.htm+='-opacity:'+cw_opacity+';'+'-khtml-opacity:'+cw_opacity+';'+'filter: alpha(opacity='+(cw_opacity*100)+');';}
+-this.htm+='clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+
+-(!jg_moz?';overflow:hidden':'')+';"><\/div>';}
+-function mkDivIe(x,y,w,h)
+-{this.htm+='%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';}
+-function mkDivPrt(x,y,w,h)
+-{this.htm+='<div style="position:absolute;'+'border-left:'+w+'px solid '+this.color+';'+'left:'+x+'px;'+'top:'+y+'px;'+'width:0px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+
+-(!jg_moz?';overflow:hidden':'')+';"><\/div>';}
+-function mkLyr(x,y,w,h)
+-{this.htm+='<layer '+'left="'+x+'" '+'top="'+y+'" '+'width="'+w+'" '+'height="'+h+'" '+'bgcolor="'+this.color+'"><\/layer>\n';}
+-var regex=/%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;function htmRpc()
+-{return this.htm.replace(regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2;top:$3;width:$4;height:$5"></div>\n');}
++{
++ this.htm = '';
++}
++
++
++function mkDiv(x, y, w, h)
++{
++ if (!isNaN(h)) {
++ this.htm += '<div style="position:absolute;'+
++ 'left:' + x + 'px;'+
++ 'top:' + y + 'px;'+
++ 'width:' + w + 'px;'+
++ 'height:' + h + 'px;';
++ if (ie) {
++ this.htm += '-opacity:' + cw_opacity + ';' +
++ '-khtml-opacity:' + cw_opacity + ';'+
++ 'filter: alpha(opacity=' + (cw_opacity * 100) + ');';
++ }
++
++ //'-moz-opacity:' + window.cw_opacity + ';'+
++ this.htm +=
++ 'clip:rect(0,'+w+'px,'+h+'px,0);'+
++ 'background-color:' + this.color +
++ (!jg_moz? ';overflow:hidden' : '')+
++ ';"><\/div>';
++ }
++}
++
++
++function mkDivIe(x, y, w, h)
++{
++ if (!isNaN(h)) {
++ this.htm += '%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';
++ }
++}
++
++
++function mkDivPrt(x, y, w, h)
++{
++ this.htm += '<div style="position:absolute;'+
++ 'border-left:' + w + 'px solid ' + this.color + ';'+
++ 'left:' + x + 'px;'+
++ 'top:' + y + 'px;'+
++ 'width:0px;'+
++ 'height:' + h + 'px;'+
++ 'clip:rect(0,'+w+'px,'+h+'px,0);'+
++ 'background-color:' + this.color +
++ (!jg_moz? ';overflow:hidden' : '')+
++ ';"><\/div>';
++}
++
++
++function mkLyr(x, y, w, h)
++{
++ this.htm += '<layer '+
++ 'left="' + x + '" '+
++ 'top="' + y + '" '+
++ 'width="' + w + '" '+
++ 'height="' + h + '" '+
++ 'bgcolor="' + this.color + '"><\/layer>\n';
++}
++
++
++var regex = /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;
++function htmRpc()
++{
++ return this.htm.replace(
++ regex,
++ '<div style="overflow:hidden;position:absolute;background-color:'+
++ '$1;left:$2;top:$3;width:$4;height:$5"></div>\n');
++}
++
++
+ function htmPrtRpc()
+-{return this.htm.replace(regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');}
+-function mkLin(x1,y1,x2,y2)
+-{if(x1>x2)
+-{var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2;}
+-var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;if(dx>=dy)
+-{var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while((dx--)>0)
+-{++x;if(p>0)
+-{this.mkDiv(ox,y,x-ox,1);y+=yIncr;p+=pru;ox=x;}
+-else p+=pr;}
+-this.mkDiv(ox,y,x2-ox+1,1);}
+-else
+-{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1)
+-{while((dy--)>0)
+-{if(p>0)
+-{this.mkDiv(x++,y,1,oy-y+1);y+=yIncr;p+=pru;oy=y;}
+-else
+-{y+=yIncr;p+=pr;}}
+-this.mkDiv(x2,y2,1,oy-y2+1);}
+-else
+-{while((dy--)>0)
+-{y+=yIncr;if(p>0)
+-{this.mkDiv(x++,oy,1,y-oy);p+=pru;oy=y;}
+-else p+=pr;}
+-this.mkDiv(x2,oy,1,y2-oy+1);}}}
+-function mkLin2D(x1,y1,x2,y2)
+-{if(x1>x2)
+-{var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2;}
+-var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;var s=this.stroke;if(dx>=dy)
+-{if(s-3>0)
+-{var _s=(s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy)/dx;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1;}
+-else var _s=s;var ad=Math.ceil(s/2);var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while((dx--)>0)
+-{++x;if(p>0)
+-{this.mkDiv(ox,y,x-ox+ad,_s);y+=yIncr;p+=pru;ox=x;}
+-else p+=pr;}
+-this.mkDiv(ox,y,x2-ox+ad+1,_s);}
+-else
+-{if(s-3>0)
+-{var _s=(s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy)/dy;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1;}
+-else var _s=s;var ad=Math.round(s/2);var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1)
+-{++ad;while((dy--)>0)
+-{if(p>0)
+-{this.mkDiv(x++,y,_s,oy-y+ad);y+=yIncr;p+=pru;oy=y;}
+-else
+-{y+=yIncr;p+=pr;}}
+-this.mkDiv(x2,y2,_s,oy-y2+ad);}
+-else
+-{while((dy--)>0)
+-{y+=yIncr;if(p>0)
+-{this.mkDiv(x++,oy,_s,y-oy+ad);p+=pru;oy=y;}
+-else p+=pr;}
+-this.mkDiv(x2,oy,_s,y2-oy+ad+1);}}}
+-function mkLinDott(x1,y1,x2,y2)
+-{if(x1>x2)
+-{var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2;}
+-var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1,drw=true;if(dx>=dy)
+-{var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx;while((dx--)>0)
+-{if(drw)this.mkDiv(x,y,1,1);drw=!drw;if(p>0)
+-{y+=yIncr;p+=pru;}
+-else p+=pr;++x;}
+-if(drw)this.mkDiv(x,y,1,1);}
+-else
+-{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy;while((dy--)>0)
+-{if(drw)this.mkDiv(x,y,1,1);drw=!drw;y+=yIncr;if(p>0)
+-{++x;p+=pru;}
+-else p+=pr;}
+-if(drw)this.mkDiv(x,y,1,1);}}
+-function mkOv(left,top,width,height)
+-{var a=width>>1,b=height>>1,wod=width&1,hod=(height&1)+1,cx=left+a,cy=top+b,x=0,y=b,ox=0,oy=b,aa=(a*a)<<1,bb=(b*b)<<1,st=(aa>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa*((b<<1)-1),w,h;while(y>0)
+-{if(st<0)
+-{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
+-else if(tt<0)
+-{st+=bb*((x<<1)+3)-(aa<<1)*(y-1);tt+=(bb<<1)*(++x)-aa*(((y--)<<1)-3);w=x-ox;h=oy-y;if(w&2&&h&2)
+-{this.mkOvQds(cx,cy,-x+2,ox+wod,-oy,oy-1+hod,1,1);this.mkOvQds(cx,cy,-x+1,x-1+wod,-y-1,y+hod,1,1);}
+-else this.mkOvQds(cx,cy,-x+1,ox+wod,-oy,oy-h+hod,w,h);ox=x;oy=y;}
+-else
+-{tt-=aa*((y<<1)-3);st-=(aa<<1)*(--y);}}
+-this.mkDiv(cx-a,cy-oy,a-ox+1,(oy<<1)+hod);this.mkDiv(cx+ox+wod,cy-oy,a-ox+1,(oy<<1)+hod);}
+-function mkOv2D(left,top,width,height)
+-{var s=this.stroke;width+=s-1;height+=s-1;var a=width>>1,b=height>>1,wod=width&1,hod=(height&1)+1,cx=left+a,cy=top+b,x=0,y=b,aa=(a*a)<<1,bb=(b*b)<<1,st=(aa>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa*((b<<1)-1);if(s-4<0&&(!(s-2)||width-51>0&&height-51>0))
+-{var ox=0,oy=b,w,h,pxl,pxr,pxt,pxb,pxw;while(y>0)
+-{if(st<0)
+-{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
+-else if(tt<0)
+-{st+=bb*((x<<1)+3)-(aa<<1)*(y-1);tt+=(bb<<1)*(++x)-aa*(((y--)<<1)-3);w=x-ox;h=oy-y;if(w-1)
+-{pxw=w+1+(s&1);h=s;}
+-else if(h-1)
+-{pxw=s;h+=1+(s&1);}
+-else pxw=h=s;this.mkOvQds(cx,cy,-x+1,ox-pxw+w+wod,-oy,-h+oy+hod,pxw,h);ox=x;oy=y;}
+-else
+-{tt-=aa*((y<<1)-3);st-=(aa<<1)*(--y);}}
+-this.mkDiv(cx-a,cy-oy,s,(oy<<1)+hod);this.mkDiv(cx+a+wod-s+1,cy-oy,s,(oy<<1)+hod);}
+-else
+-{var _a=(width-((s-1)<<1))>>1,_b=(height-((s-1)<<1))>>1,_x=0,_y=_b,_aa=(_a*_a)<<1,_bb=(_b*_b)<<1,_st=(_aa>>1)*(1-(_b<<1))+_bb,_tt=(_bb>>1)-_aa*((_b<<1)-1),pxl=new Array(),pxt=new Array(),_pxb=new Array();pxl[0]=0;pxt[0]=b;_pxb[0]=_b-1;while(y>0)
+-{if(st<0)
+-{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);pxl[pxl.length]=x;pxt[pxt.length]=y;}
+-else if(tt<0)
+-{st+=bb*((x<<1)+3)-(aa<<1)*(y-1);tt+=(bb<<1)*(++x)-aa*(((y--)<<1)-3);pxl[pxl.length]=x;pxt[pxt.length]=y;}
+-else
+-{tt-=aa*((y<<1)-3);st-=(aa<<1)*(--y);}
+-if(_y>0)
+-{if(_st<0)
+-{_st+=_bb*((_x<<1)+3);_tt+=(_bb<<1)*(++_x);_pxb[_pxb.length]=_y-1;}
+-else if(_tt<0)
+-{_st+=_bb*((_x<<1)+3)-(_aa<<1)*(_y-1);_tt+=(_bb<<1)*(++_x)-_aa*(((_y--)<<1)-3);_pxb[_pxb.length]=_y-1;}
+-else
+-{_tt-=_aa*((_y<<1)-3);_st-=(_aa<<1)*(--_y);_pxb[_pxb.length-1]--;}}}
+-var ox=0,oy=b,_oy=_pxb[0],l=pxl.length,w,h;for(var i=0;i<l;i++)
+-{if(typeof _pxb[i]!="undefined")
+-{if(_pxb[i]<_oy||pxt[i]<oy)
+-{x=pxl[i];this.mkOvQds(cx,cy,-x+1,ox+wod,-oy,_oy+hod,x-ox,oy-_oy);ox=x;oy=pxt[i];_oy=_pxb[i];}}
+-else
+-{x=pxl[i];this.mkDiv(cx-x+1,cy-oy,1,(oy<<1)+hod);this.mkDiv(cx+ox+wod,cy-oy,1,(oy<<1)+hod);ox=x;oy=pxt[i];}}
+-this.mkDiv(cx-a,cy-oy,1,(oy<<1)+hod);this.mkDiv(cx+ox+wod,cy-oy,1,(oy<<1)+hod);}}
+-function mkOvDott(left,top,width,height)
+-{var a=width>>1,b=height>>1,wod=width&1,hod=height&1,cx=left+a,cy=top+b,x=0,y=b,aa2=(a*a)<<1,aa4=aa2<<1,bb=(b*b)<<1,st=(aa2>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa2*((b<<1)-1),drw=true;while(y>0)
+-{if(st<0)
+-{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
+-else if(tt<0)
+-{st+=bb*((x<<1)+3)-aa4*(y-1);tt+=(bb<<1)*(++x)-aa2*(((y--)<<1)-3);}
+-else
+-{tt-=aa2*((y<<1)-3);st-=aa4*(--y);}
+-if(drw)this.mkOvQds(cx,cy,-x,x+wod,-y,y+hod,1,1);drw=!drw;}}
+-function mkRect(x,y,w,h)
+-{var s=this.stroke;this.mkDiv(x,y,w,s);this.mkDiv(x+w,y,s,h);this.mkDiv(x,y+h,w+s,s);this.mkDiv(x,y+s,s,h-s);}
+-function mkRectDott(x,y,w,h)
+-{this.drawLine(x,y,x+w,y);this.drawLine(x+w,y,x+w,y+h);this.drawLine(x,y+h,x+w,y+h);this.drawLine(x,y,x,y+h);}
++{
++ return this.htm.replace(
++ regex,
++ '<div style="overflow:hidden;position:absolute;background-color:'+
++ '$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');
++}
++
++
++function mkLin(x1, y1, x2, y2)
++{
++ if (x1 > x2)
++ {
++ var _x2 = x2;
++ var _y2 = y2;
++ x2 = x1;
++ y2 = y1;
++ x1 = _x2;
++ y1 = _y2;
++ }
++ var dx = x2-x1, dy = Math.abs(y2-y1),
++ x = x1, y = y1,
++ yIncr = (y1 > y2)? -1 : 1;
++
++ if (dx >= dy)
++ {
++ var pr = dy<<1,
++ pru = pr - (dx<<1),
++ p = pr-dx,
++ ox = x;
++ while ((dx--) > 0)
++ {
++ ++x;
++ if (p > 0)
++ {
++ this.mkDiv(ox, y, x-ox, 1);
++ y += yIncr;
++ p += pru;
++ ox = x;
++ }
++ else p += pr;
++ }
++ this.mkDiv(ox, y, x2-ox+1, 1);
++ }
++
++ else
++ {
++ var pr = dx<<1,
++ pru = pr - (dy<<1),
++ p = pr-dy,
++ oy = y;
++ if (y2 <= y1)
++ {
++ while ((dy--) > 0)
++ {
++ if (p > 0)
++ {
++ this.mkDiv(x++, y, 1, oy-y+1);
++ y += yIncr;
++ p += pru;
++ oy = y;
++ }
++ else
++ {
++ y += yIncr;
++ p += pr;
++ }
++ }
++ this.mkDiv(x2, y2, 1, oy-y2+1);
++ }
++ else
++ {
++ while ((dy--) > 0)
++ {
++ y += yIncr;
++ if (p > 0)
++ {
++ this.mkDiv(x++, oy, 1, y-oy);
++ p += pru;
++ oy = y;
++ }
++ else p += pr;
++ }
++ this.mkDiv(x2, oy, 1, y2-oy+1);
++ }
++ }
++}
++
++
++function mkLin2D(x1, y1, x2, y2)
++{
++ if (x1 > x2)
++ {
++ var _x2 = x2;
++ var _y2 = y2;
++ x2 = x1;
++ y2 = y1;
++ x1 = _x2;
++ y1 = _y2;
++ }
++ var dx = x2-x1, dy = Math.abs(y2-y1),
++ x = x1, y = y1,
++ yIncr = (y1 > y2)? -1 : 1;
++
++ var s = this.stroke;
++ if (dx >= dy)
++ {
++ if (s-3 > 0)
++ {
++ var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;
++ _s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;
++ }
++ else var _s = s;
++ var ad = Math.ceil(s/2);
++
++ var pr = dy<<1,
++ pru = pr - (dx<<1),
++ p = pr-dx,
++ ox = x;
++ while ((dx--) > 0)
++ {
++ ++x;
++ if (p > 0)
++ {
++ this.mkDiv(ox, y, x-ox+ad, _s);
++ y += yIncr;
++ p += pru;
++ ox = x;
++ }
++ else p += pr;
++ }
++ this.mkDiv(ox, y, x2-ox+ad+1, _s);
++ }
++
++ else
++ {
++ if (s-3 > 0)
++ {
++ var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;
++ _s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;
++ }
++ else var _s = s;
++ var ad = Math.round(s/2);
++
++ var pr = dx<<1,
++ pru = pr - (dy<<1),
++ p = pr-dy,
++ oy = y;
++ if (y2 <= y1)
++ {
++ ++ad;
++ while ((dy--) > 0)
++ {
++ if (p > 0)
++ {
++ this.mkDiv(x++, y, _s, oy-y+ad);
++ y += yIncr;
++ p += pru;
++ oy = y;
++ }
++ else
++ {
++ y += yIncr;
++ p += pr;
++ }
++ }
++ this.mkDiv(x2, y2, _s, oy-y2+ad);
++ }
++ else
++ {
++ while ((dy--) > 0)
++ {
++ y += yIncr;
++ if (p > 0)
++ {
++ this.mkDiv(x++, oy, _s, y-oy+ad);
++ p += pru;
++ oy = y;
++ }
++ else p += pr;
++ }
++ this.mkDiv(x2, oy, _s, y2-oy+ad+1);
++ }
++ }
++}
++
++
++function mkLinDott(x1, y1, x2, y2)
++{
++ if (x1 > x2)
++ {
++ var _x2 = x2;
++ var _y2 = y2;
++ x2 = x1;
++ y2 = y1;
++ x1 = _x2;
++ y1 = _y2;
++ }
++ var dx = x2-x1, dy = Math.abs(y2-y1),
++ x = x1, y = y1,
++ yIncr = (y1 > y2)? -1 : 1,
++ drw = true;
++ if (dx >= dy)
++ {
++ var pr = dy<<1,
++ pru = pr - (dx<<1),
++ p = pr-dx;
++ while ((dx--) > 0)
++ {
++ if (drw) this.mkDiv(x, y, 1, 1);
++ drw = !drw;
++ if (p > 0)
++ {
++ y += yIncr;
++ p += pru;
++ }
++ else p += pr;
++ ++x;
++ }
++ if (drw) this.mkDiv(x, y, 1, 1);
++ }
++
++ else
++ {
++ var pr = dx<<1,
++ pru = pr - (dy<<1),
++ p = pr-dy;
++ while ((dy--) > 0)
++ {
++ if (drw) this.mkDiv(x, y, 1, 1);
++ drw = !drw;
++ y += yIncr;
++ if (p > 0)
++ {
++ ++x;
++ p += pru;
++ }
++ else p += pr;
++ }
++ if (drw) this.mkDiv(x, y, 1, 1);
++ }
++}
++
++
++function mkOv(left, top, width, height)
++{
++ var a = width>>1, b = height>>1,
++ wod = width&1, hod = (height&1)+1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ ox = 0, oy = b,
++ aa = (a*a)<<1, bb = (b*b)<<1,
++ st = (aa>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa*((b<<1)-1),
++ w, h;
++ while (y > 0)
++ {
++ if (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ else if (tt < 0)
++ {
++ st += bb*((x<<1)+3) - (aa<<1)*(y-1);
++ tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
++ w = x-ox;
++ h = oy-y;
++ if (w&2 && h&2)
++ {
++ this.mkOvQds(cx, cy, -x+2, ox+wod, -oy, oy-1+hod, 1, 1);
++ this.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1);
++ }
++ else this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, oy-h+hod, w, h);
++ ox = x;
++ oy = y;
++ }
++ else
++ {
++ tt -= aa*((y<<1)-3);
++ st -= (aa<<1)*(--y);
++ }
++ }
++ this.mkDiv(cx-a, cy-oy, a-ox+1, (oy<<1)+hod);
++ this.mkDiv(cx+ox+wod, cy-oy, a-ox+1, (oy<<1)+hod);
++}
++
++
++function mkOv2D(left, top, width, height)
++{
++ var s = this.stroke;
++ width += s-1;
++ height += s-1;
++ var a = width>>1, b = height>>1,
++ wod = width&1, hod = (height&1)+1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ aa = (a*a)<<1, bb = (b*b)<<1,
++ st = (aa>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa*((b<<1)-1);
++
++ if (s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0))
++ {
++ var ox = 0, oy = b,
++ w, h,
++ pxl, pxr, pxt, pxb, pxw;
++ while (y > 0)
++ {
++ if (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ else if (tt < 0)
++ {
++ st += bb*((x<<1)+3) - (aa<<1)*(y-1);
++ tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
++ w = x-ox;
++ h = oy-y;
++
++ if (w-1)
++ {
++ pxw = w+1+(s&1);
++ h = s;
++ }
++ else if (h-1)
++ {
++ pxw = s;
++ h += 1+(s&1);
++ }
++ else pxw = h = s;
++ this.mkOvQds(cx, cy, -x+1, ox-pxw+w+wod, -oy, -h+oy+hod, pxw, h);
++ ox = x;
++ oy = y;
++ }
++ else
++ {
++ tt -= aa*((y<<1)-3);
++ st -= (aa<<1)*(--y);
++ }
++ }
++ this.mkDiv(cx-a, cy-oy, s, (oy<<1)+hod);
++ this.mkDiv(cx+a+wod-s+1, cy-oy, s, (oy<<1)+hod);
++ }
++
++ else
++ {
++ var _a = (width-((s-1)<<1))>>1,
++ _b = (height-((s-1)<<1))>>1,
++ _x = 0, _y = _b,
++ _aa = (_a*_a)<<1, _bb = (_b*_b)<<1,
++ _st = (_aa>>1)*(1-(_b<<1)) + _bb,
++ _tt = (_bb>>1) - _aa*((_b<<1)-1),
++
++ pxl = new Array(),
++ pxt = new Array(),
++ _pxb = new Array();
++ pxl[0] = 0;
++ pxt[0] = b;
++ _pxb[0] = _b-1;
++ while (y > 0)
++ {
++ if (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ pxl[pxl.length] = x;
++ pxt[pxt.length] = y;
++ }
++ else if (tt < 0)
++ {
++ st += bb*((x<<1)+3) - (aa<<1)*(y-1);
++ tt += (bb<<1)*(++x) - aa*(((y--)<<1)-3);
++ pxl[pxl.length] = x;
++ pxt[pxt.length] = y;
++ }
++ else
++ {
++ tt -= aa*((y<<1)-3);
++ st -= (aa<<1)*(--y);
++ }
++
++ if (_y > 0)
++ {
++ if (_st < 0)
++ {
++ _st += _bb*((_x<<1)+3);
++ _tt += (_bb<<1)*(++_x);
++ _pxb[_pxb.length] = _y-1;
++ }
++ else if (_tt < 0)
++ {
++ _st += _bb*((_x<<1)+3) - (_aa<<1)*(_y-1);
++ _tt += (_bb<<1)*(++_x) - _aa*(((_y--)<<1)-3);
++ _pxb[_pxb.length] = _y-1;
++ }
++ else
++ {
++ _tt -= _aa*((_y<<1)-3);
++ _st -= (_aa<<1)*(--_y);
++ _pxb[_pxb.length-1]--;
++ }
++ }
++ }
++
++ var ox = 0, oy = b,
++ _oy = _pxb[0],
++ l = pxl.length,
++ w, h;
++ for (var i = 0; i < l; i++)
++ {
++ if (typeof _pxb[i] != "undefined")
++ {
++ if (_pxb[i] < _oy || pxt[i] < oy)
++ {
++ x = pxl[i];
++ this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, _oy+hod, x-ox, oy-_oy);
++ ox = x;
++ oy = pxt[i];
++ _oy = _pxb[i];
++ }
++ }
++ else
++ {
++ x = pxl[i];
++ this.mkDiv(cx-x+1, cy-oy, 1, (oy<<1)+hod);
++ this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
++ ox = x;
++ oy = pxt[i];
++ }
++ }
++ this.mkDiv(cx-a, cy-oy, 1, (oy<<1)+hod);
++ this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);
++ }
++}
++
++
++function mkOvDott(left, top, width, height)
++{
++ var a = width>>1, b = height>>1,
++ wod = width&1, hod = height&1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,
++ st = (aa2>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa2*((b<<1)-1),
++ drw = true;
++ while (y > 0)
++ {
++ if (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ else if (tt < 0)
++ {
++ st += bb*((x<<1)+3) - aa4*(y-1);
++ tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3);
++ }
++ else
++ {
++ tt -= aa2*((y<<1)-3);
++ st -= aa4*(--y);
++ }
++ if (drw) this.mkOvQds(cx, cy, -x, x+wod, -y, y+hod, 1, 1);
++ drw = !drw;
++ }
++}
++
++
++function mkRect(x, y, w, h)
++{
++ var s = this.stroke;
++ this.mkDiv(x, y, w, s);
++ this.mkDiv(x+w, y, s, h);
++ this.mkDiv(x, y+h, w+s, s);
++ this.mkDiv(x, y+s, s, h-s);
++}
++
++
++function mkRectDott(x, y, w, h)
++{
++ this.drawLine(x, y, x+w, y);
++ this.drawLine(x+w, y, x+w, y+h);
++ this.drawLine(x, y+h, x+w, y+h);
++ this.drawLine(x, y, x, y+h);
++}
++
++
+ function jsgFont()
+-{this.PLAIN='font-weight:normal;';this.BOLD='font-weight:bold;';this.ITALIC='font-style:italic;';this.ITALIC_BOLD=this.ITALIC+this.BOLD;this.BOLD_ITALIC=this.ITALIC_BOLD;}
+-var Font=new jsgFont();function jsgStroke()
+-{this.DOTTED=-1;}
+-var Stroke=new jsgStroke();function jsGraphics(id,wnd)
+-{this.setColor=new Function('arg','this.color = arg.toLowerCase();');this.setStroke=function(x)
+-{this.stroke=x;if(!(x+1))
+-{this.drawLine=mkLinDott;this.mkOv=mkOvDott;this.drawRect=mkRectDott;}
+-else if(x-1>0)
+-{this.drawLine=mkLin2D;this.mkOv=mkOv2D;this.drawRect=mkRect;}
+-else
+-{this.drawLine=mkLin;this.mkOv=mkOv;this.drawRect=mkRect;}};this.setPrintable=function(arg)
+-{this.printable=arg;if(jg_fast)
+-{this.mkDiv=mkDivIe;this.htmRpc=arg?htmPrtRpc:htmRpc;}
+-else this.mkDiv=jg_n4?mkLyr:arg?mkDivPrt:mkDiv;};this.setFont=function(fam,sz,sty)
+-{this.ftFam=fam;this.ftSz=sz;this.ftSty=sty||Font.PLAIN;};this.drawPolyline=this.drawPolyLine=function(x,y,s)
+-{for(var i=0;i<x.length-1;i++)
+-this.drawLine(x[i],y[i],x[i+1],y[i+1]);};this.fillRect=function(x,y,w,h)
+-{this.mkDiv(x,y,w,h);};this.drawPolygon=function(x,y)
+-{this.drawPolyline(x,y);this.drawLine(x[x.length-1],y[x.length-1],x[0],y[0]);};this.drawEllipse=this.drawOval=function(x,y,w,h)
+-{this.mkOv(x,y,w,h);};this.fillEllipse=this.fillOval=function(left,top,w,h)
+-{var a=(w-=1)>>1,b=(h-=1)>>1,wod=(w&1)+1,hod=(h&1)+1,cx=left+a,cy=top+b,x=0,y=b,ox=0,oy=b,aa2=(a*a)<<1,aa4=aa2<<1,bb=(b*b)<<1,st=(aa2>>1)*(1-(b<<1))+bb,tt=(bb>>1)-aa2*((b<<1)-1),pxl,dw,dh;if(w+1)while(y>0)
+-{if(st<0)
+-{st+=bb*((x<<1)+3);tt+=(bb<<1)*(++x);}
+-else if(tt<0)
+-{st+=bb*((x<<1)+3)-aa4*(y-1);pxl=cx-x;dw=(x<<1)+wod;tt+=(bb<<1)*(++x)-aa2*(((y--)<<1)-3);dh=oy-y;this.mkDiv(pxl,cy-oy,dw,dh);this.mkDiv(pxl,cy+oy-dh+hod,dw,dh);ox=x;oy=y;}
+-else
+-{tt-=aa2*((y<<1)-3);st-=aa4*(--y);}}
+-this.mkDiv(cx-a,cy-oy,w+1,(oy<<1)+hod);};this.fillPolygon=function(array_x,array_y)
+-{var i;var y;var miny,maxy;var x1,y1;var x2,y2;var ind1,ind2;var ints;var n=array_x.length;if(!n)return;miny=array_y[0];maxy=array_y[0];for(i=1;i<n;i++)
+-{if(array_y[i]<miny)
+-miny=array_y[i];if(array_y[i]>maxy)
+-maxy=array_y[i];}
+-for(y=miny;y<=maxy;y++)
+-{var polyInts=new Array();ints=0;for(i=0;i<n;i++)
+-{if(!i)
+-{ind1=n-1;ind2=0;}
+-else
+-{ind1=i-1;ind2=i;}
+-y1=array_y[ind1];y2=array_y[ind2];if(y1<y2)
+-{x1=array_x[ind1];x2=array_x[ind2];}
+-else if(y1>y2)
+-{y2=array_y[ind1];y1=array_y[ind2];x2=array_x[ind1];x1=array_x[ind2];}
+-else continue;if((y>=y1)&&(y<y2))
+-polyInts[ints++]=Math.round((y-y1)*(x2-x1)/(y2-y1)+x1);else if((y==maxy)&&(y>y1)&&(y<=y2))
+-polyInts[ints++]=Math.round((y-y1)*(x2-x1)/(y2-y1)+x1);}
+-polyInts.sort(integer_compare);for(i=0;i<ints;i+=2)
+-this.mkDiv(polyInts[i],y,polyInts[i+1]-polyInts[i]+1,1);}};this.drawString=function(txt,x,y)
+-{this.htm+='<div style="position:absolute;white-space:nowrap;'+'left:'+x+'px;'+'top:'+y+'px;'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+
+-txt+'<\/div>';}
+-this.drawImage=function(imgSrc,x,y,w,h)
+-{this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+';'+'height:'+h+';">'+'<img src="'+imgSrc+'" width="'+w+'" height="'+h+'">'+'<\/div>';}
+-this.clear=function()
+-{this.htm="";if(this.cnv)this.cnv.innerHTML=this.defhtm;};this.mkOvQds=function(cx,cy,xl,xr,yt,yb,w,h)
+-{this.mkDiv(xr+cx,yt+cy,w,h);this.mkDiv(xr+cx,yb+cy,w,h);this.mkDiv(xl+cx,yb+cy,w,h);this.mkDiv(xl+cx,yt+cy,w,h);};this.setStroke(1);this.setFont('verdana,geneva,helvetica,sans-serif',String.fromCharCode(0x31,0x32,0x70,0x78),Font.PLAIN);this.color='#000000';this.htm='';this.wnd=wnd||window;if(!(jg_ie||jg_dom||jg_ihtm))chkDHTM();if(typeof id!='string'||!id)this.paint=pntDoc;else
+-{this.cnv=document.all?(this.wnd.document.all[id]||null):document.getElementById?(this.wnd.document.getElementById(id)||null):null;this.defhtm=(this.cnv&&this.cnv.innerHTML)?this.cnv.innerHTML:'';this.paint=jg_dom?pntCnvDom:jg_ie?pntCnvIe:jg_ihtm?pntCnvIhtm:pntCnv;}
+-this.setPrintable(false);}
++{
++ this.PLAIN = 'font-weight:normal;';
++ this.BOLD = 'font-weight:bold;';
++ this.ITALIC = 'font-style:italic;';
++ this.ITALIC_BOLD = this.ITALIC + this.BOLD;
++ this.BOLD_ITALIC = this.ITALIC_BOLD;
++}
++var Font = new jsgFont();
++
++
++function jsgStroke()
++{
++ this.DOTTED = -1;
++}
++var Stroke = new jsgStroke();
++
++
++function jsGraphics(id, wnd)
++{
++ this.setColor = new Function('arg', 'this.color = arg.toLowerCase();');
++
++ this.setStroke = function(x)
++ {
++ this.stroke = x;
++ if (!(x+1))
++ {
++ this.drawLine = mkLinDott;
++ this.mkOv = mkOvDott;
++ this.drawRect = mkRectDott;
++ }
++ else if (x-1 > 0)
++ {
++ this.drawLine = mkLin2D;
++ this.mkOv = mkOv2D;
++ this.drawRect = mkRect;
++ }
++ else
++ {
++ this.drawLine = mkLin;
++ this.mkOv = mkOv;
++ this.drawRect = mkRect;
++ }
++ };
++
++
++ this.setPrintable = function(arg)
++ {
++ this.printable = arg;
++ if (jg_fast)
++ {
++ this.mkDiv = mkDivIe;
++ this.htmRpc = arg? htmPrtRpc : htmRpc;
++ }
++ else this.mkDiv = jg_n4? mkLyr : arg? mkDivPrt : mkDiv;
++ };
++
++
++ this.setFont = function(fam, sz, sty)
++ {
++ this.ftFam = fam;
++ this.ftSz = sz;
++ this.ftSty = sty || Font.PLAIN;
++ };
++
++
++ this.drawPolyline = this.drawPolyLine = function(x, y, s)
++ {
++ for (var i=0 ; i<x.length-1 ; i++ )
++ this.drawLine(x[i], y[i], x[i+1], y[i+1]);
++ };
++
++
++ this.fillRect = function(x, y, w, h)
++ {
++ this.mkDiv(x, y, w, h);
++ };
++
++
++ this.drawPolygon = function(x, y)
++ {
++ this.drawPolyline(x, y);
++ this.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]);
++ };
++
++
++ this.drawEllipse = this.drawOval = function(x, y, w, h)
++ {
++ this.mkOv(x, y, w, h);
++ };
++
++
++ this.fillEllipse = this.fillOval = function(left, top, w, h)
++ {
++ var a = (w -= 1)>>1, b = (h -= 1)>>1,
++ wod = (w&1)+1, hod = (h&1)+1,
++ cx = left+a, cy = top+b,
++ x = 0, y = b,
++ ox = 0, oy = b,
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,
++ st = (aa2>>1)*(1-(b<<1)) + bb,
++ tt = (bb>>1) - aa2*((b<<1)-1),
++ pxl, dw, dh;
++ if (w+1) while (y > 0)
++ {
++ if (st < 0)
++ {
++ st += bb*((x<<1)+3);
++ tt += (bb<<1)*(++x);
++ }
++ else if (tt < 0)
++ {
++ st += bb*((x<<1)+3) - aa4*(y-1);
++ pxl = cx-x;
++ dw = (x<<1)+wod;
++ tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-3);
++ dh = oy-y;
++ this.mkDiv(pxl, cy-oy, dw, dh);
++ this.mkDiv(pxl, cy+oy-dh+hod, dw, dh);
++ ox = x;
++ oy = y;
++ }
++ else
++ {
++ tt -= aa2*((y<<1)-3);
++ st -= aa4*(--y);
++ }
++ }
++ this.mkDiv(cx-a, cy-oy, w+1, (oy<<1)+hod);
++ };
++
++
++
++/* fillPolygon method, implemented by Matthieu Haller.
++This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.
++C source of GD 1.8.4 found at http://www.boutell.com/gd/
++
++THANKS to Kirsten Schulz for the polygon fixes!
++
++The intersection finding technique of this code could be improved
++by remembering the previous intertersection, and by using the slope.
++That could help to adjust intersections to produce a nice
++interior_extrema. */
++ this.fillPolygon = function(array_x, array_y)
++ {
++ var i;
++ var y;
++ var miny, maxy;
++ var x1, y1;
++ var x2, y2;
++ var ind1, ind2;
++ var ints;
++
++ var n = array_x.length;
++
++ if (!n) return;
++
++
++ miny = array_y[0];
++ maxy = array_y[0];
++ for (i = 1; i < n; i++)
++ {
++ if (array_y[i] < miny)
++ miny = array_y[i];
++
++ if (array_y[i] > maxy)
++ maxy = array_y[i];
++ }
++ for (y = miny; y <= maxy; y++)
++ {
++ var polyInts = new Array();
++ ints = 0;
++ for (i = 0; i < n; i++)
++ {
++ if (!i)
++ {
++ ind1 = n-1;
++ ind2 = 0;
++ }
++ else
++ {
++ ind1 = i-1;
++ ind2 = i;
++ }
++ y1 = array_y[ind1];
++ y2 = array_y[ind2];
++ if (y1 < y2)
++ {
++ x1 = array_x[ind1];
++ x2 = array_x[ind2];
++ }
++ else if (y1 > y2)
++ {
++ y2 = array_y[ind1];
++ y1 = array_y[ind2];
++ x2 = array_x[ind1];
++ x1 = array_x[ind2];
++ }
++ else continue;
++
++ // modified 11. 2. 2004 Walter Zorn
++ if ((y >= y1) && (y < y2))
++ polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
++
++ else if ((y == maxy) && (y > y1) && (y <= y2))
++ polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);
++ }
++ polyInts.sort(integer_compare);
++ for (i = 0; i < ints; i+=2)
++ this.mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1);
++ }
++ };
++
++
++ this.drawString = function(txt, x, y)
++ {
++ this.htm += '<div style="position:absolute;white-space:nowrap;'+
++ 'left:' + x + 'px;'+
++ 'top:' + y + 'px;'+
++ 'font-family:' + this.ftFam + ';'+
++ 'font-size:' + this.ftSz + ';'+
++ 'color:' + this.color + ';' + this.ftSty + '">'+
++ txt +
++ '<\/div>';
++ }
++
++
++ this.drawImage = function(imgSrc, x, y, w, h)
++ {
++ this.htm += '<div style="position:absolute;'+
++ 'left:' + x + 'px;'+
++ 'top:' + y + 'px;'+
++ 'width:' + w + ';'+
++ 'height:' + h + ';">'+
++ '<img src="' + imgSrc + '" width="' + w + '" height="' + h + '">'+
++ '<\/div>';
++ }
++
++
++ this.clear = function()
++ {
++ this.htm = "";
++ if (this.cnv) this.cnv.innerHTML = this.defhtm;
++ };
++
++
++ this.mkOvQds = function(cx, cy, xl, xr, yt, yb, w, h)
++ {
++ this.mkDiv(xr+cx, yt+cy, w, h);
++ this.mkDiv(xr+cx, yb+cy, w, h);
++ this.mkDiv(xl+cx, yb+cy, w, h);
++ this.mkDiv(xl+cx, yt+cy, w, h);
++ };
++
++ this.setStroke(1);
++ this.setFont('verdana,geneva,helvetica,sans-serif', String.fromCharCode(0x31, 0x32, 0x70, 0x78), Font.PLAIN);
++ this.color = '#000000';
++ this.htm = '';
++ this.wnd = wnd || window;
++
++ if (!(jg_ie || jg_dom || jg_ihtm)) chkDHTM();
++ if (typeof id != 'string' || !id) this.paint = pntDoc;
++ else
++ {
++ this.cnv = document.all? (this.wnd.document.all[id] || null)
++ : document.getElementById? (this.wnd.document.getElementById(id) || null)
++ : null;
++ this.defhtm = (this.cnv && this.cnv.innerHTML)? this.cnv.innerHTML : '';
++ this.paint = jg_dom? pntCnvDom : jg_ie? pntCnvIe : jg_ihtm? pntCnvIhtm : pntCnv;
++ }
++
++ this.setPrintable(false);
++}
++
++
++
+ function integer_compare(x,y)
+-{return(x<y)?-1:((x>y)*1);}
+\ No newline at end of file
++{
++ return (x < y) ? -1 : ((x > y)*1);
++}
++
+Index: http/frames/index.php
+===================================================================
+--- http/frames/index.php (revision 2361)
++++ http/frames/index.php (working copy)
+@@ -18,14 +18,22 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require("../php/mb_validateSession.php");
+
+-require("../php/mb_validateSession.php");
+-$_SESSION["mb_user_gui"] = $_REQUEST["gui_id"];
+-require_once("../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
++//
++// check if user is allowed to access current GUI;
++// if not, return to login screen
++//
++if (!in_array($gui_id, $_SESSION["mb_user_guis"])) {
++ $e = new mb_exception("mb_validateSession.php: User: " . $_SESSION["mb_user_id"] . " not allowed to access GUI " . $gui_id);
++ header("Location: ".LOGIN);
++ die();
++}
++
++// user is allowed to access GUI, set in session.
++$_SESSION["mb_user_gui"] = $gui_id;
+
++// what is this for?
+ $pattern = '/sessionID/';
+
+ ?>
+@@ -41,13 +49,12 @@
+ <meta http-equiv="cache-control" content="no-cache">
+ <meta http-equiv="pragma" content="no-cache">
+ <meta http-equiv="expires" content="0">
++<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET;?>">
++<title><?php echo $gui_id;?> - presented by Mapbender</title>
+ <?php
+-echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+-?>
+-<title><?php echo $_REQUEST["gui_id"];?> - presented by Mapbender</title>
+-<?php
+-$sql = "SELECT * FROM gui_element_vars WHERE fkey_e_id = 'body' AND fkey_gui_id = $1 and var_type='file/css'";
+-$v = array($_REQUEST["gui_id"]);
++$sql = "SELECT * FROM gui_element_vars WHERE fkey_e_id = 'body' AND ";
++$sql .= "fkey_gui_id = $1 and var_type='file/css'";
++$v = array($gui_id);
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+ $cnt = 0;
+@@ -58,11 +65,11 @@
+ <style type="text/css">
+ <!--
+ <?php
+-$sql = "SELECT * FROM gui_element_vars WHERE fkey_e_id = 'body' AND fkey_gui_id = $1 and var_type='text/css'";
+-$v = array($_REQUEST["gui_id"]);
++$sql = "SELECT * FROM gui_element_vars WHERE fkey_e_id = 'body' AND ";
++$sql .= "fkey_gui_id = $1 and var_type='text/css'";
++$v = array($gui_id);
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+-$cnt = 0;
+ while($row = db_fetch_array($res)){
+ echo $row["var_value"];
+ }
+@@ -74,9 +81,10 @@
+ <script type='text/javascript' src="../javascripts/point.js"></script>
+ <script type='text/javascript' src="../javascripts/map_obj.js"></script>
+ <script type='text/javascript' src="../javascripts/wfs_obj.js"></script>
++
+ <?php
+-echo "<script type='text/javascript' src='../javascripts/map.php?gui_id=".$_REQUEST["gui_id"]."&".strip_tags(SID)."&mb_myBBOX=".$_REQUEST["mb_myBBOX"]."'></script>";
+-echo "<script type='text/javascript' src='../php/mod_createJSObjFromDB.php?". strip_tags (SID)."'></script>";
++echo "<script type='text/javascript' src='../javascripts/map.php?" . $urlParameters . "&mb_myBBOX=".$_REQUEST["mb_myBBOX"]."'></script>";
++echo "<script type='text/javascript' src='../php/mod_createJSObjFromDB.php?". $urlParameters . "'></script>";
+ /*********************************************/
+ $frame = "";
+ /*********************************************/
+@@ -82,15 +90,13 @@
+ /*********************************************/
+
+ $sql = "SELECT DISTINCT e_mb_mod FROM gui_element WHERE e_public = 1 AND fkey_gui_id = $1";
+-$v = array($_REQUEST["gui_id"]);
++$v = array($gui_id);
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+-$cnt = 0;
+ while($row = db_fetch_array($res)){
+ if($row["e_mb_mod"] != ""){
+- echo "<script type='text/javascript' src='../javascripts/".trim($row["e_mb_mod"])."?gui_id=".$_REQUEST["gui_id"]."'></script> ";
++ echo "<script type='text/javascript' src='../javascripts/".trim($row["e_mb_mod"])."?".$urlParameters."'></script> ";
+ }
+- $cnt++;
+ }
+ ?>
+ </head>
+@@ -96,7 +102,7 @@
+ </head>
+ <?php
+ $sql = "SELECT * FROM gui_element WHERE e_public = 1 AND fkey_gui_id = $1 ORDER BY e_pos";
+-$v = array($_REQUEST["gui_id"]);
++$v = array($gui_id);
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+ $i = 0;
+@@ -101,7 +107,7 @@
+ $res = db_prep_query($sql,$v,$t);
+ $i = 0;
+ while(db_fetch_row($res)){
+- $replacement = SID."&guiID=".$_REQUEST["gui_id"]."&elementID=".db_result($res,$i,"e_id");
++ $replacement = $urlParameters . "&elementID=" . db_result($res,$i,"e_id");
+ echo "<".db_result($res,$i,"e_element")." ";
+ if(db_result($res,$i,"e_id") != ""){
+ echo " id='".db_result($res,$i,"e_id")."'";
+Index: http/frames/login.php
+===================================================================
+--- http/frames/login.php (revision 2361)
++++ http/frames/login.php (working copy)
+@@ -1,5 +1,5 @@
+ <?php
+-# $Id: login.php 76 2006-08-15 12:25:34Z heuser $
++# $Id$
+ # Copyright (C) 2002 CCGIS
+ #
+ # This program is free software; you can redistribute it and/or modify
+@@ -152,8 +152,10 @@
+ }
+ if($_SESSION["mb_user_id"]){
+ if($row["mb_user_login_count"] < $loginMax){
+- $sql_del_cnt = "UPDATE mb_user SET mb_user_login_count = 0 WHERE mb_user_id = " . $_SESSION['mb_user_id'];
+- db_query($sql_del_cnt);
++ $sql_del_cnt = "UPDATE mb_user SET mb_user_login_count = 0 WHERE mb_user_id = $1";
++ $v = array($_SESSION['mb_user_id']);
++ $t = array("i");
++ db_prep_query($sql_del_cnt, $v, $t);
+ require_once(dirname(__FILE__)."/../php/mb_getGUIs.php");
+ $arrayGUIs = mb_getGUIs($row["mb_user_id"]);
+ $_SESSION["mb_user_guis"] = $arrayGUIs;
+Index: http/include/dyn_css.php
+===================================================================
+--- http/include/dyn_css.php (revision 2361)
++++ http/include/dyn_css.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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("../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+
+Index: http/include/dyn_js.php
+===================================================================
+--- http/include/dyn_js.php (revision 2361)
++++ http/include/dyn_js.php (working copy)
+@@ -17,6 +17,7 @@
+ # 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__)."/../php/mb_validateSession.php");
+ if(isset($gui_id))
+ {
+ $sql = "SELECT * FROM gui_element_vars WHERE fkey_e_id = $1 AND fkey_gui_id = $2 and var_type='var'";
+Index: http/include/dyn_php.php
+===================================================================
+--- http/include/dyn_php.php (revision 2361)
++++ http/include/dyn_php.php (working copy)
+@@ -17,6 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
++
+ if(isset($gui_id))
+ {
+ $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = $1 and var_type='php_var'";
+Index: http/index.php
+===================================================================
+--- http/index.php (revision 2361)
++++ http/index.php (working copy)
+@@ -109,7 +109,7 @@
+
+ <div class="mapbender_welcome">Welcome to <font align="left" color="#000000">Ma</font><font color="#0000CE">p</font><font color="#C00000">b</font><font color="#000000">ender</font></div>
+
+- <font color="#ff0000">Mapbender Version 2.4.3 (2007-10-05)</font>
++ <font color="#ff0000">Mapbender Version 2.4.5 (2008-04-07)</font>
+ </td></tr>
+ </table>
+ <br>
+Index: http/javascripts/map.js
+===================================================================
+--- http/javascripts/map.js (revision 2361)
++++ http/javascripts/map.js (working copy)
+@@ -44,7 +44,7 @@
+ return bbox_minx+","+bbox_miny+","+bbox_maxx+","+bbox_maxy;}}}
+ function setMapRequest(frameName){var functionName='setMapRequest';var ts=mb_timestamp();for(var i=0;i<mb_MapRequestPreFunctions.length;i++){var ret=eval(mb_MapRequestPreFunctions[i]);if(ret==false){return true;}}
+ for(var i=0;i<mb_mapObj.length;i++){var newMapRequest="";if(mb_mapObj[i].frameName==frameName){for(var ii=0;ii<mb_mapObj[i].wms.length;ii++){if(mb_mapObj[i].wms[ii].gui_wms_visible>0){var myDivId="div_"+ii;var myMapId="map_"+ii;var str_LayerStyles=mb_checkScale(frameName,i,ii);if(mb_mapObj[i].layers[ii]!=""&&str_LayerStyles[0]!=''){var newMapURL="";if(mb_mapObj[i].wms[ii].gui_wms_mapopacity!=1){var cadenaOpacity="opacity:"+mb_mapObj[i].wms[ii].gui_wms_mapopacity+"; Filter: Alpha(Opacity="+mb_mapObj[i].wms[ii].gui_wms_mapopacity*100+"); -moz-opacity:"+mb_mapObj[i].wms[ii].gui_wms_mapopacity+" ; -khtml-opacity:"+mb_mapObj[i].wms[ii].gui_wms_mapopacity;newMapRequest+="<div id='"+myDivId+"' style=\"position:absolute; top:0px; left:0px; z-index:"+ii+";"+cadenaOpacity+"\">";}
+-else{newMapRequest+="<div id='"+myDivId+"' style='position:absolute; top:0px; left:0px; z-index:'"+ii+"'>";}
++else{newMapRequest+="<div id='"+myDivId+"' style='position:absolute; top:0px; left:0px; z-index:"+ii+"'>";}
+ newMapRequest+="<img id='"+myMapId+"' name='mapimage' src='";newMapURL+=mb_mapObj[i].wms[ii].wms_getmap;newMapURL+=mb_getConjunctionCharacter(mb_mapObj[i].wms[ii].wms_getmap);if(mb_mapObj[i].wms[ii].wms_version=="1.0.0"){newMapURL+="WMTVER="+mb_mapObj[i].wms[ii].wms_version+"&REQUEST=map&";}
+ if(mb_mapObj[i].wms[ii].wms_version!="1.0.0"){newMapURL+="VERSION="+mb_mapObj[i].wms[ii].wms_version+"&REQUEST=GetMap&SERVICE=WMS&";}
+ newMapURL+="LAYERS="+str_LayerStyles[0]+"&";newMapURL+="STYLES="+str_LayerStyles[1]+"&";newMapURL+="SRS="+mb_mapObj[i].epsg+"&";newMapURL+="BBOX="+mb_mapObj[i].extent+"&";newMapURL+="WIDTH="+mb_mapObj[i].width+"&";newMapURL+="HEIGHT="+mb_mapObj[i].height+"&";newMapURL+="FORMAT="+mb_mapObj[i].wms[ii].gui_wms_mapformat+"&";newMapURL+="BGCOLOR=0xffffff&";if(mb_mapObj[i].wms[ii].gui_wms_mapformat.search(/gif/i)>-1||mb_mapObj[i].wms[ii].gui_wms_mapformat.search(/png/i)>-1){newMapURL+="TRANSPARENT=TRUE&";}
+Index: http/javascripts/map.php
+===================================================================
+--- http/javascripts/map.php (revision 2361)
++++ http/javascripts/map.php (working copy)
+@@ -17,8 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+ ob_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+
+ // see http://trac.osgeo.org/mapbender/ticket/79
+ ini_set('session.bug_compat_42',0);
+@@ -24,7 +24,6 @@
+ ini_set('session.bug_compat_42',0);
+ ini_set('session.bug_compat_warn',0);
+
+-session_start();
+ header('Content-type: application/x-javascript');
+
+ echo "var mb_nr = '".session_id()."';";
+@@ -38,12 +37,13 @@
+
+ include("map.js");
+
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++$mb_sql = "SELECT DISTINCT e_js_file, e_id, e_src, e_target, e_pos ";
++$mb_sql .= "FROM gui_element WHERE e_public = 1 AND fkey_gui_id = $1 ";
++$mb_sql .= "ORDER BY e_pos";
++$v = array($gui_id);
++$t = array("s");
++$mb_res = db_prep_query($mb_sql, $v, $t);
+
+-$mb_sql = "SELECT DISTINCT e_js_file, e_id, e_src, e_target, e_pos FROM gui_element WHERE e_public = 1 AND fkey_gui_id = '".$_REQUEST["gui_id"]."' ORDER BY e_pos";
+-$mb_res = db_query($mb_sql);
+-//$mb_cnt = 0;
+ while($row_js = db_fetch_array($mb_res)){
+ if($row_js["e_js_file"] != ""){
+ $e_id = $row_js["e_id"];
+Index: http/javascripts/mod_add_vendorspecific.php
+===================================================================
+--- http/javascripts/mod_add_vendorspecific.php (revision 2361)
++++ http/javascripts/mod_add_vendorspecific.php (working copy)
+@@ -18,6 +18,8 @@
+ # 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__)."/../php/mb_validateSession.php");
++
+ ?>
+ mb_registerVendorSpecific("mod_vs_init()");
+ function mod_vs_init(){
+Index: http/javascripts/mod_addWMS.php
+===================================================================
+--- http/javascripts/mod_addWMS.php (revision 2361)
++++ http/javascripts/mod_addWMS.php (working copy)
+@@ -17,12 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ $sql = "SELECT e_requires, e_target FROM gui_element WHERE e_id = 'addWMS' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+Index: http/javascripts/mod_addWMSfromfilteredList.php
+===================================================================
+--- http/javascripts/mod_addWMSfromfilteredList.php (revision 2361)
++++ http/javascripts/mod_addWMSfromfilteredList.php (working copy)
+@@ -17,7 +17,6 @@
+ # 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__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+ ?>
+@@ -247,14 +246,20 @@
+
+ $arrayGuis=mb_getGUIs($logged_user_id);
+ $sql_gui = "SELECT * FROM gui WHERE gui_id IN (";
++$v = $arrayGuis;
++$t = array();
+
+-for($i=0; $i<count($arrayGuis); $i++){
+- if($i>0){ $sql_gui .= ",";}
+- $sql_gui .= "'".$arrayGuis[$i]."'";
++for ($i = 1; $i <= count($arrayGuis); $i++){
++ if ($i > 1) {
++ $sql_gui .= ",";
++ }
++ $sql_gui .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql_gui.= ") ORDER BY gui_name";
+
+-$res_gui = db_query($sql_gui);
++
++$res_gui = db_prep_query($sql_gui, $v, $t);
+ while($row = db_fetch_array($res_gui)){
+ $gui_id[$cnt_gui] = $row["gui_id"];
+ $gui_name[$cnt_gui] = $row["gui_name"];
+@@ -266,14 +271,18 @@
+
+ /*get allocated wms from allocated gui ********************************************************************************************/
+ $sql_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id IN (";
+-
+-for($i=0; $i<count($arrayGuis); $i++){
+- if($i>0){ $sql_gui_wms .= ",";}
+- $sql_gui_wms .= "'".$arrayGuis[$i]."'";
++$v = $arrayGuis;
++$t = array();
++for ($i = 1; $i <= count($arrayGuis); $i++){
++ if ($i > 1) {
++ $sql_gui_wms .= ",";
++ }
++ $sql_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_gui_wms.= ") ORDER BY fkey_wms_id";
+
+-$res_gui_wms = db_query($sql_gui_wms);
++$res_gui_wms = db_prep_query($sql_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_gui_wms)){
+ $fkey_gui_id[$cnt_gui_wms] = $row["fkey_gui_id"];
+ $fkey_wms_id[$cnt_gui_wms] = $row["fkey_wms_id"];
+@@ -283,14 +292,18 @@
+
+ /*get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ $sql_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities, wms_version FROM wms WHERE wms_id IN (";
+-
+-for($i=0; $i<count($fkey_wms_id); $i++){
+- if($i>0){ $sql_wms .= ",";}
+- $sql_wms .= "'".$fkey_wms_id[$i]."'";
++$v = $fkey_wms_id;
++$t = array();
++for ($i = 1; $i <= count($fkey_wms_id); $i++){
++ if ($i > 1) {
++ $sql_wms .= ",";
++ }
++ $sql_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_wms.= ") ORDER BY wms_title";
+
+-$res_wms = db_query($sql_wms);
++$res_wms = db_prep_query($sql_wms, $v, $t);
+ while($row = db_fetch_array($res_wms)){
+ $wms_title[$cnt_wms] = $row["wms_title"];
+ $wms_abstract[$cnt_wms] = $row["wms_abstract"];
+@@ -302,7 +315,7 @@
+
+
+ /*INSERT HTML*/
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self . "' method='post'>";
+ # Button
+ echo "<table border='0' cellpadding='3' rules='rows'>";
+ echo "<tr>";
+@@ -324,8 +337,10 @@
+ #if (isset($show_group_wms))
+ if (!empty($show_group_wms)){
+ /*get gui goup ********************************************************************************************/
+- $sql_gui_mb_group = "SELECT fkey_gui_id, fkey_mb_group_id FROM gui_mb_group WHERE fkey_mb_group_id='".$show_group_wms."'";
+- $res_gui_mb_group = db_query($sql_gui_mb_group);
++ $sql_gui_mb_group = "SELECT fkey_gui_id, fkey_mb_group_id FROM gui_mb_group WHERE fkey_mb_group_id=$1";
++ $v = array($show_group_wms);
++ $t = array("s");
++ $res_gui_mb_group = db_prep_query($sql_gui_mb_group, $v, $t);
+
+ while($row = db_fetch_array($res_gui_mb_group)){
+ $group_gui_id[$cnt_gui_mb_group] = $row["fkey_gui_id"];
+@@ -339,13 +354,18 @@
+ /*get group gui WMS ********************************************************************************************/
+ if(count($group_gui_id)>0) {
+ $sql_fkey_group_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id IN (";
+- for($i=0; $i<count($group_gui_id); $i++){
+- if($i>0){ $sql_fkey_group_gui_wms .= ",";}
+- $sql_fkey_group_gui_wms .= "'".$group_gui_id[$i]."'";
++ $v = $group_gui_id;
++ $t = array();
++ for ($i = 1; $i <= count($group_gui_id); $i++){
++ if ($i > 1) {
++ $sql_fkey_group_gui_wms .= ",";
++ }
++ $sql_fkey_group_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_fkey_group_gui_wms.= ") ORDER BY fkey_wms_id";
+
+- $res_fkey_group_gui_wms = db_query($sql_fkey_group_gui_wms);
++ $res_fkey_group_gui_wms = db_prep_query($sql_fkey_group_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_fkey_group_gui_wms)){
+ $fkey_group_gui_gui_id[$cnt_fkey_group_gui_wms] = $row["fkey_gui_id"];
+ $fkey_group_gui_wms_id[$cnt_fkey_group_gui_wms] = $row["fkey_wms_id"];
+@@ -358,14 +378,18 @@
+ /*group: get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ if(count($fkey_group_gui_wms_id)>0){
+ $sql_group_gui_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities, wms_version FROM wms WHERE wms_id IN (";
+-
+- for($i=0; $i<count($fkey_group_gui_wms_id); $i++){
+- if($i>0){ $sql_group_gui_wms .= ",";}
+- $sql_group_gui_wms .= "'".$fkey_group_gui_wms_id[$i]."'";
++ $v = $fkey_group_gui_wms_id;
++ $t = array();
++ for ($i = 1; $i <= count($fkey_group_gui_wms_id); $i++){
++ if ($i > 1) {
++ $sql_group_gui_wms .= ",";
++ }
++ $sql_group_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_group_gui_wms.= ") ORDER BY wms_title";
+
+- $res_group_gui_wms = db_query($sql_group_gui_wms);
++ $res_group_gui_wms = db_prep_query($sql_group_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_group_gui_wms)){
+ $group_wms_title[$cnt_group_gui_wms] = $row["wms_title"];
+ $group_wms_abstract[$cnt_group_gui_wms] = $row["wms_abstract"];
+@@ -383,8 +407,10 @@
+ #if ($show_group_wms > 0)
+ if ($cnt_group_gui_wms > 0){
+ /*get goup name for showing in the table ********************************************************************************************/
+- $sql_group_name = "SELECT mb_group_id, mb_group_name FROM mb_group WHERE mb_group_id ='".$show_group_wms."'";
+- $res_group_name = db_query($sql_group_name);
++ $sql_group_name = "SELECT mb_group_id, mb_group_name FROM mb_group WHERE mb_group_id = $1";
++ $v = array($show_group_wms);
++ $t = array("s");
++ $res_group_name = db_prep_query($sql_group_name, $v, $t);
+ while($row = db_fetch_array($res_group_name)){
+ $group_name_table[$cnt_group_name] = $row["mb_group_name"];
+ $my_group_id_table[$cnt_group_name] = $row["mb_group_id"];
+@@ -426,10 +452,12 @@
+ /*show gui wms ********************************************************************************************/
+ if (!empty($show_gui_wms)){
+ /*get group gui WMS ********************************************************************************************/
+- $sql_fkey_show_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id ='".$show_gui_wms."'";
++ $sql_fkey_show_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id = $1";
++ $v = array($show_gui_wms);
++ $t = array("s");
+ #$sql_fkey_show_gui_wms.= ") ORDER BY fkey_wms_id";
+
+- $res_fkey_show_gui_wms = db_query($sql_fkey_show_gui_wms);
++ $res_fkey_show_gui_wms = db_prep_query($sql_fkey_show_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_fkey_show_gui_wms)){
+ $fkey_show_gui_gui_id[$cnt_fkey_show_gui_wms] = $row["fkey_gui_id"];
+ $fkey_show_gui_wms_id[$cnt_fkey_show_gui_wms] = $row["fkey_wms_id"];
+@@ -441,14 +469,18 @@
+ /*gui: get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ if(count($fkey_show_gui_wms_id)>0){
+ $sql_show_gui_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities, wms_id, wms_version FROM wms WHERE wms_id IN (";
+-
+- for($i=0; $i<count($fkey_show_gui_wms_id); $i++){
+- if($i>0){ $sql_show_gui_wms .= ",";}
+- $sql_show_gui_wms .= "'".$fkey_show_gui_wms_id[$i]."'";
++ $v = $fkey_show_gui_wms_id;
++ $t = array();
++ for ($i = 1; $i <= count($fkey_show_gui_wms_id); $i++){
++ if ($i > 1) {
++ $sql_show_gui_wms .= ",";
++ }
++ $sql_show_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_show_gui_wms.= ") ORDER BY wms_title";
+
+- $res_show_gui_wms = db_query($sql_show_gui_wms);
++ $res_show_gui_wms = db_prep_query($sql_show_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_show_gui_wms)){
+ $gui_wms_id[$cnt_show_gui_wms] = $row["wms_id"];
+ $gui_wms_title[$cnt_show_gui_wms] = $row["wms_title"];
+@@ -466,8 +498,10 @@
+
+ if ($cnt_show_gui_wms > 0){
+ /*get selected gui name for table caption ********************************************************************************************/
+- $sql_gui_table = "SELECT * FROM gui WHERE gui_id ='".$show_gui_wms."'";
+- $res_gui_table = db_query($sql_gui_table);
++ $sql_gui_table = "SELECT * FROM gui WHERE gui_id = $1";
++ $v = array($show_gui_wms);
++ $t = array("s");
++ $res_gui_table = db_prep_query($sql_gui_table, $v, $t);
+ while($row = db_fetch_array($res_gui_table)){
+ $gui_id_table[$cnt_gui_table] = $row["gui_id"];
+ $gui_name_table[$cnt_gui_table] = $row["gui_name"];
+@@ -513,10 +547,11 @@
+ /*show gui wms ********************************************************************************************/
+ if (!empty($show_gui_configured_wms)){
+ /*get group gui WMS ********************************************************************************************/
+- $sql_fkey_show_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id ='".$show_gui_configured_wms."'";
++ $sql_fkey_show_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id = $1";
+ #$sql_fkey_show_gui_wms.= ") ORDER BY fkey_wms_id";
+-
+- $res_fkey_show_gui_wms = db_query($sql_fkey_show_gui_wms);
++ $v = array($show_gui_configured_wms);
++ $t = array("s");
++ $res_fkey_show_gui_wms = db_prep_query($sql_fkey_show_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_fkey_show_gui_wms)){
+ $fkey_show_gui_gui_id[$cnt_fkey_show_gui_wms] = $row["fkey_gui_id"];
+ $fkey_show_gui_wms_id[$cnt_fkey_show_gui_wms] = $row["fkey_wms_id"];
+@@ -528,14 +563,18 @@
+ /*gui: get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ if(count($fkey_show_gui_wms_id)>0){
+ $sql_show_gui_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities, wms_id, wms_version FROM wms WHERE wms_id IN (";
+-
+- for($i=0; $i<count($fkey_show_gui_wms_id); $i++){
+- if($i>0){ $sql_show_gui_wms .= ",";}
+- $sql_show_gui_wms .= "'".$fkey_show_gui_wms_id[$i]."'";
++ $v = $fkey_show_gui_wms_id;
++ $t = array();
++ for ($i = 1; $i <= count($fkey_show_gui_wms_id); $i++){
++ if ($i > 1) {
++ $sql_show_gui_wms .= ",";
++ }
++ $sql_show_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_show_gui_wms.= ") ORDER BY wms_title";
+
+- $res_show_gui_wms = db_query($sql_show_gui_wms);
++ $res_show_gui_wms = db_prep_query($sql_show_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_show_gui_wms)){
+ $gui_wms_id[$cnt_show_gui_wms] = $row["wms_id"];
+ $gui_wms_title[$cnt_show_gui_wms] = $row["wms_title"];
+@@ -553,8 +592,10 @@
+
+ if ($cnt_show_gui_wms > 0){
+ /*get selected gui name for table caption ********************************************************************************************/
+- $sql_gui_table = "SELECT * FROM gui WHERE gui_id ='".$show_gui_configured_wms."'";
+- $res_gui_table = db_query($sql_gui_table);
++ $sql_gui_table = "SELECT * FROM gui WHERE gui_id = $1";
++ $v = array($show_gui_configured_wms);
++ $t = array("s");
++ $res_gui_table = db_prep_query($sql_gui_table, $v, $t);
+ while($row = db_fetch_array($res_gui_table)){
+ $gui_id_table[$cnt_gui_table] = $row["gui_id"];
+ $gui_name_table[$cnt_gui_table] = $row["gui_name"];
+Index: http/javascripts/mod_addWMSfromfilteredList_ajax.php
+===================================================================
+--- http/javascripts/mod_addWMSfromfilteredList_ajax.php (revision 2361)
++++ http/javascripts/mod_addWMSfromfilteredList_ajax.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
+
+ ?>
+Index: http/javascripts/mod_addWMSfromfilteredListDB.php
+===================================================================
+--- http/javascripts/mod_addWMSfromfilteredListDB.php (revision 2361)
++++ http/javascripts/mod_addWMSfromfilteredListDB.php (working copy)
+@@ -1,5 +1,5 @@
+ <?php
+-# $Id: mod_addWMSfromfilteredList.php 1274 2007-04-25 07:01:08Z christoph $
++# $Id$
+ # http://www.mapbender.org/index.php/mod_addWMSfromfilteredList.php
+ # Copyright (C) 2002 CCGIS
+ #
+@@ -17,7 +17,6 @@
+ # 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__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -101,14 +100,18 @@
+
+ $arrayGuis=mb_getGUIs($logged_user_id);
+ $sql_gui = "SELECT * FROM gui WHERE gui_id IN (";
+-
+-for($i=0; $i<count($arrayGuis); $i++){
+- if($i>0){ $sql_gui .= ",";}
+- $sql_gui .= "'".$arrayGuis[$i]."'";
++$v = $arrayGuis;
++$t = array();
++for ($i = 1; $i <= count($arrayGuis); $i++){
++ if ($i > 1) {
++ $sql_gui .= ",";
++ }
++ $sql_gui .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql_gui.= ") ORDER BY gui_name";
+
+-$res_gui = db_query($sql_gui);
++$res_gui = db_prep_query($sql_gui, $v, $t);
+ while($row = db_fetch_array($res_gui)){
+ $gui_id[$cnt_gui] = $row["gui_id"];
+ $gui_name[$cnt_gui] = $row["gui_name"];
+@@ -120,14 +123,18 @@
+
+ /*get allocated wms from allocated gui ********************************************************************************************/
+ $sql_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id IN (";
+-
+-for($i=0; $i<count($arrayGuis); $i++){
+- if($i>0){ $sql_gui_wms .= ",";}
+- $sql_gui_wms .= "'".$arrayGuis[$i]."'";
++$v = $arrayGuis;
++$t = array();
++for ($i = 1; $i <= count($arrayGuis); $i++) {
++ if ($i > 1) {
++ $sql_gui_wms .= ",";
++ }
++ $sql_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_gui_wms.= ") ORDER BY fkey_wms_id";
+
+-$res_gui_wms = db_query($sql_gui_wms);
++$res_gui_wms = db_prep_query($sql_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_gui_wms)){
+ $fkey_gui_id[$cnt_gui_wms] = $row["fkey_gui_id"];
+ $fkey_wms_id[$cnt_gui_wms] = $row["fkey_wms_id"];
+@@ -137,14 +144,18 @@
+
+ /*get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ $sql_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities, wms_version FROM wms WHERE wms_id IN (";
+-
+-for($i=0; $i<count($fkey_wms_id); $i++){
+- if($i>0){ $sql_wms .= ",";}
+- $sql_wms .= "'".$fkey_wms_id[$i]."'";
++$v = $fkey_wms_id;
++$t = array();
++for ($i = 1; $i <= count($fkey_wms_id); $i++){
++ if ($i > 1) {
++ $sql_wms .= ",";
++ }
++ $sql_wms .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql_wms.= ") ORDER BY wms_title";
+
+-$res_wms = db_query($sql_wms);
++$res_wms = db_prep_query($sql_wms, $v, $t);
+ while($row = db_fetch_array($res_wms)){
+ $wms_title[$cnt_wms] = $row["wms_title"];
+ $wms_abstract[$cnt_wms] = $row["wms_abstract"];
+@@ -156,7 +167,7 @@
+
+
+ /*INSERT HTML*/
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+
+ if (empty($wms_show)){ #gui
+ echo $selectGuiText;
+@@ -181,10 +192,12 @@
+ echo "<input type='button' class='wms_button' name='wms2' value='" . $selectOtherGuiText . "' onclick = 'mod_show_gui()'></td>";
+
+ /*get group gui WMS ********************************************************************************************/
+- $sql_fkey_show_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id ='".$wms_show."'";
++ $sql_fkey_show_gui_wms = "SELECT DISTINCT fkey_wms_id, fkey_gui_id FROM gui_wms WHERE fkey_gui_id = $1";
+ #$sql_fkey_show_gui_wms.= ") ORDER BY fkey_wms_id";
+
+- $res_fkey_show_gui_wms = db_query($sql_fkey_show_gui_wms);
++ $v = array($wms_show);
++ $t = array("s");
++ $res_fkey_show_gui_wms = db_prep_query($sql_fkey_show_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_fkey_show_gui_wms)){
+ $fkey_show_gui_gui_id[$cnt_fkey_show_gui_wms] = $row["fkey_gui_id"];
+ $fkey_show_gui_wms_id[$cnt_fkey_show_gui_wms] = $row["fkey_wms_id"];
+@@ -196,14 +209,18 @@
+ /*gui: get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ if(count($fkey_show_gui_wms_id)>0){
+ $sql_show_gui_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities, wms_id, wms_version FROM wms WHERE wms_id IN (";
+-
+- for($i=0; $i<count($fkey_show_gui_wms_id); $i++){
+- if($i>0){ $sql_show_gui_wms .= ",";}
+- $sql_show_gui_wms .= "'".$fkey_show_gui_wms_id[$i]."'";
++ $v = $fkey_show_gui_wms_id;
++ $t = array();
++ for ($i = 1; $i <= count($fkey_show_gui_wms_id); $i++){
++ if ($i > 1) {
++ $sql_show_gui_wms .= ",";
++ }
++ $sql_show_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_show_gui_wms.= ") ORDER BY wms_title";
+
+- $res_show_gui_wms = db_query($sql_show_gui_wms);
++ $res_show_gui_wms = db_prep_query($sql_show_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_show_gui_wms)){
+ $gui_wms_id[$cnt_show_gui_wms] = $row["wms_id"];
+ $gui_wms_title[$cnt_show_gui_wms] = $row["wms_title"];
+@@ -221,8 +238,10 @@
+
+ if ($cnt_show_gui_wms > 0){
+ /*get selected gui name for table caption ********************************************************************************************/
+- $sql_gui_table = "SELECT * FROM gui WHERE gui_id ='".$wms_show."'";
+- $res_gui_table = db_query($sql_gui_table);
++ $sql_gui_table = "SELECT * FROM gui WHERE gui_id = $1";
++ $v = array($wms_show);
++ $t = array("s");
++ $res_gui_table = db_prep_query($sql_gui_table, $v, $t);
+ while($row = db_fetch_array($res_gui_table)){
+ $gui_id_table[$cnt_gui_table] = $row["gui_id"];
+ $gui_name_table[$cnt_gui_table] = $row["gui_name"];
+Index: http/javascripts/mod_addWMSfromList.php
+===================================================================
+--- http/javascripts/mod_addWMSfromList.php (revision 2361)
++++ http/javascripts/mod_addWMSfromList.php (working copy)
+@@ -1,5 +1,5 @@
+ <?php
+-# $Id: mod_addWMSfromList.php 76 2006-08-15 12:25:34Z heuser $
++# $Id$
+ # http://www.mapbender.org/index.php/mod_addWMSfromList.php
+ # Copyright (C) 2002 CCGIS
+ #
+@@ -17,7 +17,6 @@
+ # 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__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+
+@@ -110,14 +109,18 @@
+ $arrayGuis=mb_getGUIs($logged_user_id);
+
+ $sql_gui = "SELECT * FROM gui WHERE gui_id IN (";
+-
+-for($i=0; $i<count($arrayGuis); $i++){
+- if($i>0){ $sql_gui .= ",";}
+- $sql_gui .= "'".$arrayGuis[$i]."'";
++$v = $arrayGuis;
++$t = array();
++for ($i = 1; $i <= count($arrayGuis); $i++){
++ if ($i > 1) {
++ $sql_gui .= ",";
++ }
++ $sql_gui .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql_gui.= ") ORDER BY gui_name";
+
+-$res_gui = db_query($sql_gui);
++$res_gui = db_prep_query($sql_gui, $v, $t);
+ while($row = db_fetch_array($res_gui)){
+ $gui_id[$cnt_gui] = $row["gui_id"];
+ $gui_name[$cnt_gui] = $row["gui_name"];
+@@ -127,14 +130,18 @@
+
+ /*get allocated wms from allocated gui ********************************************************************************************/
+ $sql_gui_wms = "SELECT DISTINCT fkey_wms_id FROM gui_wms WHERE fkey_gui_id IN (";
+-
+-for($i=0; $i<count($arrayGuis); $i++){
+- if($i>0){ $sql_gui_wms .= ",";}
+- $sql_gui_wms .= "'".$arrayGuis[$i]."'";
++$v = $arrayGuis;
++$t = array();
++for ($i = 1; $i <= count($arrayGuis); $i++){
++ if ($i > 1) {
++ $sql_gui_wms .= ",";
++ }
++ $sql_gui_wms .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql_gui_wms.= ") ORDER BY fkey_wms_id";
+
+-$res_gui_wms = db_query($sql_gui_wms);
++$res_gui_wms = db_prep_query($sql_gui_wms, $v, $t);
+ while($row = db_fetch_array($res_gui_wms)){
+ $fkey_gui_id[$cnt_gui_wms] = $row["fkey_gui_id"];
+ $fkey_wms_id[$cnt_gui_wms] = $row["fkey_wms_id"];
+@@ -144,10 +151,14 @@
+
+ /*get allocated wms-Abstract and wms-Capabilities from allocated gui ********************************************************************************************/
+ $sql_wms = "SELECT DISTINCT wms_title, wms_abstract, wms_getcapabilities,wms_version FROM wms WHERE wms_id IN (";
+-
+-for($i=0; $i<count($fkey_wms_id); $i++){
+- if($i>0){ $sql_wms .= ",";}
+- $sql_wms .= "'".$fkey_wms_id[$i]."'";
++$v = $fkey_wms_id;
++$t = array();
++for ($i = 1; $i <= count($fkey_wms_id); $i++){
++ if ($i > 1) {
++ $sql_wms .= ",";
++ }
++ $sql_wms .= "$" . $i;
++ array_push($t, "s");
+ }
+ #$sql_wms.= ") ORDER BY wms_id";
+ $sql_wms.= ") ORDER BY wms_title";
+@@ -152,7 +163,7 @@
+ #$sql_wms.= ") ORDER BY wms_id";
+ $sql_wms.= ") ORDER BY wms_title";
+
+-$res_wms = db_query($sql_wms);
++$res_wms = db_prep_query($sql_wms, $v, $t);
+ while($row = db_fetch_array($res_wms)){
+ $wms_title[$cnt_wms] = $row["wms_title"];
+ $wms_abstract[$cnt_wms] = $row["wms_abstract"];
+Index: http/javascripts/mod_back.php
+===================================================================
+--- http/javascripts/mod_back.php (revision 2361)
++++ http/javascripts/mod_back.php (working copy)
+@@ -17,10 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'back' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_center1.php
+===================================================================
+--- http/javascripts/mod_center1.php (revision 2361)
++++ http/javascripts/mod_center1.php (working copy)
+@@ -17,12 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'center1' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_coords.php
+===================================================================
+--- http/javascripts/mod_coords.php (revision 2361)
++++ http/javascripts/mod_coords.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'showCoords' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_coords_div.php
+===================================================================
+--- http/javascripts/mod_coords_div.php (revision 2361)
++++ http/javascripts/mod_coords_div.php (working copy)
+@@ -16,11 +16,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'showCoords_div' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_copyright.php
+===================================================================
+--- http/javascripts/mod_copyright.php (revision 2361)
++++ http/javascripts/mod_copyright.php (working copy)
+@@ -17,9 +17,9 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $e_id_css = 'copyright';
+-$gui_id = $_REQUEST["gui_id"];
+ include '../include/dyn_js.php';
+
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+Index: http/javascripts/mod_dependentDiv.php
+===================================================================
+--- http/javascripts/mod_dependentDiv.php (revision 2361)
++++ http/javascripts/mod_dependentDiv.php (working copy)
+@@ -17,12 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'dependentDiv' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_dependentIframe.php
+===================================================================
+--- http/javascripts/mod_dependentIframe.php (revision 2361)
++++ http/javascripts/mod_dependentIframe.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'dependentIframe' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_digitize_tab.php
+===================================================================
+--- http/javascripts/mod_digitize_tab.php (revision 2361)
++++ http/javascripts/mod_digitize_tab.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+-require_once("../php/mb_validateSession.php");
+-require_once("../../conf/mapbender.conf");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ $gui_id = $_SESSION["mb_user_gui"];
+@@ -641,38 +639,68 @@
+ smP += "<div class='t_img'>";
+ smP += "<img src='"+parent.mb_trans.src+"' width='0' height='"+mod_digitize_height+"'></div>";
+
+- for(var i=0; i<d.count(); i++){
+- if (!nonTransactionalEditable && !isTransactional(d.get(i))) {
+- nonTransactionalHighlight.add(d.get(i), nonTransactionalColor);
++ 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 isMoveOrInsertOrDelete = mod_digitizeEvent == button_move || mod_digitizeEvent == button_insert || mod_digitizeEvent == button_delete;
++ var minDist = 5;
++
++ 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; j<d.get(i).count(); j++){
+- for(var k = 0; k < d.getGeometry(i,j).count(); k++){
+- var pos = parent.makeRealWorld2mapPos(mod_digitize_target,d.getPoint(i,j,k).x,d.getPoint(i,j,k).y);
+-
+- if (!d.getGeometry(i,j).isComplete() &&
+- ( (k == 0 && d.get(i).geomType == parent.geomType.polygon) || (k == d.getGeometry(i,j).count()-1 && d.get(i).geomType == parent.geomType.line))) {
+- smP += "<div class='bp' style='top:"+(pos[1]-2)+"px;left:"+(pos[0]-2)+"px;z-index:"+digitizeTransactionalZIndex+";background-color:"+linepointColor+"'";
+- }
+- else {
+- smP += "<div class='bp' style='top:"+(pos[1]-2)+"px;left:"+(pos[0]-2)+"px;z-index:"+digitizeTransactionalZIndex+";'";
++ 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 currentPointMap = parent.realToMap(mod_digitize_target, currentPoint)
++
++ 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:"+
++ digitizeTransactionalZIndex+";background-color:"+linepointColor+"'";
++ }
++ else {
++ smPArray[smPArray.length] = "<div class='bp' style='top:"+(currentPointMap.y-2)+"px;left:"+(currentPointMap.x-2)+"px;z-index:"+digitizeTransactionalZIndex+";'";
++ }
++ if(k==0 && isPolygon && !isComplete){
++ smPArray[smPArray.length] = " title='"+closePolygon_title+"' ";
++ }
++ if(isMoveOrInsertOrDelete) {
++ smPArray[smPArray.length] = " onmouseover='parent.window.frames[\""+mod_digitize_elName+"\"].handleBasepoint(this,"+i+","+j+","+k+")' ;";
++ }
++ 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);
++ }
++ }
+ }
+- if(j==0 && d.get(i).geomType == parent.geomType.polygon && !d.getGeometry(i,j).isComplete()){
+- smP += " title='"+closePolygon_title+"' ";
+- }
+- if(mod_digitizeEvent == button_move || mod_digitizeEvent == button_insert || mod_digitizeEvent == button_delete) {
+- smP += " onmouseover='parent.window.frames[\""+mod_digitize_elName+"\"].handleBasepoint(this,"+i+","+j+","+k+")' ;";
+- }
+- smP += "></div>";
+- }
+- var mapObjInd = parent.getMapObjIndexByName(mod_digitize_target);
+- for(var k = 1; k < d.getGeometry(i,j).count(); k++){
+- var p0 = parent.realToMap(mod_digitize_target, d.getPoint(i,j,k));
+- var p1 = parent.realToMap(mod_digitize_target, d.getPoint(i,j,k-1));
+- points = parent.calculateVisibleDash(p0, p1, parent.mb_mapObj[mapObjInd].width, parent.mb_mapObj[mapObjInd].height);
+- if (points != false) {
+- smP += evaluateDashes(points[0], points[1], i, j, k);
+- }
++ var previousPointMap = currentPointMap;
+ }
+ }
+ }
+@@ -677,7 +705,8 @@
+ }
+ }
+ }
+- digitizeDivTag.write(smP);
++ digitizeDivTag.write(smPArray.join(""));
++
+ }
+
+ function evaluateDashes(start, end, memberIndex, geomIndex, pointIndex){
+Index: http/javascripts/mod_displayWmc.php
+===================================================================
+--- http/javascripts/mod_displayWmc.php (revision 2361)
++++ http/javascripts/mod_displayWmc.php (working copy)
+@@ -16,7 +16,7 @@
+ # 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.
+-include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+
+ $wmc_id = $_GET["wmc_id"];
+Index: http/javascripts/mod_dragMapSize.php
+===================================================================
+--- http/javascripts/mod_dragMapSize.php (revision 2361)
++++ http/javascripts/mod_dragMapSize.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'dragMapSize' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_dynamicOverview.php
+===================================================================
+--- http/javascripts/mod_dynamicOverview.php (revision 2361)
++++ http/javascripts/mod_dynamicOverview.php (working copy)
+@@ -18,9 +18,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $e_id_css = 'dynamicOverview';
+-$gui_id = $_REQUEST["gui_id"];
+ include '../include/dyn_js.php';
+
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+Index: http/javascripts/mod_embedded_legend.php
+===================================================================
+--- http/javascripts/mod_embedded_legend.php (revision 2361)
++++ http/javascripts/mod_embedded_legend.php (working copy)
+@@ -16,8 +16,7 @@
+ # 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.
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/javascripts/mod_export_image.php
+===================================================================
+--- http/javascripts/mod_export_image.php (revision 2361)
++++ http/javascripts/mod_export_image.php (working copy)
+@@ -16,8 +16,8 @@
+ # 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.
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+-session_start();
++
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+Index: http/javascripts/mod_featureInfo.php
+===================================================================
+--- http/javascripts/mod_featureInfo.php (revision 2361)
++++ http/javascripts/mod_featureInfo.php (working copy)
+@@ -17,12 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'featureInfo1' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_featureInfoRedirect.php
+===================================================================
+--- http/javascripts/mod_featureInfoRedirect.php (revision 2361)
++++ http/javascripts/mod_featureInfoRedirect.php (working copy)
+@@ -16,6 +16,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+ ?>
+
+ /*
+Index: http/javascripts/mod_featureInfoTunnel.php
+===================================================================
+--- http/javascripts/mod_featureInfoTunnel.php (revision 2361)
++++ http/javascripts/mod_featureInfoTunnel.php (working copy)
+@@ -17,11 +17,6 @@
+ # 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__)."/../../conf/mapbender.conf");
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'featureInfoTunnel' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_forward.php
+===================================================================
+--- http/javascripts/mod_forward.php (revision 2361)
++++ http/javascripts/mod_forward.php (working copy)
+@@ -17,12 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'forward' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_gazetteerSQL_client.php
+===================================================================
+--- http/javascripts/mod_gazetteerSQL_client.php (revision 2361)
++++ http/javascripts/mod_gazetteerSQL_client.php (working copy)
+@@ -1,7 +1,5 @@
+ <?php
+-session_start();
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+
+ $e_id = $_REQUEST["elementID"];
+ $e_target = explode(",", $_REQUEST["e_target"]);
+Index: http/javascripts/mod_getArea.php
+===================================================================
+--- http/javascripts/mod_getArea.php (revision 2361)
++++ http/javascripts/mod_getArea.php (working copy)
+@@ -17,12 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'getArea' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+@@ -47,7 +43,7 @@
+ function mod_getArea_go(){
+ if(mod_measure_RX[mod_measure_RX.length -1] == mod_measure_RX[0] && mod_measure_RY[mod_measure_RY.length -1] == mod_measure_RY[0]){
+ var ind = getMapObjIndexByName(mod_getArea_target);
+- var url = "../php/mod_evalArea.php?x=";
++ var url = "../php/mod_evalArea.php?<?php echo $urlParameters;?>&x=";
+ for(var i=0; i<mod_measure_RX.length;i++){
+ if(i>0){ url += ",";}
+ url += mod_measure_RX[i];
+Index: http/javascripts/mod_help.php
+===================================================================
+--- http/javascripts/mod_help.php (revision 2361)
++++ http/javascripts/mod_help.php (working copy)
+@@ -17,10 +17,7 @@
+ # 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__)."/../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+-$gui_id = $_REQUEST["gui_id"];
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'help' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+Index: http/javascripts/mod_highlightPOI.php
+===================================================================
+--- http/javascripts/mod_highlightPOI.php (revision 2361)
++++ http/javascripts/mod_highlightPOI.php (working copy)
+@@ -17,11 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-include("../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'highlightPOI' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_home.php
+===================================================================
+--- http/javascripts/mod_home.php (revision 2361)
++++ http/javascripts/mod_home.php (working copy)
+@@ -15,10 +15,11 @@
+ # 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__)."/../php/mb_validateSession.php");
+ ?>
+ function mod_home_init(){
+ <?php
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+ echo "var url = '".LOGIN."';";
+ echo "var name = '".urlencode($_SESSION["mb_user_name"])."';";
+ echo "var pw = '".$_SESSION["mb_user_password"]."';";
+Index: http/javascripts/mod_initWmc.php
+===================================================================
+--- http/javascripts/mod_initWmc.php (revision 2361)
++++ http/javascripts/mod_initWmc.php (working copy)
+@@ -1,6 +1,10 @@
+ <?php
+-session_start();
+-$wmc_id = $_SESSION['mb_myWmc'];
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
++if ($_SESSION['mb_myWmc'] && $_SESSION['mb_myWmc_action'] && in_array($_SESSION['mb_myWmc_action'], array("load", "merge", "append"))) {
++ $action = $_SESSION['mb_myWmc_action'];
++ $wmc_id = $_SESSION['mb_myWmc'];
++}
+ $user = $_SESSION['mb_user_id'];
+ $meetingPointId = $_SESSION['mb_myKml'];
+
+@@ -81,7 +85,7 @@
+ echo "wmc_id = '".$wmc_id."';";
+ $wmc = new wmc();
+ $wmc->createObjFromWMC_id($wmc_id);
+- $js_wmc .= $wmc->createJsObjFromWMC("", $e_target[0], "load");
++ $js_wmc .= $wmc->createJsObjFromWMC("", $e_target[0], $action);
+
+ if (!empty($x) && !empty($y) && !empty($icon)) {
+
+Index: http/javascripts/mod_insertKmlIntoDb.php
+===================================================================
+--- http/javascripts/mod_insertKmlIntoDb.php (revision 2361)
++++ http/javascripts/mod_insertKmlIntoDb.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-include("../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ include("../classes/class_kml.php");
+-session_start();
+-$gui_id = $_REQUEST["gui_id"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+@@ -39,7 +37,7 @@
+ <?php
+ echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+ ?>
+-<title>MB2 - <?php echo $_REQUEST["gui_id"];?></title>
++<title>MB2 - <?php echo $gui_id;?></title>
+ <?php
+
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+Index: http/javascripts/mod_insertLayerPreviewIntoDb.php
+===================================================================
+--- http/javascripts/mod_insertLayerPreviewIntoDb.php (revision 2361)
++++ http/javascripts/mod_insertLayerPreviewIntoDb.php (working copy)
+@@ -17,14 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-include("../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-
+
+ function escByteA($binData) {
+ $search = array();
+Index: http/javascripts/mod_key.php
+===================================================================
+--- http/javascripts/mod_key.php (revision 2361)
++++ http/javascripts/mod_key.php (working copy)
+@@ -17,10 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
+-$gui_id = $_REQUEST["gui_id"];
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'keyHandler' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_legend.php
+===================================================================
+--- http/javascripts/mod_legend.php (revision 2361)
++++ http/javascripts/mod_legend.php (working copy)
+@@ -16,8 +16,7 @@
+ # 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__)."/../../conf/mapbender.conf");
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ $gui_id = $_SESSION["mb_user_gui"];
+Index: http/javascripts/mod_loadwmc.php
+===================================================================
+--- http/javascripts/mod_loadwmc.php (revision 2361)
++++ http/javascripts/mod_loadwmc.php (working copy)
+@@ -17,13 +17,9 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_wmc.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect(DBSERVER, OWNER, PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'savewmc' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_measure.php
+===================================================================
+--- http/javascripts/mod_measure.php (revision 2361)
++++ http/javascripts/mod_measure.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'measure' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_navFrame.php
+===================================================================
+--- http/javascripts/mod_navFrame.php (revision 2361)
++++ http/javascripts/mod_navFrame.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ include '../include/dyn_js.php';
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++
+ $sql = "SELECT e_target,e_src FROM gui_element WHERE e_id = 'navFrame' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_owsproxy.php
+===================================================================
+--- http/javascripts/mod_owsproxy.php (revision 2361)
++++ http/javascripts/mod_owsproxy.php (working copy)
+@@ -16,8 +16,6 @@
+ # 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.
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+-session_start();
+
+ include(dirname(__FILE__)."/../php/mb_validateSession.php");
+ include(dirname(__FILE__)."/../classes/class_administration.php");
+Index: http/javascripts/mod_pan.php
+===================================================================
+--- http/javascripts/mod_pan.php (revision 2361)
++++ http/javascripts/mod_pan.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'pan1' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_perimeter.php
+===================================================================
+--- http/javascripts/mod_perimeter.php (revision 2361)
++++ http/javascripts/mod_perimeter.php (working copy)
+@@ -17,12 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'perimeter' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_poi.php
+===================================================================
+--- http/javascripts/mod_poi.php (revision 2361)
++++ http/javascripts/mod_poi.php (working copy)
+@@ -1,6 +1,6 @@
+ <?php
+-require_once("../../conf/mapbender.conf");
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+@@ -314,7 +314,7 @@
+ }
+ }
+ if($has_result == false){echo "Kein Ergebnis!";}
+- echo "<form action='" . $PHP_SELF . "?".SID."' method='post'>";
++ echo "<form action='" . $self."' method='post'>";
+ echo "</form>";
+ }
+ ?>
+Index: http/javascripts/mod_print1.php
+===================================================================
+--- http/javascripts/mod_print1.php (revision 2361)
++++ http/javascripts/mod_print1.php (working copy)
+@@ -17,9 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ include(dirname(__FILE__)."/../../conf/print.conf");
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/javascripts/mod_repaint.php
+===================================================================
+--- http/javascripts/mod_repaint.php (revision 2361)
++++ http/javascripts/mod_repaint.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'repaint' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_resize_mapsize.php
+===================================================================
+--- http/javascripts/mod_resize_mapsize.php (revision 2361)
++++ http/javascripts/mod_resize_mapsize.php (working copy)
+@@ -20,10 +20,7 @@
+ # 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__)."/../../conf/mapbender.conf");
+-$gui_id = $_REQUEST["gui_id"];
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ $e_id_css = "resizeMapsize";
+ include("../include/dyn_js.php");
+Index: http/javascripts/mod_sandclock.php
+===================================================================
+--- http/javascripts/mod_sandclock.php (revision 2361)
++++ http/javascripts/mod_sandclock.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'sandclock' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_sandclock2.php
+===================================================================
+--- http/javascripts/mod_sandclock2.php (revision 2361)
++++ http/javascripts/mod_sandclock2.php (working copy)
+@@ -17,15 +17,12 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'sandclock2' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+-$res = db_query($sql, $v, $t);
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_target = db_result($res,0,"e_target");
+Index: http/javascripts/mod_saveLayerPreview.php
+===================================================================
+--- http/javascripts/mod_saveLayerPreview.php (revision 2361)
++++ http/javascripts/mod_saveLayerPreview.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once("../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'savewmc' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_savewmc.php
+===================================================================
+--- http/javascripts/mod_savewmc.php (revision 2361)
++++ http/javascripts/mod_savewmc.php (working copy)
+@@ -17,9 +17,7 @@
+ # 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("../../conf/mapbender.conf");
+-
+-$gui_id = $_REQUEST["gui_id"];
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ include("../include/dyn_js.php");
+
+@@ -53,7 +51,7 @@
+ else {
+ generalTitle = prompt("Save WMC as...");
+ }
+- mb_ajax_post("../php/mod_insertWmcIntoDb.php", {"saveInSession":session, "generalTitle":generalTitle, "mapObject":mb_mapObj[ind].toJSONString()}, function (result, status) {
++ mb_ajax_post("../php/mod_insertWmcIntoDb.php?<?php echo $urlParameters;?>", {"saveInSession":session, "generalTitle":generalTitle, "mapObject":mb_mapObj[ind].toJSONString()}, function (result, status) {
+ alert(result);
+ });
+ }
+\ No newline at end of file
+Index: http/javascripts/mod_saveWmcKml.php
+===================================================================
+--- http/javascripts/mod_saveWmcKml.php (revision 2361)
++++ http/javascripts/mod_saveWmcKml.php (working copy)
+@@ -17,12 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/mod_savewmc.php");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'savewmc' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_scalebar.php
+===================================================================
+--- http/javascripts/mod_scalebar.php (revision 2361)
++++ http/javascripts/mod_scalebar.php (working copy)
+@@ -17,10 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'scalebar' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_scaleHint.php
+===================================================================
+--- http/javascripts/mod_scaleHint.php (revision 2361)
++++ http/javascripts/mod_scaleHint.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'setScaleHint' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_scaleSel.php
+===================================================================
+--- http/javascripts/mod_scaleSel.php (revision 2361)
++++ http/javascripts/mod_scaleSel.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'scaleSelect' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_scaleText.php
+===================================================================
+--- http/javascripts/mod_scaleText.php (revision 2361)
++++ http/javascripts/mod_scaleText.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'scaleText' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_selArea.php
+===================================================================
+--- http/javascripts/mod_selArea.php (revision 2361)
++++ http/javascripts/mod_selArea.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'selArea1' AND fkey_gui_id = '".$gui_id."'";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_selArea1.php
+===================================================================
+--- http/javascripts/mod_selArea1.php (revision 2361)
++++ http/javascripts/mod_selArea1.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'selArea1' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_selectMapsize.php
+===================================================================
+--- http/javascripts/mod_selectMapsize.php (revision 2361)
++++ http/javascripts/mod_selectMapsize.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'selectMapsize' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_setBackground.php
+===================================================================
+--- http/javascripts/mod_setBackground.php (revision 2361)
++++ http/javascripts/mod_setBackground.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'setBackground' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_setBackground_all.php
+===================================================================
+--- http/javascripts/mod_setBackground_all.php (revision 2361)
++++ http/javascripts/mod_setBackground_all.php (working copy)
+@@ -18,11 +18,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'setBackground_all' AND fkey_gui_id = $1 ";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_setBBOX1.php
+===================================================================
+--- http/javascripts/mod_setBBOX1.php (revision 2361)
++++ http/javascripts/mod_setBBOX1.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'setBBOX' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_setPOI2Scale.php
+===================================================================
+--- http/javascripts/mod_setPOI2Scale.php (revision 2361)
++++ http/javascripts/mod_setPOI2Scale.php (working copy)
+@@ -17,12 +17,12 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$gui_id = $_REQUEST["gui_id"];
+-include("../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-$sql = "SELECT e_target FROM gui_element WHERE e_id = 'setPOI2Scale' AND fkey_gui_id = '".$gui_id."'";
+-$res = db_query($sql);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
++$sql = "SELECT e_target FROM gui_element WHERE e_id = 'setPOI2Scale' AND fkey_gui_id = $1";
++$v = array($gui_id);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+
+ while($row = db_fetch_array($res)){
+Index: http/javascripts/mod_setTimeout.php
+===================================================================
+--- http/javascripts/mod_setTimeout.php (revision 2361)
++++ http/javascripts/mod_setTimeout.php (working copy)
+@@ -18,10 +18,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $e_id_css = 'timeout';
+-$gui_id = $_REQUEST["gui_id"];
+ include '../include/dyn_js.php';
+
+ ?>
+Index: http/javascripts/mod_state.php
+===================================================================
+--- http/javascripts/mod_state.php (revision 2361)
++++ http/javascripts/mod_state.php (working copy)
+@@ -17,9 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-//require(dirname(__FILE__)."/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $gui_id = $_SESSION["mb_user_gui"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ ?>
+Index: http/javascripts/mod_tab.php
+===================================================================
+--- http/javascripts/mod_tab.php (revision 2361)
++++ http/javascripts/mod_tab.php (working copy)
+@@ -19,7 +19,7 @@
+
+ /********** Configuration*************************************************/
+
+-$gui_id = $_REQUEST["gui_id"];
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $e_id_css = 'tabs';
+ include(dirname(__FILE__).'/../include/dyn_js.php');
+
+Index: http/javascripts/mod_toggleModule.php
+===================================================================
+--- http/javascripts/mod_toggleModule.php (revision 2361)
++++ http/javascripts/mod_toggleModule.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_target FROM gui_element WHERE e_id = 'toggleModule' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_usemap.php
+===================================================================
+--- http/javascripts/mod_usemap.php (revision 2361)
++++ http/javascripts/mod_usemap.php (working copy)
+@@ -16,6 +16,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+ ?>
+ var mod_usemap_target = 'mapframe1';
+ var mod_usemap_wfs = "<url>";
+Index: http/javascripts/mod_wfs_gazetteer_client.php
+===================================================================
+--- http/javascripts/mod_wfs_gazetteer_client.php (revision 2361)
++++ http/javascripts/mod_wfs_gazetteer_client.php (working copy)
+@@ -1,5 +1,5 @@
+ <?php
+-# $Id: mod_wfs_gazetteer_ajax.php 1307 2007-05-09 10:06:24Z christoph $
++# $Id$
+ # maintained by http://www.mapbender.org/index.php/User:Verena Diewald
+ # http://www.mapbender.org/index.php/WFS_gazetteer
+ # Copyright (C) 2002 CCGIS
+@@ -18,7 +18,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $gui_id = $_SESSION["mb_user_gui"];
+
+ $target = $_REQUEST["target"];
+@@ -24,7 +24,6 @@
+ $target = $_REQUEST["target"];
+ $e_id_css = $_REQUEST["e_id_css"];
+
+-require_once("../../conf/mapbender.conf");
+
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+@@ -99,7 +98,7 @@
+
+
+ function initModWfsGazetteer() {
+- parent.mb_ajax_json("../php/mod_wfs_gazetteer_server.php", {command:"getWfsConf",wfsConfIdString:wfsConfIdString}, function(json, status) {
++ parent.mb_ajax_json("../php/mod_wfs_gazetteer_server.php?<?php echo SID;?>", {command:"getWfsConf",wfsConfIdString:wfsConfIdString}, function(json, status) {
+ global_wfsConfObj = json;
+ var wfsCount = 0;
+ for (var wfsConfId in global_wfsConfObj) {
+@@ -109,7 +108,7 @@
+ }
+ }
+ if (wfsCount === 0) {
+- var e = parent.Mb_exception("no wfs conf id available.");
++ var e = new parent.Mb_exception("no wfs conf id available.");
+ }
+ else if (wfsCount === 1) {
+ appendStyles();
+@@ -124,7 +123,11 @@
+ function appendWfsConfSelectBox() {
+ var selectNode = document.createElement("select");
+ selectNode.name = "wfs_conf_sel";
+- selectNode.setAttribute("onchange", "global_selectedWfsConfId = this.value;appendStyles();appendWfsForm()");
++ selectNode.onchange = function () {
++ global_selectedWfsConfId = this.value;
++ appendStyles();
++ appendWfsForm();
++ };
+
+ var isSelected = false;
+ for (var wfsConfId in global_wfsConfObj) {
+Index: http/javascripts/mod_wfs_SpatialRequest.php
+===================================================================
+--- http/javascripts/mod_wfs_SpatialRequest.php (revision 2361)
++++ http/javascripts/mod_wfs_SpatialRequest.php (working copy)
+@@ -1,5 +1,5 @@
+ <?php
+-#$Id: mod_wfs_spatialRequest.php,v 1.4 2006/03/08 15:26:26 c_baudson Exp $
++#$Id$
+ #$Header: /cvsroot/mapbender/mapbender/http/javascripts/mod_wfs_spatialRequest.php,v 1.4 2006/03/08 15:26:26 c_baudson Exp $
+ # Copyright (C) 2002 CCGIS
+ #
+@@ -17,15 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+-require_once("../php/mb_validateSession.php");
+-require_once("../../conf/mapbender.conf");
+ require_once("../../conf/wfs_default.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+-
+-$gui_id = $_REQUEST["gui_id"];
+ $e_id_css = "setSpatialRequest";
+
+ $wfs_conf_filename = "wfs_default.conf";
+@@ -33,8 +27,10 @@
+ include("../../conf/" . $wfs_conf_filename);
+
+ include '../include/dyn_js.php';
+-$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'setSpatialRequest' AND fkey_gui_id = '".$gui_id."'";
+-$res = db_query($sql);
++$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'setSpatialRequest' AND fkey_gui_id = $1";
++$v = array($gui_id);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_src = $row["e_src"];
+@@ -408,7 +404,7 @@
+ }
+ filter += '</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs>';
+ filter += '</gml:Polygon></Within></ogc:Filter>';
+- mb_get_geom(url, filter, i, w_[i]);
++ mb_get_geom(url, filter, i, wfs_config[w_[i]]['featuretype_name'], w_[i], w[i]);
+ }
+ }
+ else if(queryGeom.geomType==geomType.line){
+@@ -430,7 +426,7 @@
+ filter += rectangle[0].x+","+rectangle[0].y+ " " + rectangle[1].x+","+rectangle[1].y;
+ filter += "</gml:coordinates></gml:Box></ogc:BBOX></ogc:Filter>";
+ url += param;
+- mb_get_geom(url, filter, i, w_[i]);
++ mb_get_geom(url, filter, i, wfs_config[w_[i]]['featuretype_name'], w_[i], w[i]);
+ }
+ }
+ else if(queryGeom.geomType == geomType.point){
+@@ -451,7 +447,7 @@
+ filter += (tmp.x + buffer) + "," + (tmp.y + buffer) + " " + (tmp.x - buffer) + "," + (tmp.y + buffer) + " " + (tmp.x - buffer) + "," + (tmp.y - buffer);
+ filter += "</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></Intersects></ogc:Filter>";
+ url += param;
+- mb_get_geom(url, filter, i, w_[i]);
++ mb_get_geom(url, filter, i, wfs_config[w_[i]]['featuretype_name'], w_[i], w[i]);
+ }
+ }
+ // highlight = new Highlight(mb_wfs_targets, highlight_tag_id, {"position":"absolute", "top":"0px", "left":"0px", "z-index":generalHighlightZIndex}, generalHighlightLineWidth);
+@@ -458,10 +454,9 @@
+ return true;
+ }
+
+-function mb_get_geom(url, filter, index, wfs_conf_id) {
+-
+- mb_ajax_post("../" + wfsResultModulePath + wfsResultModuleFilename,{'url':url,'filter':filter,'typename':wfs_config[wfs_conf_id]['featuretype_name'],'wfs_conf_id':wfs_conf_id},function(js_code,status){
+-// alert(js_code);
++function mb_get_geom(url, filter, index, typename, js_wfs_conf_id, db_wfs_conf_id) {
++ mb_ajax_post("../" + wfsResultModulePath + wfsResultModuleFilename, {'url':url,'filter':filter,'typename':typename,'js_wfs_conf_id':js_wfs_conf_id, 'db_wfs_conf_id':db_wfs_conf_id}, function(js_code,status){
++ // alert(js_code);
+ eval(js_code);
+ if (typeof(geom) == 'object') mb_execWfsReadSubFunctions(geom);
+ // prompt('', js_code);
+Index: http/javascripts/mod_zoomCoords.php
+===================================================================
+--- http/javascripts/mod_zoomCoords.php (revision 2361)
++++ http/javascripts/mod_zoomCoords.php (working copy)
+@@ -1,10 +1,8 @@
+ <?php
+-#$Id: mod_zoomCoords.php 76 2006-08-15 12:25:34Z heuser $
++#$Id$
+ #$Header: /cvsroot/mapbender/mapbender/http/javascripts/mod_zoomCoords.php,v 1.10 2006/03/09 08:57:13 uli_rothstein Exp $
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -70,8 +68,10 @@
+
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-$sql = "SELECT e_target FROM gui_element WHERE e_id = 'zoomCoords' AND fkey_gui_id = '".$_SESSION["mb_user_gui"]."'";
+-$res = db_query($sql);
++$sql = "SELECT e_target FROM gui_element WHERE e_id = 'zoomCoords' AND fkey_gui_id = $1";
++$v = array($_SESSION["mb_user_gui"]);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_target = $row["e_target"];
+@@ -131,7 +131,7 @@
+ <body bgcolor='#ffffff' onload=''>
+
+ <?php
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+ #coordinates
+
+ # Deutsche Version
+Index: http/javascripts/mod_zoomFull.php
+===================================================================
+--- http/javascripts/mod_zoomFull.php (revision 2361)
++++ http/javascripts/mod_zoomFull.php (working copy)
+@@ -1,12 +1,12 @@
+ <?php
+-#$Id: mod_zoomFull.php 76 2006-08-15 12:25:34Z heuser $
++#$Id$
+ #$Header: /cvsroot/mapbender/mapbender/http/javascripts/mod_zoomFull.php,v 1.8 2005/09/13 18:16:42 bjoern_heuser Exp $
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'zoomFull' AND fkey_gui_id = '".$gui_id."'";
+-$res = db_query($sql);
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
++$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'zoomFull' AND fkey_gui_id = $1";
++$v = array($gui_id);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_src = $row["e_src"];
+Index: http/javascripts/mod_zoomIn1.php
+===================================================================
+--- http/javascripts/mod_zoomIn1.php (revision 2361)
++++ http/javascripts/mod_zoomIn1.php (working copy)
+@@ -17,11 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+ $sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'zoomIn1' AND fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+Index: http/javascripts/mod_zoomOut1.php
+===================================================================
+--- http/javascripts/mod_zoomOut1.php (revision 2361)
++++ http/javascripts/mod_zoomOut1.php (working copy)
+@@ -1,13 +1,12 @@
+ <?php
+-#$Id: mod_zoomOut1.php 76 2006-08-15 12:25:34Z heuser $
++#$Id$
+ #$Header: /cvsroot/mapbender/mapbender/http/javascripts/mod_zoomOut1.php,v 1.8 2005/09/13 18:16:42 bjoern_heuser Exp $
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-$gui_id = $_REQUEST["gui_id"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'zoomOut1' AND fkey_gui_id = '".$gui_id."'";
+-$res = db_query($sql);
++$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'zoomOut1' AND fkey_gui_id = $1";
++$v = array($gui_id);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_src = $row["e_src"];
+Index: http/javascripts/wfs.js
+===================================================================
+--- http/javascripts/wfs.js (revision 2361)
++++ http/javascripts/wfs.js (working copy)
+@@ -17,14 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+ require_once("../php/mb_validateSession.php");
+-require_once("../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+
+-$gui_id = $_REQUEST["gui_id"];
+ $e_id_css = "wfs";
+ include '../include/dyn_js.php';
+ require_once("wfs_usemap.js");
+Index: http/php/createImageFromText.php
+===================================================================
+--- http/php/createImageFromText.php (revision 2361)
++++ http/php/createImageFromText.php (working copy)
+@@ -23,7 +23,7 @@
+
+ $text_x = 4;
+ $text_y = 0;
+-$rect_w = 7 * mb_strlen($text) + $text_x;
++$rect_w = 7 * strlen($text) + $text_x;
+ $rect_h = 14 + $text_y;
+
+ $im = ImageCreate($rect_w, $rect_h);
+Index: http/php/mb_js_exception.php
+===================================================================
+--- http/php/mb_js_exception.php (revision 2361)
++++ http/php/mb_js_exception.php (working copy)
+@@ -1,4 +1,6 @@
+ <?php
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $message = $_POST['text'];
+ $level = $_POST['level'];
+
+Index: http/php/mb_listWMCs.php
+===================================================================
+--- http/php/mb_listWMCs.php (revision 2361)
++++ http/php/mb_listWMCs.php (working copy)
+@@ -16,7 +16,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $gui_id = $_SESSION["mb_user_gui"];
+ $user_id = $_SESSION["mb_user_id"];
+
+@@ -26,8 +27,6 @@
+ $delWmcId = $_POST["del_wmc_id"];
+ $clientFilename = $_FILES['local_wmc_filename']['tmp_name'];
+
+-$form_target = $_SERVER["PHP_SELF"] . "?" . SID;
+-
+ require_once("../../conf/mapbender.conf");
+ require_once("../classes/class_administration.php");
+ require_once("../classes/class_mb_exception.php");
+@@ -46,7 +45,7 @@
+ <title>Select web map contect document from list</title>
+ </head>
+ <body>
+- <form name='delete_wmc' action='<?php echo $form_target; ?>' method='POST'>
++ <form name='delete_wmc' action='<?php echo $self; ?>' method='POST'>
+ <input type='hidden' id='delete_wmc' name='del_wmc_id' value ='' >
+ </form>
+
+@@ -98,8 +97,10 @@
+ }
+
+ function getTarget($gui_id) {
+- $sql = "SELECT e_requires, e_target FROM gui_element WHERE e_id = 'loadwmc' AND fkey_gui_id = '".$gui_id."'";
+- $res = db_query($sql);
++ $sql = "SELECT e_requires, e_target FROM gui_element WHERE e_id = 'loadwmc' AND fkey_gui_id = $1";
++ $v = array($gui_id);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_target = $row["e_target"];
+@@ -164,7 +165,7 @@
+ // load a WMC from file
+ ?>
+ <h2 style='font-family: Arial, Helvetica, sans-serif; color: #808080;background-color: White;'><font align='left' color='#000000'>load WMC from file</font></h2>
+-<form enctype="multipart/form-data" action="<?php echo $form_target;?>" method=POST target="_self">
++<form enctype="multipart/form-data" action="<?php echo $self;?>" method=POST target="_self">
+ <input type='file' name='local_wmc_filename'>
+ <input type='submit' value='load'>
+ </form>
+@@ -171,7 +172,7 @@
+ <?php
+
+ // load a WMC from list
+-echo mb_listWMCs($wmcIdArray, $form_target);
++echo mb_listWMCs($wmcIdArray, $self);
+
+ if ($wmcId && in_array($wmcId, $wmcIdArray)){
+ if ($action == "delete") {
+Index: http/php/mb_validatePermission.php
+===================================================================
+--- http/php/mb_validatePermission.php (revision 2361)
++++ http/php/mb_validatePermission.php (working copy)
+@@ -17,26 +17,68 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-include_once(dirname(__FILE__)."/../classes/class_administration.php");
+-if(!isset($_SESSION["mb_user_id"]) || !isset($_SESSION["mb_user_ip"]) || $_SESSION['mb_user_ip'] != $_SERVER['REMOTE_ADDR']){
+- header("Location: ".LOGIN);
+- exit;
++require(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
++$admin = new administration();
++
++//
++// check if GUI id and element id are set
++//
++$msg = "missing in " . $_SERVER["PHP_SELF"];
++if (!isset($gui_id)) {
++ $e = new mb_exception("GUI id " . $msg);
++ die();
++}
++if (!isset($e_id)) {
++ $e = new mb_exception("Element id " . $msg);
+ die();
+ }
+-if(isset($_REQUEST["gui_id"])){
+- if( !in_array($_REQUEST["gui_id"],$_SESSION["mb_user_guis"])){
+- header("Location: ".LOGIN);
+- exit;
+- die();
++
++//
++// check if the user is allowed to access this module
++//
++$isAllowed = $admin->getModulPermission($_SESSION["mb_user_id"], $gui_id, $e_id);
++
++//
++// if the module is an iframe, also check if the filename matches the
++// filename of the GUI element with the given e_id
++//
++// (if PHP_SELF is "map.php", we trust the script.)
++//
++if (!preg_match("/^.*\/javascripts\/map\.php$/", $_SERVER["PHP_SELF"])) {
++
++ $isCorrectScript = true;
++
++ $sql = "SELECT e_element FROM gui_element WHERE e_id = $1 AND fkey_gui_id = $2";
++ $v = array($e_id, $gui_id);
++ $t = array("s", "s");
++ $res = db_prep_query($sql, $v, $t);
++ while ($row = db_fetch_array($res)) {
++ if (!$admin->checkModulePermission_new($_SESSION["mb_user_id"], $_SERVER["PHP_SELF"], $row["e_element"])) {
++ $isCorrectScript = false;
++ break;
++ }
+ }
++// $e = new mb_notice($e_id . ": isAllowed: " . $isAllowed . ", isCorrectScript: " . $isCorrectScript);
++ $isAllowed = $isAllowed && $isCorrectScript;
+ }
+-$n = new administration();
+-$m = $n->getModulPermission($_SESSION["mb_user_id"],$_REQUEST["guiID"],$_REQUEST["elementID"]);
+-if($m == false){
++
++//
++// If the user is not allowed to access the module, return to the login screen.
++//
++if (!$isAllowed) {
++ $msg = "mb_validatePermission.php: User " . $_SESSION["mb_user_id"] . " is not allowed to access ".
++ "module " . $e_id;
++ $e = new mb_exception($msg);
+ header("Location: ".LOGIN);
+- exit;
+ die();
+ }
++
++$e = new mb_notice("mb_validatePermission.php: checking file " . $_SERVER["PHP_SELF"] . "...permission valid.");
++
++//
++// delete global variables
++//
++unset($admin, $isAllowed, $e, $isCorrectScript, $msg, $myGuisArray);
+ ?>
+\ No newline at end of file
+Index: http/php/mb_validateSession.php
+===================================================================
+--- http/php/mb_validateSession.php (revision 2361)
++++ http/php/mb_validateSession.php (working copy)
+@@ -18,17 +18,73 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ session_start();
+-include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-if(!isset($_SESSION["mb_user_id"]) || !isset($_SESSION["mb_user_ip"]) || $_SESSION['mb_user_ip'] != $_SERVER['REMOTE_ADDR']){
+- header("Location: ".LOGIN);
+- exit;
+- die();
++require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
++
++//
++// establish database connection
++//
++$con = db_connect($DBSERVER, $OWNER, $PW);
++db_select_db(DB, $con);
++
++$e = new mb_notice("mb_validateSession.php: checking file " . $_SERVER["PHP_SELF"]);
++
++//
++// check if user data is valid; if not, return to login screen
++//
++if (!isset($_SESSION["mb_user_id"]) ||
++ !isset($_SESSION["mb_user_ip"]) ||
++ $_SESSION['mb_user_ip'] != $_SERVER['REMOTE_ADDR']) {
++
++ $e = new mb_exception("mb_validateSession.php: Invalid user: " . $_SESSION["mb_user_id"]);
++ header("Location: " . LOGIN);
++ die();
+ }
+-if(isset($_REQUEST["gui_id"])){
+- if( !in_array($_REQUEST["gui_id"],$_SESSION["mb_user_guis"])){
+- header("Location: ".LOGIN);
+- exit;
+- die();
++
++//
++// set the global var gui_id
++//
++if (!$gui_id) {
++ $e = new mb_notice("gui id not set");
++ if ($_REQUEST["guiID"]) {
++ $e = new mb_notice("gui id set to guiID");
++ $gui_id = $_REQUEST["guiID"];
++ }
++ elseif ($_REQUEST["gui_id"]) {
++ $e = new mb_notice("gui id set to gui_id");
++ $gui_id = $_REQUEST["gui_id"];
++ }
++ else {
++ $e = new mb_notice("mb_validateSession.php: gui_id not set in script: " . $_SERVER["PHP_SELF"]);
+ }
+ }
++
++//
++// set the global var e_id
++//
++if (!$e_id) {
++ if (isset($_REQUEST["elementID"])) {
++ $e_id = $_REQUEST["elementID"];
++ }
++ elseif (isset($_REQUEST["e_id"])) {
++ $e_id = $_REQUEST["e_id"];
++ }
++ else {
++ $e = new mb_notice("mb_validateSession.php: e_id not set in script: " . $_SERVER["PHP_SELF"]);
++ }
++}
++
++//
++// set variables used for form targets or links
++//
++$urlParameters = SID;
++if (isset($gui_id)) {
++ $urlParameters .= "&guiID=" . $gui_id;
++}
++if (isset($e_id)) {
++ $urlParameters .= "&elementID=" . $e_id;
++}
++$self = $_SERVER["PHP_SELF"] . "?" . $urlParameters;
++
++$e = new mb_notice("mb_validateSession.php: GUI: " . $gui_id . ", checking file " . $_SERVER["PHP_SELF"] . "...session valid.");
+ ?>
+\ No newline at end of file
+Index: http/php/mod_addWmsFromFeatureInfo.php
+===================================================================
+--- http/php/mod_addWmsFromFeatureInfo.php (revision 2361)
++++ http/php/mod_addWmsFromFeatureInfo.php (working copy)
+@@ -17,7 +17,6 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+Index: http/php/mod_addWMSfromfilteredList_server.php
+===================================================================
+--- http/php/mod_addWMSfromfilteredList_server.php (revision 2361)
++++ http/php/mod_addWMSfromfilteredList_server.php (working copy)
+@@ -17,8 +17,6 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_wms.php");
+Index: http/php/mod_changeEPSG.php
+===================================================================
+--- http/php/mod_changeEPSG.php (revision 2361)
++++ http/php/mod_changeEPSG.php (working copy)
+@@ -18,8 +18,10 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ require(dirname(__FILE__)."/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $gui_id = $_SESSION["mb_user_gui"];
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ ?>
+@@ -53,7 +55,7 @@
+
+ # transform coordinates
+ if(isset($_REQUEST["srs"])){
+- require_once("../../conf/mapbender.conf");
++ require_once(dirname(__FILE__) . "/../../conf/mapbender.conf");
+ $arraymapObj = split("###", $_REQUEST["srs"]);
+ echo "<script type='text/javascript'>";
+ echo "var newExtent = new Array();";
+@@ -59,60 +61,73 @@
+ echo "var newExtent = new Array();";
+ for($i=0; $i < count($arraymapObj); $i++){
+ $temp = split(",",$arraymapObj[$i]);
+- if(SYS_DBTYPE=='pgsql'){
+- $con = db_connect($DBSERVER,$OWNER,$PW);
+- $sqlMinx = "SELECT X(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as minx";
+- $resMinx = db_query($sqlMinx);
+- $minx = db_result($resMinx,0,"minx");
+-
+- $sqlMiny = "SELECT Y(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as miny";
+- $resMiny = db_query($sqlMiny);
+- $miny = db_result($resMiny,0,"miny");
+-
+- $sqlMaxx = "SELECT X(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as maxx";
+- $resMaxx =db_query($sqlMaxx);
+- $maxx = db_result($resMaxx,0,"maxx");
+-
+- $sqlMaxy = "SELECT Y(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as maxy";
+- $resMaxy = db_query($sqlMaxy);
+- $maxy = db_result($resMaxy,0,"maxy");
+- }else{
+- $con_string = "host=$GEOS_DBSERVER port=$GEOS_PORT dbname=$GEOS_DB user=$GEOS_OWNER password=$GEOS_PW";
+- $con = pg_connect($con_string) or die ("Error while connecting database");
+-
+- $sqlMinx = "SELECT X(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as minx";
+- $resMinx = pg_query($con,$sqlMinx);
+- $minx = pg_fetch_result($resMinx,0,"minx");
+-
+- $sqlMiny = "SELECT Y(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as miny";
+- $resMiny = pg_query($con,$sqlMiny);
+- $miny = pg_fetch_result($resMiny,0,"miny");
+-
+- $sqlMaxx = "SELECT X(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as maxx";
+- $resMaxx = pg_query($con,$sqlMaxx);
+- $maxx = pg_fetch_result($resMaxx,0,"maxx");
+-
+- $sqlMaxy = "SELECT Y(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".str_replace("EPSG:","",$temp[1])."),".str_replace("EPSG:","",$_REQUEST["newSRS"]).")) as maxy";
+- $resMaxy = pg_query($con,$sqlMaxy);
+- $maxy = pg_fetch_result($resMaxy,0,"maxy");
+- }
+- $extenty = $maxy - $miny;
+- $extentx = $maxx - $minx;
+- $relation_px_x = $temp[6] / $temp[7];
+- $relation_px_y = $temp[7] / $temp[6];
+- $relation_bbox_x = $extentx / $extenty;
++
++ // check if parameters are valid geometries to
++ // avoid SQL injections
+
+- if($relation_bbox_x <= $relation_px_x){
+- $centerx = $minx + ($extentx/2);
+- $minx = $centerx - $relation_px_x * $extenty / 2;
+- $maxx = $centerx + $relation_px_x * $extenty / 2;
++ $oldEPSG = preg_replace("/EPSG:/","",$temp[1]);
++ $newEPSG = preg_replace("/EPSG:/","",$_REQUEST["newSRS"]);
++
++ if (is_numeric($temp[2]) && is_numeric($temp[3]) && is_numeric($temp[4]) && is_numeric($temp[5]) && is_numeric($oldEPSG) && is_numeric($newEPSG)) {
++
++ if(SYS_DBTYPE=='pgsql'){
++ $con = db_connect($DBSERVER,$OWNER,$PW);
++ $sqlMinx = "SELECT X(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".$oldEPSG."),".$newEPSG.")) as minx";
++ $resMinx = db_query($sqlMinx);
++ $minx = db_result($resMinx,0,"minx");
++
++ $sqlMiny = "SELECT Y(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".$oldEPSG."),".$newEPSG.")) as miny";
++ $resMiny = db_query($sqlMiny);
++ $miny = db_result($resMiny,0,"miny");
++
++ $sqlMaxx = "SELECT X(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".$oldEPSG."),".$newEPSG.")) as maxx";
++ $resMaxx = db_query($sqlMaxx);
++ $maxx = db_result($resMaxx,0,"maxx");
++
++ $sqlMaxy = "SELECT Y(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".$oldEPSG."),".$newEPSG.")) as maxy";
++ $resMaxy = db_query($sqlMaxy);
++ $maxy = db_result($resMaxy,0,"maxy");
++ }else{
++ $con_string = "host=$GEOS_DBSERVER port=$GEOS_PORT dbname=$GEOS_DB user=$GEOS_OWNER password=$GEOS_PW";
++ $con = pg_connect($con_string) or die ("Error while connecting database");
++
++ $sqlMinx = "SELECT X(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".$oldEPSG."),".$newEPSG.")) as minx";
++ $resMinx = pg_query($con,$sqlMinx);
++ $minx = pg_fetch_result($resMinx,0,"minx");
++
++ $sqlMiny = "SELECT Y(transform(GeometryFromText('POINT(".$temp[2]." ".$temp[3].")',".$oldEPSG."),".$newEPSG.")) as miny";
++ $resMiny = pg_query($con,$sqlMiny);
++ $miny = pg_fetch_result($resMiny,0,"miny");
++
++ $sqlMaxx = "SELECT X(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".$oldEPSG."),".$newEPSG.")) as maxx";
++ $resMaxx = pg_query($con,$sqlMaxx);
++ $maxx = pg_fetch_result($resMaxx,0,"maxx");
++
++ $sqlMaxy = "SELECT Y(transform(GeometryFromText('POINT(".$temp[4]." ".$temp[5].")',".$oldEPSG."),".$newEPSG.")) as maxy";
++ $resMaxy = pg_query($con,$sqlMaxy);
++ $maxy = pg_fetch_result($resMaxy,0,"maxy");
++ }
++ $extenty = $maxy - $miny;
++ $extentx = $maxx - $minx;
++ $relation_px_x = $temp[6] / $temp[7];
++ $relation_px_y = $temp[7] / $temp[6];
++ $relation_bbox_x = $extentx / $extenty;
++
++ if($relation_bbox_x <= $relation_px_x){
++ $centerx = $minx + ($extentx/2);
++ $minx = $centerx - $relation_px_x * $extenty / 2;
++ $maxx = $centerx + $relation_px_x * $extenty / 2;
++ }
++ if($relation_bbox_x > $relation_px_x){
++ $centery = $miny + ($extenty/2);
++ $miny = $centery - $relation_px_y * $extentx / 2;
++ $maxy = $centery + $relation_px_y * $extentx / 2;
++ }
++ echo "newExtent[".$i."] = '".$temp[0].",".$_REQUEST["newSRS"].",".$minx.",".$miny.",".$maxx.",".$maxy."';";
+ }
+- if($relation_bbox_x > $relation_px_x){
+- $centery = $miny + ($extenty/2);
+- $miny = $centery - $relation_px_y * $extentx / 2;
+- $maxy = $centery + $relation_px_y * $extentx / 2;
+- }
+- echo "newExtent[".$i."] = '".$temp[0].",".$_REQUEST["newSRS"].",".$minx.",".$miny.",".$maxx.",".$maxy."';";
++ else {
++ echo "var e = new parent.Mb_exception('mod_changeEPSG.php: invalid input parameter (p1 = (" . $temp[2] . "," . $temp[3] . "), p2 = (" . $temp[4] . "," . $temp[5] . "), old EPSG: " . $oldEPSG . ", new EPSG: " . $newEPSG . ", ).');";
++ }
+ }
+ echo "</script>";
+ }
+@@ -186,7 +201,7 @@
+ </script>
+ </head>
+ <body leftmargin="1" topmargin="1" onload="mod_changeEPSG_init()" bgcolor="red">
+-<form action="<?php echo $PHP_SELF .'?'.SID ?>" method='POST'>
++<form action="<?php echo $self; ?>" method='POST'>
+ <select class='epsg' name='epsg' onchange='mod_changeEPSG()'>
+ <option value="">undefined</option>
+ <option value="EPSG:4326">EPSG:4326</option>
+Index: http/php/mod_changeEPSG_dynamic.php
+===================================================================
+--- http/php/mod_changeEPSG_dynamic.php (revision 2361)
++++ http/php/mod_changeEPSG_dynamic.php (working copy)
+@@ -230,7 +230,7 @@
+
+ <?php
+ /*insert EPSG into selectbox************************************************************************************/
+-echo "<form action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form action='" . $self ."' method='post'>";
+ echo "<select class='epsg' name='epsg' onChange='mod_changeEPSG()'>";
+ for($i=0; $i<$cnt_epsg_wms; $i++){
+ echo "<option value='" . $epsg_code[$i] . "' ";
+Index: http/php/mod_changePassword.php
+===================================================================
+--- http/php/mod_changePassword.php (revision 2361)
++++ http/php/mod_changePassword.php (working copy)
+@@ -21,7 +21,6 @@
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+
+-import_request_variables("PG");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -146,7 +145,7 @@
+
+ /* HTML */
+ echo "<fieldset><legend>Change password:</legend>";
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self ."' method='post'>";
+ echo "<table cellpadding='5' cellspacing='0' border='0'>";
+ echo "<td>";
+ echo "new password:";
+Index: http/php/mod_createJSLayerObjFromXML.php
+===================================================================
+--- http/php/mod_createJSLayerObjFromXML.php (revision 2361)
++++ http/php/mod_createJSLayerObjFromXML.php (working copy)
+@@ -18,6 +18,7 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require(dirname(__FILE__)."/mb_validateSession.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_createJSObjFromDBByWMS.php
+===================================================================
+--- http/php/mod_createJSObjFromDBByWMS.php (revision 2361)
++++ http/php/mod_createJSObjFromDBByWMS.php (working copy)
+@@ -17,8 +17,6 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../classes/class_wms.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+@@ -23,6 +21,7 @@
+ require_once(dirname(__FILE__)."/../classes/class_wms.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
++require(dirname(__FILE__)."/mb_validateSession.php");
+
+ $wms_id = $_GET["wms_id"];
+ $gui_id = $_GET["gui_id"];
+@@ -52,11 +51,7 @@
+ }
+ ?>
+ </script>
+-<!--
+-<script language="JavaScript" type="text/javascript">
+-alert("3/3 mod_createJSObjFromDBByWMS: WMS ID = <?php echo $wms_id;?>, GUI ID = <?php echo $gui_id;?>");
+-</script>
+--->
++
+ </head>
+ <body bgcolor='#ffffff'>
+ </body>
+Index: http/php/mod_createJSObjFromXML.php
+===================================================================
+--- http/php/mod_createJSObjFromXML.php (revision 2361)
++++ http/php/mod_createJSObjFromXML.php (working copy)
+@@ -19,6 +19,7 @@
+
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../classes/class_wms.php");
++require(dirname(__FILE__)."/mb_validateSession.php");
+
+ $capabilitiesURL = html_entity_decode($_REQUEST['caps']);
+ ?>
+Index: http/php/mod_createUser.php
+===================================================================
+--- http/php/mod_createUser.php (revision 2361)
++++ http/php/mod_createUser.php (working copy)
+@@ -183,7 +183,7 @@
+ }
+
+ /* HTML */
+-echo "<form name='form1' action='" . $PHP_SELF . "' method='post'>";
++echo "<form name='form1' action='" . $self . "' method='post'>";
+ echo "<table border='0'>";
+
+ if(isset($selected_user) && $selected_user != 0){
+Index: http/php/mod_deleteFilteredGUI.php
+===================================================================
+--- http/php/mod_deleteFilteredGUI.php (revision 2361)
++++ http/php/mod_deleteFilteredGUI.php (working copy)
+@@ -19,12 +19,12 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+
+-require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ $admin = new administration();
+ $ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+ ?>
+Index: http/php/mod_deleteGUI.php
+===================================================================
+--- http/php/mod_deleteGUI.php (revision 2361)
++++ http/php/mod_deleteGUI.php (working copy)
+@@ -17,13 +17,14 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place
+
+-session_start();
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
+ #$admin = new administration();
+ #$ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+ $gui_id = $_SESSION["mb_user_gui"];
+@@ -65,16 +66,17 @@
+
+ ###delete
+ if($guiList){
+- $sql = "DELETE FROM gui WHERE gui_id = '".$guiList."'";
+- $res = db_query($sql);
++ $sql = "DELETE FROM gui WHERE gui_id = $1";
++ $v = array($guiList);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ }
+
+-$sql_gui = "SELECT * FROM gui ";
+-$sql_gui .= " ORDER BY gui_name";
++$sql_gui = "SELECT * FROM gui ORDER BY gui_name";
+ $res_gui = db_query($sql_gui);
+ $cnt_gui = 0;
+
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self ."' method='post'>";
+ echo "<select class='guiList' size='20' name='guiList' class='guiList'>";
+
+ while($row = db_fetch_array($res_gui)){
+Index: http/php/mod_deleteWFS.php
+===================================================================
+--- http/php/mod_deleteWFS.php (revision 2361)
++++ http/php/mod_deleteWFS.php (working copy)
+@@ -17,13 +17,13 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ #$admin = new administration();
+ #$ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+ $gui_id = $_SESSION["mb_user_gui"];
+@@ -76,16 +76,17 @@
+
+ ###delete
+ if($wfsList){
+- $sql = "DELETE FROM wfs WHERE wfs_id = '".$wfsList."'";
+- $res = db_query($sql);
++ $sql = "DELETE FROM wfs WHERE wfs_id = $1";
++ $v = array($wfsList);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ }
+
+-$sql_wfs = "SELECT * FROM wfs ";
+-$sql_wfs .= " ORDER BY wfs_id";
++$sql_wfs = "SELECT * FROM wfs ORDER BY wfs_id";
+ $res_wfs = db_query($sql_wfs);
+ $cnt_wfs = 0;
+
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+ echo "<br><b>WFS List: <b><br><br>";
+ echo "<select class='wfsList' size='20' name='wfsList' >";
+
+Index: http/php/mod_deleteWMS.php
+===================================================================
+--- http/php/mod_deleteWMS.php (revision 2361)
++++ http/php/mod_deleteWMS.php (working copy)
+@@ -17,17 +17,15 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
++
+ ?>
+-
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+-
+ <html>
+ <head>
+ <meta http-equiv="cache-control" content="no-cache">
+Index: http/php/mod_edit_element_vars.php
+===================================================================
+--- http/php/mod_edit_element_vars.php (revision 2361)
++++ http/php/mod_edit_element_vars.php (working copy)
+@@ -17,10 +17,10 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+ include(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+@@ -110,13 +110,20 @@
+ <?php
+ # handle database updates etc.....
+ if(isset($mySave) && $mySave == '1'){
+- if($SYS_DBTYPE=='pgsql'){
+- $sql[0] = "SET AUTOCOMMIT=1;";}
+- else{
+- $sql[0] = "SET AUTOCOMMIT=0;shit happens";
+- }
+- $sql[1] = "BEGIN;";
+- $sql[2] = "DELETE FROM gui_element_vars WHERE fkey_e_id = '".$e_id."' AND fkey_gui_id = '".$guiList1."' and ....";
++ if ($SYS_DBTYPE=='pgsql') {
++ $sql[0] = "SET AUTOCOMMIT=1;";
++ }
++ else {
++ $sql[0] = "SET AUTOCOMMIT=0;shit happens";
++ }
++ $v[0] = array();
++ $t[0] = array();
++ $sql[1] = "BEGIN;";
++ $v[1] = array();
++ $t[1] = array();
++ $sql[2] = "DELETE FROM gui_element_vars WHERE fkey_e_id = $1 AND fkey_gui_id = $2";
++ $v[2] = array($e_id, $guiList1);
++ $t[2] = array("s", "s");
+
+
+ if($e_left < 1){$e_left = "NULL";}
+@@ -124,15 +131,20 @@
+ if($e_width < 1){$e_width = "NULL";}
+ if($e_height < 1){$e_height = "NULL";}
+ if($e_z_index < 1){$e_z_index = "NULL";}
+- $sql[3] = "INSERT INTO gui_element_vars(fkey_gui_id,e_id,e_pos,e_public,e_comment,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) ";
+- $sql[3] .= "VALUES ('".$guiList1."','".$e_id."','".$e_pos."','".$e_public."','".db_escape_string($e_comment)."','".$e_element."','".$e_src."','".db_escape_string($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."')";
++ $sql[3] = "INSERT INTO gui_element_vars ";
++ $sql[3] .= "(fkey_gui_id, e_id, e_pos, e_public, e_comment, e_element, e_src, ";
++ $sql[3] .= "e_attributes, e_left, e_top, e_width, e_height, e_z_index, ";
++ $sql[3] .= "e_more_styles, e_content, e_closetag, e_js_file, e_mb_mod, e_target, ";
++ $sql[3] .= "e_requires) ";
++ $sql[3] .= "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)";
++ $v[3] = array($guiList1, $e_id, $e_pos, $e_public, db_escape_string($e_comment), $e_element, $e_src, db_escape_string($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);
++ $t[3] = array("s", "s", "i", "s", "s", "s", "s", "s", "i", "i", "i", "i", "i", "s", "s", "s", "s", "s", "s", "s");
+ #echo $sql[3];
+- foreach ($sql as $mysql){
+- $res = db_query($mysql);
+- if(!$res){echo $mysql; break;}
++ for ($i = 0; $i < count($sql); $i++) {
++ $res = db_prep_query($sql[$i], $v[$i], $t[$i]);
+ }
+ if($res){
+- $res = db_query( "COMMIT");
++ $res = db_query( "COMMIT");
+ $res = db_query( "SET AUTOCOMMIT=1");
+ }
+ else{
+@@ -139,10 +151,12 @@
+ $res = db_query( "ROLLBACK");
+ $res = db_query( "SET AUTOCOMMIT=1");
+ }
+- }
++}
+ if(isset($myDelete) && $myDelete == '1'){
+- $sql = "DELETE FROM gui_element_vars WHERE fkey_e_id = '".$e_id."' AND fkey_gui_id = '".$guiList1."' AND var_name='".$var_name."'";
+- $res = db_query($sql);
++ $sql = "DELETE FROM gui_element_vars WHERE fkey_e_id = $1 AND fkey_gui_id = $2 AND var_name= $3";
++ $v = array($e_id, $guiList1, $var_name);
++ $t = array("s", "s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ $e_id = ""; $e_pos = ""; $e_public = ""; $e_comment = ""; $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 = "";
+@@ -154,12 +168,16 @@
+ echo "</script>";
+ }
+ if(isset($all) && $all == '1'){
+- $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = '".$guiList2."' AND fkey_e_id = '".$e_id."' and var_name='".$var_name."' ;";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = $1 AND fkey_e_id = $2 and var_name= $3;";
++ $v = array($guiList2, $e_id, $var_name);
++ $t = array("s", "s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while(db_fetch_row($res)){
+- $sql_del = "DELETE FROM gui_element_vars WHERE fkey_gui_id = '".$guiList1."' AND fkey_e_id = '".db_result($res,$cnt,"fkey_e_id")."' and var_name='".$var_name."' ";
+- $res_del = db_query($sql_del);
++ $sql_del = "DELETE FROM gui_element_vars WHERE fkey_gui_id = $1 AND fkey_e_id = $2 and var_name= $3";
++ $v = array($guiList1, db_result($res,$cnt,"fkey_e_id"), $var_name);
++ $t = array("s", "s", "s");
++ $res_del = db_prep_query($sql_del, $v, $t);
+ if(db_result($res,$cnt,"e_left") == ""){$myleft = 'NULL';} else{$myleft = db_result($res,$cnt,"e_left");}
+ if(db_result($res,$cnt,"e_top") == ""){$mytop = 'NULL';} else{$mytop = db_result($res,$cnt,"e_top");}
+ if(db_result($res,$cnt,"e_width") == ""){$mywidth = 'NULL';} else{$mywidth = db_result($res,$cnt,"e_width");}
+@@ -166,12 +184,21 @@
+ if(db_result($res,$cnt,"e_height") == ""){$myheight = 'NULL';} else{$myheight = db_result($res,$cnt,"e_height");}
+ if(db_result($res,$cnt,"e_z_index") == ""){$my_z_index = 'NULL';} else{$my_z_index = db_result($res,$cnt,"e_z_index");}
+
+- $sql_ins = "INSERT INTO gui_element_vars(fkey_gui_id,e_id,e_pos,e_public,e_comment,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) ";
+- $sql_ins .= "VALUES ('".$guiList1."','".db_result($res,$cnt,"e_id")."','".db_result($res,$cnt,"e_pos")."','".db_result($res,$cnt,"e_public")."','".db_escape_string(db_result($res,$cnt,"e_comment"))."','".db_result($res,$cnt,"e_element")."','".db_result($res,$cnt,"e_src")."','".db_escape_string(db_result($res,$cnt,"e_attributes"))."',".$myleft.",";
+- $sql_ins .= $mytop.",".$mywidth.",".$myheight.",".$my_z_index.",'".db_result($res,$cnt,"e_more_styles")."','".db_escape_string(db_result($res,$cnt,"e_content"))."','".db_result($res,$cnt,"e_closetag")."','".db_result($res,$cnt,"e_js_file")."','".db_result($res,$cnt,"e_mb_mod")."','".db_result($res,$cnt,"e_target")."','".db_result($res,$cnt,"e_requires")."')";
++ $sql_ins = "INSERT INTO gui_element_vars ";
++ $sql_ins .= "(fkey_gui_id, e_id, e_pos,e_public, e_comment, e_element, ";
++ $sql_ins .= "e_src, e_attributes, e_left, e_top, e_width, e_height, ";
++ $sql_ins .= "e_z_index, e_more_styles, e_content, e_closetag, e_js_file, ";
++ $sql_ins .= "e_mb_mod, e_target, e_requires) ";
++ $sql_ins .= "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, ";
++ $sql_ins .= "$10, $11, $12, $13, $14, $15, $16, $17, $18, ";
++ $sql_ins .= "$19, $20)";
++ $v = array($guiList1, db_result($res,$cnt,"e_id"), db_result($res,$cnt,"e_pos"), db_result($res,$cnt,"e_public"), db_escape_string(db_result($res,$cnt,"e_comment")), db_result($res,$cnt,"e_element"), db_result($res,$cnt,"e_src"), db_escape_string(db_result($res,$cnt,"e_attributes")), $myleft, $mytop, $mywidth, $myheight, $my_z_index, db_result($res,$cnt,"e_more_styles"), db_escape_string(db_result($res,$cnt,"e_content")), db_result($res,$cnt,"e_closetag"), db_result($res,$cnt,"e_js_file"), db_result($res,$cnt,"e_mb_mod"), db_result($res,$cnt,"e_target"), db_result($res,$cnt,"e_requires"));
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "i", "i", "i", "i", "i", "s", "s", "s", "s", "s", "s", "s");
+
+- $res_ins = db_query($sql_ins);
+- if(!$res_ins){echo db_error($connect); }
++ $res_ins = db_prep_query($sql_ins, $v, $t);
++ if (!$res_ins) {
++ echo db_error($connect);
++ }
+ $cnt++;
+ }
+ }
+@@ -179,8 +206,10 @@
+ echo "<script language='javascript'>";
+ echo "var varIDs = new Array();";
+ if(isset($guiList1)){
+- $sql = "SELECT var_name FROM gui_element_vars WHERE fkey_gui_id = '".$guiList1."' AND fkey_e_id = '".$e_id."'";
+- $res = db_query($sql);
++ $sql = "SELECT var_name FROM gui_element_vars WHERE fkey_gui_id = $1 AND fkey_e_id = $2";
++ $v = array($guiList1, $e_id);
++ $t = array("s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while(db_fetch_row($res)){
+ echo "varIDs[".$cnt."] = '".db_result($res,$cnt,"var_name")."'; ";
+@@ -253,7 +282,7 @@
+ <body>
+
+ <?php
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='get'>";
++echo "<form name='form1' action='" . $self."' method='get'>";
+
+ #Gui to edit
+ if(!isset($guiList1)){
+@@ -284,8 +313,10 @@
+ if(isset($guiList1)){
+ echo "<div class='guiList2_header'>Templates</div>";
+
+- $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = '".$guiList1."' AND fkey_e_id='".$e_id."'";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = $1 AND fkey_e_id = $2";
++ $v = array($guiList1, $e_id);
++ $t = array("s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ echo "<div class='myElements'><table>";
+ while($row = db_fetch_array($res)){
+@@ -303,9 +334,11 @@
+ #Formular:
+ echo "<table class='myForm'>";
+ if(isset($guiList1) && isset($var_name)){
+- $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = '".$guiList1."' AND fkey_e_id = '".$e_id."' AND var_name='".$var_name."'";
++ $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = $1 AND fkey_e_id = '".$e_id."' AND var_name = $2";
++ $v = array($guiList1, $var_name);
++ $t = array("s", "s");
+ //echo $sql;
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+ if($row = db_fetch_array($res)){
+ echo "<tr><td>ID: </td><td><input type='text' class='textfield' readonly name='e_id' value='".$e_id."'></td></tr>";
+ echo "<tr><td>Var Type: </td><td><input type='text' class='textfield' name='type' value='".$row["type"]."'></td></tr>";
+Index: http/php/mod_edit_metadata.php
+===================================================================
+--- http/php/mod_edit_metadata.php (revision 2361)
++++ http/php/mod_edit_metadata.php (working copy)
+@@ -17,7 +17,6 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+ include(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+@@ -112,20 +111,31 @@
+ # handle database updates etc.....
+ if(isset($mySave) && ($mySave == '1' || $mySave == '2')) {
+ if ($mySave == '1'){
+- $sql_vars = "SELECT * FROM gui_element_vars WHERE fkey_e_id = '".$e_id."' AND fkey_gui_id = '".$guiList1."'";
+- $res_vars = db_query($sql_vars);
++ $sql_vars = "SELECT * FROM gui_element_vars WHERE fkey_e_id = $1 AND fkey_gui_id = $2";
++ $v = array($e_id, $guiList1);
++ $t = array("s", "s");
++ $res_vars = db_prep_query($sql_vars, $v, $t);
+ //$rows = db_fetch_array($res_vars);
+- if($SYS_DBTYPE=='pgsql')
+- {
+- $sql[0] = "SET AUTOCOMMIT=1";
+- }
+- else
+- {
+- $sql[0] = "SET AUTOCOMMIT=0";
+- }
+- $sql[1] = "BEGIN";
+- $sql[2] = "DELETE FROM gui_element WHERE e_id = '".$e_id."' AND fkey_gui_id = '".$guiList1."'";
+-
++ $sql = array();
++ $v = array();
++ $t = array();
++ if ($SYS_DBTYPE == "pgsql") {
++ $sql[0] = "SET AUTOCOMMIT=1";
++ $v[0] = array();
++ $t[0] = array();
++ }
++ else {
++ $sql[0] = "SET AUTOCOMMIT=0";
++ $v[0] = array();
++ $t[0] = array();
++ }
++ $sql[1] = "BEGIN";
++ $v[1] = array();
++ $t[1] = array();
++
++ $sql[2] = "DELETE FROM gui_element WHERE e_id = $1 AND fkey_gui_id = $2";
++ $v[2] = array($e_id, $guiList1);
++ $t[2] = array("s", "s");
+
+ if($e_left < 1){$e_left = "NULL";}
+ if($e_top < 1){$e_top = "NULL";}
+@@ -132,25 +142,40 @@
+ if($e_width < 1){$e_width = "NULL";}
+ if($e_height < 1){$e_height = "NULL";}
+ if($e_z_index < 1){$e_z_index = "NULL";}
+- $sql[3] = "INSERT INTO gui_element(fkey_gui_id,e_id,e_pos,e_public,e_comment,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) ";
+- $sql[3] .= "VALUES ('".$guiList1."','".$e_id."','".$e_pos."','".$e_public."','".db_escape_string($e_comment)."','".$e_element."','".$e_src."','".db_escape_string($e_attributes)."',".$e_left.",".$e_top.",".$e_width.",".$e_height.",".$e_z_index.",'".$e_more_styles."','".db_escape_string($e_content)."','".$e_closetag."','".$e_js_file."','".$e_mb_mod."','".$e_target."','".$e_requires."')";
+-
++ $sql[3] = "INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, ";
++ $sql[3] .= "e_comment, e_element, e_src, e_attributes, e_left, e_top, ";
++ $sql[3] .= "e_width, e_height, e_z_index, e_more_styles, e_content, ";
++ $sql[3] .= "e_closetag, e_js_file, e_mb_mod, e_target, e_requires) ";
++ $sql[3] .= "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, ";
++ $sql[3] .= "$13, $14, $15, $16, $17, $18, $19, $20)";
++ $v[3] = array($guiList1, $e_id, $e_pos, $e_public, db_escape_string($e_comment), $e_element, $e_src, db_escape_string($e_attributes), $e_left, $e_top, $e_width, $e_height, $e_z_index, $e_more_styles, db_escape_string($e_content), $e_closetag, $e_js_file, $e_mb_mod, $e_target, $e_requires);
++ $t[3] = array("s", "s", "s", "s", "s", "s", "s", "s", "i", "i", "i", "i", "i", "s", "s", "s", "s", "s", "s", "s");
+ }
+ # mySave == 2 <=> just save GUI description
+ elseif ($mySave == '2') {
+- if($SYS_DBTYPE=='pgsql')
+- {
+- $sql[0] = "SET AUTOCOMMIT=1";
+- }
+- else
+- {
+- $sql[0] = "SET AUTOCOMMIT=0";
++ $sql = array();
++ $v = array();
++ $t = array();
++ if ($SYS_DBTYPE == "pgsql") {
++ $sql[0] = "SET AUTOCOMMIT=1";
++ $v[0] = array();
++ $t[0] = array();
+ }
+- $sql[1] = "BEGIN";
+- $sql[3] = "UPDATE gui SET gui_description = '". $guiDesc."' WHERE gui_id ='".$guiId."'";
+- }
+- foreach ($sql as $mysql){
+- $res = db_query($mysql);
++ else {
++ $sql[0] = "SET AUTOCOMMIT=0";
++ $v[0] = array();
++ $t[0] = array();
++ }
++ $sql[1] = "BEGIN";
++ $v[1] = array();
++ $t[1] = array();
++
++ $sql[2] = "UPDATE gui SET gui_description = $1 WHERE gui_id = $2";
++ $v[2] = array($guiDesc, $guiId);
++ $t[2] = array("s", "s");
++ }
++ for ($i = 0; $i < count($sql); $i++) {
++ $res = db_prep_query($sql[$i], $v[$i], $t[$i]);
+ if(!$res){break;}
+ }
+ if($res){
+@@ -163,11 +188,15 @@
+ }
+ if(isset($sql_vars)){//sicherstellen das keine Element_Vars gel�scht wurden
+ while($row = db_fetch_array($res_vars)){
+- $securesql = "INSERT INTO gui_element_vars (fkey_gui_id,fkey_e_id,var_name,var_value,context,type) VALUES ('".$guiList1."','".$e_id."','".$row["var_name"]."','".$row["var_value"]."','".$row["context"]."','".$row["type"]."');";
+- //echo $securesql."<BR>";
+- $secureinsert = db_query($securesql);
+- }
+- }
++ $securesql = "INSERT INTO gui_element_vars (fkey_gui_id, ";
++ $securesql .= "fkey_e_id, var_name, var_value, context,type) ";
++ $securesql .= "VALUES ($1, $2, $3, $4, $5, $6)";
++ $v = array($guiList1, $e_id, $row["var_name"], $row["var_value"], $row["context"], $row["type"]);
++ $t = array("s", "s", "s", "s", "s", "s");
++ //echo $securesql."<BR>";
++ $secureinsert = db_prep_query($securesql, $v, $t);
++ }
++ }
+ if(!$res){break;}
+
+ }
+@@ -172,8 +201,10 @@
+
+ }
+ if(isset($myDelete) && $myDelete == '1'){
+- $sql = "DELETE FROM gui_element WHERE e_id = '".$e_id."' AND fkey_gui_id = '".$guiList1."'";
+- $res = db_query($sql);
++ $sql = "DELETE FROM gui_element WHERE e_id = $1 AND fkey_gui_id = $2";
++ $v = array($e_id, $guiList1);
++ $t = array("s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ $e_id = ""; $e_pos = ""; $e_public = ""; $e_comment = ""; $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 = "";
+@@ -185,12 +216,16 @@
+ echo "</script>";
+ }
+ if(isset($all) && $all == '1'){
+- $sql = "SELECT * FROM gui_element WHERE fkey_gui_id = '".$guiList2."'";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_element WHERE fkey_gui_id = $1";
++ $v = array($guiList2);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while(db_fetch_row($res)){
+- $sql_del = "DELETE FROM gui_element WHERE fkey_gui_id = '".$guiList1."' AND e_id = '".db_result($res,$cnt,"e_id")."'";
+- $res_del = db_query($sql_del);
++ $sql_del = "DELETE FROM gui_element WHERE fkey_gui_id = $1 AND e_id = $2";
++ $v = array($guiList1, db_result($res,$cnt,"e_id"));
++ $t = array("s", "s");
++ $res_del = db_prep_query($sql_del, $v, $t);
+ if(db_result($res,$cnt,"e_left") == ""){$myleft = 'NULL';} else{$myleft = db_result($res,$cnt,"e_left");}
+ if(db_result($res,$cnt,"e_top") == ""){$mytop = 'NULL';} else{$mytop = db_result($res,$cnt,"e_top");}
+ if(db_result($res,$cnt,"e_width") == ""){$mywidth = 'NULL';} else{$mywidth = db_result($res,$cnt,"e_width");}
+@@ -197,21 +232,31 @@
+ if(db_result($res,$cnt,"e_height") == ""){$myheight = 'NULL';} else{$myheight = db_result($res,$cnt,"e_height");}
+ if(db_result($res,$cnt,"e_z_index") == ""){$my_z_index = 'NULL';} else{$my_z_index = db_result($res,$cnt,"e_z_index");}
+
+- $sql_ins = "INSERT INTO gui_element(fkey_gui_id,e_id,e_pos,e_public,e_comment,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) ";
+- $sql_ins .= "VALUES ('".$guiList1."','".db_result($res,$cnt,"e_id")."','".db_result($res,$cnt,"e_pos")."','".db_result($res,$cnt,"e_public")."','".db_escape_string(db_result($res,$cnt,"e_comment"))."','".db_result($res,$cnt,"e_element")."','".db_result($res,$cnt,"e_src")."','".db_escape_string(db_result($res,$cnt,"e_attributes"))."',".$myleft.",";
+- $sql_ins .= $mytop.",".$mywidth.",".$myheight.",".$my_z_index.",'".db_result($res,$cnt,"e_more_styles")."','".db_escape_string(db_result($res,$cnt,"e_content"))."','".db_result($res,$cnt,"e_closetag")."','".db_result($res,$cnt,"e_js_file")."','".db_result($res,$cnt,"e_mb_mod")."','".db_result($res,$cnt,"e_target")."','".db_result($res,$cnt,"e_requires")."')";
+-
+- $res_ins = db_query($sql_ins);
++ $sql_ins = "INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, ";
++ $sql_ins .= "e_comment, e_element, e_src, e_attributes, e_left, e_top, ";
++ $sql_ins .= "e_width, e_height, e_z_index, e_more_styles, e_content, ";
++ $sql_ins .= "e_closetag, e_js_file, e_mb_mod, e_target, e_requires) ";
++ $sql_ins .= "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, ";
++ $sql_ins .= "$10, $11, $12, $13, $14, $15, $16, $17, $18, $19);";
++ $v = array($guiList1, db_result($res,$cnt,"e_id"), db_result($res,$cnt,"e_pos"), db_result($res,$cnt,"e_public"), db_escape_string(db_result($res,$cnt,"e_comment")), db_result($res,$cnt,"e_element"), db_result($res,$cnt,"e_src"), db_escape_string(db_result($res,$cnt,"e_attributes")), $myleft, $mytop, $mywidth, $myheight, $my_z_index, db_result($res,$cnt,"e_more_styles"), db_escape_string(db_result($res,$cnt,"e_content")), db_result($res,$cnt,"e_closetag"), db_result($res,$cnt,"e_js_file"), db_result($res,$cnt,"e_mb_mod"), db_result($res,$cnt,"e_target"), db_result($res,$cnt,"e_requires"));
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "i", "i", "i", "i", "i", "s", "s", "s", "s", "s", "s", "s");
++
++ $res_ins = db_prep_query($sql_ins, $v, $t);
+ if(!$res_ins){echo db_error($con); }
+ $cnt++;
+ }
+- $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = '".$guiList2."'";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_element_vars WHERE fkey_gui_id = $1";
++ $v = array($guiList2);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while(db_fetch_row($res)){
+- $sql_ins2 = "INSERT INTO gui_element_vars(fkey_gui_id,fkey_e_id,var_name,var_value,context,type) ";
+- $sql_ins2 .= "VALUES ('".$guiList1."','".db_result($res,$cnt,"fkey_e_id")."','".db_result($res,$cnt,"var_name")."','".db_escape_string(db_result($res,$cnt,"var_value"))."','".db_escape_string(db_result($res,$cnt,"context"))."','".db_result($res,$cnt,"type")."')";
+- $res_ins2 = db_query($sql_ins2);
++ $sql_ins2 = "INSERT INTO gui_element_vars (fkey_gui_id, fkey_e_id, ";
++ $sql_ins2 .= "var_name, var_value, context, type) VALUES (";
++ $sql_ins2 .= "$1, $2, $3, $4, $5, $6);";
++ $v = array($guiList1, db_result($res,$cnt,"fkey_e_id"), db_result($res,$cnt,"var_name"), db_escape_string(db_result($res,$cnt,"var_value")), db_escape_string(db_result($res,$cnt,"context")), db_result($res,$cnt,"type"));
++ $t = array("s", "s", "s", "s", "s", "s");
++ $res_ins2 = db_prep_query($sql_ins2, $v, $t);
+ if(!$res_ins2){echo db_error($connect); }
+
+ $cnt++;
+@@ -223,8 +268,10 @@
+ echo "<script language='javascript'>";
+ echo "var guiIDs = new Array();";
+ if(isset($guiList1)){
+- $sql = "SELECT e_id FROM gui_element WHERE fkey_gui_id = '".$guiList1."'";
+- $res = db_query($sql);
++ $sql = "SELECT e_id FROM gui_element WHERE fkey_gui_id = $1";
++ $v = array($guiList1);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while(db_fetch_row($res)){
+ echo "guiIDs[".$cnt."] = '".db_result($res,$cnt,"e_id")."'; ";
+@@ -311,16 +358,22 @@
+ $admin = new administration();
+ $ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+ $permguis = $admin->getGuisByPermission($_SESSION["mb_user_id"],true);
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>\n";
++echo "<form name='form1' action='" . $self."' method='post'>\n";
++
++$sql = "SELECT * from gui WHERE gui.gui_id IN (";
++$v = $ownguis;
++$t = array();
+
+-$sql = "SELECT * from gui WHERE gui.gui_id IN(";
+-for($i=0; $i<count($ownguis); $i++){
+- if($i>0){ $sql .= ",";}
+- $sql .= "'".$ownguis[$i]."'";
++for ($i = 1; $i <= count($ownguis); $i++) {
++ if ($i > 1) {
++ $sql .= ",";
++ }
++ $sql .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql .= ")";
+ //echo $sql;
+-$res = db_query($sql);
++$res = db_prep_query($sql, $v, $t);
+ $count=0;
+ while(db_fetch_row($res)){
+ $gui_id_own[$count]=db_result($res,$count,"gui_id");
+@@ -330,13 +383,19 @@
+ }
+
+
+-$sql = "SELECT * from gui WHERE gui.gui_id IN(";
+-for($i=0; $i<count($permguis); $i++){
+- if($i>0){ $sql .= ",";}
+- $sql .= "'".$permguis[$i]."'";
++$sql = "SELECT * from gui WHERE gui.gui_id IN (";
++$v = $permguis;
++$t = array();
++
++for ($i = 1; $i <= count($permguis); $i++){
++ if ($i > 1) {
++ $sql .= ",";
++ }
++ $sql .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql .= ")";
+-$res = db_query($sql);
++$res = db_prep_query($sql, $v, $t);
+ $count=0;
+ while($row = db_fetch_array($res)){
+ $gui_id_perm[$count]= $row["gui_id"];
+@@ -413,8 +472,10 @@
+ else{
+ echo "<div class='guiList2_header'>Templates</div>\n";
+ }
+- $sql = "SELECT * FROM gui_element WHERE fkey_gui_id = '".$guiList2."' ORDER BY e_id";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_element WHERE fkey_gui_id = $1 ORDER BY e_id";
++ $v = array($guiList2);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+
+ echo "<div class='myElements'>\n<table>\n";
+@@ -440,8 +501,10 @@
+ #Formular:
+ echo "<table class='myForm'>\n";
+ if(isset($myElement)){
+- $sql = "SELECT * FROM gui_element WHERE fkey_gui_id = '".$guiList2."' AND e_id = '".$myElement."'";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_element WHERE fkey_gui_id = $1 AND e_id = $2";
++ $v = array($guiList2, $myElement);
++ $t = array("s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ if(db_fetch_row($res)){
+ echo "<tr><td>ID: </td><td><input type='text' class='textfield' name='e_id' value='".db_result($res,0,"e_id")."'></td></tr>\n";
+ echo "<tr><td>Position: </td><td><input type='text' class='textfield' name='e_pos' value='".db_result($res,0,"e_pos")."'></td></tr>\n";
+Index: http/php/mod_editElements.php
+===================================================================
+--- http/php/mod_editElements.php (revision 2361)
++++ http/php/mod_editElements.php (working copy)
+@@ -17,15 +17,11 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-include(dirname(__FILE__)."/../php/mb_validatePermission.php");
++require(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
+ $sParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-$self = $PHP_SELF . "?".$sParams;
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+@@ -169,7 +165,7 @@
+ if ($mySave == '1'){
+ //copy element vars
+ $sql = "SELECT * FROM gui_element_vars WHERE fkey_e_id = $1 AND fkey_gui_id = $2";
+- $v = array($e_id,$_POST["originGuiOfSelectedElement"]);
++ $v = array($e_id_,$_POST["originGuiOfSelectedElement"]);
+ $t = array('s','s');
+ $c = 0;
+ $res_vars = db_prep_query($sql,$v,$t);
+@@ -177,7 +173,7 @@
+ db_begin();
+
+ $sql = "DELETE FROM gui_element WHERE e_id = $1 AND fkey_gui_id = $2 ";
+- $v = array($e_id,$guiList1);
++ $v = array($e_id_,$guiList1);
+ $t = array('s','s');
+ $res = db_prep_query($sql,$v,$t);
+
+@@ -191,7 +187,7 @@
+ $sql .= "e_attributes,e_left,e_top,e_width,e_height,e_z_index,e_more_styles,e_content,";
+ $sql .= "e_closetag,e_js_file,e_mb_mod,e_target,e_requires,e_url) ";
+ $sql .= "VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21)";
+- $v = array($guiList1,$e_id,$e_pos,$e_public,$e_comment,$e_element,$e_src,$e_attributes,$e_left,
++ $v = array($guiList1,$e_id_,$e_pos,$e_public,$e_comment,$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);
+ $t = array('s','s','i','i','s','s','s','s','i','i','i','i','i','s','s','s','s','s','s','s','s');
+@@ -209,7 +205,7 @@
+ $r = array();
+ $sql[$c] = "INSERT INTO gui_element_vars (fkey_gui_id,fkey_e_id,var_name,var_value,context,var_type) ";
+ $sql[$c] .= "VALUES ($1,$2,$3,$4,$5,$6)";
+- $v[$c] = array($guiList1,$e_id,$row["var_name"],$row["var_value"],$row["context"],$row["var_type"]);
++ $v[$c] = array($guiList1,$e_id_,$row["var_name"],$row["var_value"],$row["context"],$row["var_type"]);
+ $t[$c] = array('s','s','s','s','s','s');
+ $r[$c] = db_prep_query($sql[$c],$v[$c],$t[$c]);
+ if(!$r){
+@@ -230,10 +226,10 @@
+ }
+ if(isset($myDelete) && $myDelete == '1'){
+ $sql = "DELETE FROM gui_element WHERE e_id = $1 AND fkey_gui_id = $2";
+- $v = array($e_id,$guiList1);
++ $v = array($e_id_,$guiList1);
+ $t = array('s','s');
+ $res = db_prep_query($sql,$v,$t);
+- $e_id = ""; $e_pos = ""; $e_public = ""; $e_comment = ""; $e_element = "";
++ $e_id_ = ""; $e_pos = ""; $e_public = ""; $e_comment = ""; $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 = "";
+@@ -325,9 +321,9 @@
+ }
+ }
+ function thisSave(){
+- if(document.form1.e_id.value == ""){
++ if(document.form1.e_id_.value == ""){
+ alert("ID ? ");
+- document.form1.e_id.focus();
++ document.form1.e_id_.focus();
+ return;
+ }
+ var permission = false;
+@@ -334,8 +330,8 @@
+ var isElement = false;
+ for(var i=0; i<guiIDs.length; i++){
+ clearRadio();
+- if(document.form1.e_id.value == guiIDs[i]){
+- permission = confirm("update: " + document.form1.e_id.value + " ?");
++ if(document.form1.e_id_.value == guiIDs[i]){
++ permission = confirm("update: " + document.form1.e_id_.value + " ?");
+ isElement = true;
+ break;
+ }
+@@ -348,7 +344,7 @@
+
+ function thisDelete(){
+ clearRadio();
+- var permission = confirm("delete: " + document.form1.e_id.value + " ?");
++ var permission = confirm("delete: " + document.form1.e_id_.value + " ?");
+ if(permission == true){
+ document.form1.myDelete.value = 1;
+ document.form1.submit();
+@@ -368,7 +364,7 @@
+ }
+ function thisExport(){
+
+- window.open("mod_exportElement.php?element=" + document.forms[0].e_id.value+ "&gui=" +document.forms[0].guiList1.value ,"","");
++ window.open("mod_exportElement.php?element=" + document.forms[0].e_id_.value+ "&gui=" +document.forms[0].guiList1.value ,"","");
+ }
+ function editDesc(){
+ var newDesc = prompt("Enter new GUI description", document.form1.guiDesc.value);
+@@ -546,7 +542,7 @@
+ $t = array();
+ $res = db_prep_query($sql,$v,$t);
+ if($row = db_fetch_array($res)){
+- echo "<tr><td>ID: </td><td><input type='text' class='textfield' name='e_id' value='".$row["e_id"]."'></td></tr>\n";
++ echo "<tr><td>ID: </td><td><input type='text' class='textfield' name='e_id_' value='".$row["e_id"]."'></td></tr>\n";
+ echo "<tr><td>Position: </td><td><input type='text' class='textfield' name='e_pos' value='".$row["e_pos"]."'></td></tr>\n";
+ echo "<tr><td>ON/OFF: </td><td><input type='text' class='textfield' name='e_public' value='".$row["e_public"]."'></td></tr>\n";
+ echo "<tr><td>Comment: </td><td><textarea cols='32' rows='5' name='e_comment' >".stripslashes($row["e_comment"])."</textarea></td></tr>\n";
+@@ -570,7 +566,7 @@
+ echo "</table>";
+ }
+ else if(isset($guiList1)){
+- echo "<tr><td>ID: </td><td><input type='text' class='textfield' name='e_id' value='".$e_id."'></td></tr>\n";
++ echo "<tr><td>ID: </td><td><input type='text' class='textfield' name='e_id_' value='".$e_id_."'></td></tr>\n";
+ echo "<tr><td>Position: </td><td><input type='text' class='textfield' name='e_pos' value='".$e_pos."'></td></tr>\n";
+ echo "<tr><td>ON/OFF: </td><td><input type='text' class='textfield' name='e_public' value='".$e_public."'></td></tr>\n";
+ echo "<tr><td>Comment: </td><td><textarea cols='32' rows='5' name='e_comment' >".stripslashes($e_comment)."</textarea></td></tr>\n";
+Index: http/php/mod_editElementVars.php
+===================================================================
+--- http/php/mod_editElementVars.php (revision 2361)
++++ http/php/mod_editElementVars.php (working copy)
+@@ -18,11 +18,12 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-session_start();
+-//include(dirname(__FILE__)."/../php/mb_validateSession.php");
++require(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
++
+ $sParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+
+@@ -164,7 +165,7 @@
+ <body>
+
+ <?php
+- echo "<form name='form1' action='" . $PHP_SELF . "?".$sParams."' method='POST'>\n";
++ echo "<form name='form1' action='" . $self ."' method='POST'>\n";
+
+ $fkey_gui_id = $_REQUEST["fkey_gui_id"];
+ $fkey_e_id = $_REQUEST["fkey_e_id"];
+Index: http/php/mod_editFilteredGroup.php
+===================================================================
+--- http/php/mod_editFilteredGroup.php (revision 2361)
++++ http/php/mod_editFilteredGroup.php (working copy)
+@@ -20,10 +20,11 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
++
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -138,11 +139,15 @@
+ echo "<select name='selected_group' onchange='submit()'>";
+ echo "<option value='new'>NEW...</option>";
+ $sql = "SELECT mb_group_name,mb_group_id FROM mb_group ";
++ $v = array();
++ $t = array();
+ if(isset($myGroup)){
+- $sql .= "WHERE mb_group_owner = ".$_SESSION["mb_user_id"];
++ $sql .= "WHERE mb_group_owner = $1";
++ array_push($v, $_SESSION["mb_user_id"]);
++ array_push($t, "i");
+ }
+ $sql .= " ORDER BY mb_group_name ";
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+ $count=0;
+ while($row = db_fetch_array($res)){
+ echo "<option value='".$row["mb_group_id"]."' ";
+Index: http/php/mod_editFilteredUser.php
+===================================================================
+--- http/php/mod_editFilteredUser.php (revision 2361)
++++ http/php/mod_editFilteredUser.php (working copy)
+@@ -20,10 +20,11 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
++
+ $myUser = true;
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -185,9 +186,15 @@
+ echo "<select name='selected_user' onchange='submit()'>";
+ echo "<option value='new'>NEW...</option>";
+ $sql = "SELECT mb_user_name,mb_user_id FROM mb_user ";
+- if(isset($myUser)){ $sql .= "WHERE mb_user_owner = ".$_SESSION["mb_user_id"];}
+- $sql .= " ORDER BY mb_user_name ";
+- $res = db_query($sql);
++ $v = array();
++ $t = array();
++ if (isset($myUser)) {
++ $sql .= "WHERE mb_user_owner = $1";
++ array_push($v, $_SESSION["mb_user_id"]);
++ array_push($t, "i");
++ }
++ $sql .= " ORDER BY mb_user_name ";
++ $res = db_prep_query($sql, $v, $t);
+ $count=0;
+ while($row = db_fetch_array($res)){
+ echo "<option value='".$row["mb_user_id"]."' ";
+Index: http/php/mod_editGroup.php
+===================================================================
+--- http/php/mod_editGroup.php (revision 2361)
++++ http/php/mod_editGroup.php (working copy)
+@@ -17,13 +17,12 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -136,9 +135,15 @@
+ echo "<select name='selected_group' onchange='submit()'>";
+ echo "<option value='new'>NEW...</option>";
+ $sql = "SELECT mb_group_name,mb_group_id FROM mb_group ";
+- if(isset($myGroup)){ $sql .= "WHERE mb_group_owner = ".$_SESSION["mb_user_id"];}
++ $v = array();
++ $t = array();
++ if (isset($myGroup)) {
++ $sql .= "WHERE mb_group_owner = $1";
++ array_push($v, $_SESSION["mb_user_id"]);
++ array_push($t, "i");
++ }
+ $sql .= " ORDER BY mb_group_name ";
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+ $count=0;
+ while($row = db_fetch_array($res)){
+ echo "<option value='".$row["mb_group_id"]."' ";
+Index: http/php/mod_editGuiWms.php
+===================================================================
+--- http/php/mod_editGuiWms.php (revision 2361)
++++ http/php/mod_editGuiWms.php (working copy)
+@@ -17,13 +17,12 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+@@ -592,7 +591,7 @@
+ echo "<td style='background:lightgrey'><input type='text' size='2' name='L_".$layer_id[$i]."___layer_id' value='".$layer_id[$i]."' readonly></td>";
+ echo "<td><input type='text' size='1' name='L_".$layer_id[$i]."___layer_parent' value='".$layer_parent[$i]."' readonly></td>";
+ echo "<td style='background:lightgrey'><input type='text' size='7' value='".$layer_name[$i]."' readonly></td>";
+- echo "<td><input type='text' name='".$layer_title[$i]."' size='12' value='".$layer_title[$i]."' ></td>";
++ echo "<td><input type='text' name='".$layer_title[$i]."' size='12' value='".$layer_title[$i]."' readonly></td>";
+
+ echo "<td style='background:lightgrey'><input name='L_".$layer_id[$i]."___gui_layer_status' type='checkbox' ";
+ if($gui_layer_status[$i] == 1){ echo "checked";}
+Index: http/php/mod_editGuiWmsMeta.php
+===================================================================
+--- http/php/mod_editGuiWmsMeta.php (revision 2361)
++++ http/php/mod_editGuiWmsMeta.php (working copy)
+@@ -18,8 +18,9 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-include(dirname(__FILE__)."/../php/mb_validateSession.php");
++require(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+@@ -24,7 +25,6 @@
+ db_select_db(DB,$con);
+
+ ?>
+-
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <html>
+@@ -126,7 +126,7 @@
+ <body onload='windowSize()'>
+
+ <?php
+- echo " <form name='editMetaData' action='".$PHP_SELF."?".SID."' method='get'>\n";
++ echo " <form name='editMetaData' action='".$self."' method='get'>\n";
+
+ $layer_id = $_REQUEST["layer_id"];
+
+@@ -134,19 +134,23 @@
+ $function = $_REQUEST["function"];
+
+ if ( $function = "update" ) {
+- $sql = "UPDATE layer SET layer_meta_datum = '".$_REQUEST["layer_meta_datum"]."'";
+- $sql.= ", layer_meta_lieferant = '".$_REQUEST["layer_meta_lieferant"]."'";
+- $sql.= ", layer_meta_quelle = '".$_REQUEST["layer_meta_quelle"]."'";
+- $sql.= ", layer_meta_ansprechpartner = '".$_REQUEST["layer_meta_ansprechpartner"]."'";
+- $sql.= ", layer_meta_lieferant_basis = '".$_REQUEST["layer_meta_lieferant_basis"]."'";
+- $sql.= ", layer_meta_copyright = '".$_REQUEST["layer_meta_copyright"]."'";
+- $sql.= " WHERE layer_id = ".$layer_id.";";
+- $res = db_query($sql);
++ $sql = "UPDATE layer SET layer_meta_datum = $1, ";
++ $sql.= "layer_meta_lieferant = $2, ";
++ $sql.= "layer_meta_quelle = $3, ";
++ $sql.= "layer_meta_ansprechpartner = $4, ";
++ $sql.= "layer_meta_lieferant_basis = $5, ";
++ $sql.= "layer_meta_copyright = $6 ";
++ $sql.= " WHERE layer_id = $7;";
++ $v = array($_REQUEST["layer_meta_datum"], $_REQUEST["layer_meta_lieferant"], $_REQUEST["layer_meta_quelle"], $_REQUEST["layer_meta_ansprechpartner"], $_REQUEST["layer_meta_lieferant_basis"], $_REQUEST["layer_meta_copyright"], $layer_id);
++ $t = array("s", "s", "s", "s", "s", "s", "i");
++ $res = db_prep_query($sql, $v, $t);
+ }
+ }
+
+- $sql = "SELECT * FROM layer WHERE layer_id = '".$layer_id."';";
+- $res = db_query($sql);
++ $sql = "SELECT * FROM layer WHERE layer_id = $1;";
++ $v = array($layer_id);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+
+ if ( db_fetch_row($res, 0) ) {
+ echo " <h3>Editieren von Metadaten</h3>\n";
+Index: http/php/mod_editSelf.php
+===================================================================
+--- http/php/mod_editSelf.php (revision 2361)
++++ http/php/mod_editSelf.php (working copy)
+@@ -214,7 +214,7 @@
+
+ /*HTML*****************************************************************************************************/
+
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+ echo "<input type='hidden' name='selected_user' value='" . $_SESSION["mb_user_id"] . "'>";
+ echo "<table border='0'>";
+
+Index: http/php/mod_editUser.php
+===================================================================
+--- http/php/mod_editUser.php (revision 2361)
++++ http/php/mod_editUser.php (working copy)
+@@ -20,10 +20,10 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -200,9 +200,15 @@
+ echo "<select name='selected_user' onchange='submit()'>";
+ echo "<option value='new'>NEW...</option>";
+ $sql = "SELECT mb_user_name,mb_user_id FROM mb_user ";
+- if(isset($myUser)){ $sql .= "WHERE mb_user_owner = ".$_SESSION["mb_user_id"];}
++ $v = array();
++ $t = array();
++ if (isset($myUser)) {
++ $sql .= "WHERE mb_user_owner = $1";
++ array_push($v, $_SESSION["mb_user_id"]);
++ array_push($t, "i");
++ }
+ $sql .= " ORDER BY mb_user_name ";
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+ $count=0;
+ while($row = db_fetch_array($res)){
+ echo "<option value='".$row["mb_user_id"]."' ";
+@@ -339,5 +345,18 @@
+ ?>
+ <input type='hidden' name='action' value=''>
+ </form>
++<script type="text/javascript">
++<!--
++var user=[];
++<?php
++for($i=0; $i<$cnt_user; $i++){
++ echo "user[".($i)."]=[];\n";
++ echo "user[".($i)."]['id']='" . $user_id[$i] . "';\n";
++ echo "user[".($i)."]['name']='" . $user_name[$i] . "';\n";
++ echo "user[".($i)."]['email']='" . $user_email[$i] . "';\n";
++}
++?>
++// -->
++</script>
+ </body>
+ </html>
+\ No newline at end of file
+Index: http/php/mod_editWMS_Metadata.php
+===================================================================
+--- http/php/mod_editWMS_Metadata.php (revision 2361)
++++ http/php/mod_editWMS_Metadata.php (working copy)
+@@ -17,16 +17,11 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-
+-session_start();
+-include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++import_request_variables("PG");
+ require_once(dirname(__FILE__)."/mb_validatePermission.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+-$secParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-$self = $PHP_SELF."?".$secParams;
+
+ ?>
+-
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+ <head>
+@@ -31,20 +26,12 @@
+ <html>
+ <head>
+ <title>Edit WMS Metadata</title>
+-
+ <?php
+ echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+ include_once '../include/dyn_css.php';
+-#Error reporting
+-error_reporting(E_ALL);
+-ini_set('display_errors', TRUE);
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+
+ $adm = new administration();
+-
+ ?>
+-
+ <script language="JavaScript">
+ var dTarget;
+ function save()
+@@ -57,7 +44,7 @@
+ {
+ var url = String(document.location);
+ url = url.substr(0, url.indexOf('?'));
+- window.open(url+"?<?php echo strip_tags(SID);?>&guiID=<?php echo $_REQUEST["guiID"]?>&elementID=<?php echo $_REQUEST["elementID"];?>&delete_preview=1&layer_id="+layer_id,'delete preview', 'height=50, width=150, dependent=yes');
++ window.open(url+"?<?php echo strip_tags(SID);?>&guiID=<?php echo $gui_id;?>&elementID=<?php echo $e_id;?>&delete_preview=1&layer_id="+layer_id,'delete preview', 'height=50, width=150, dependent=yes');
+ document.getElementById(layer_id+"_dp").style.display="none";
+ }
+
+@@ -67,7 +54,7 @@
+ var dp =
+ window.open('../tools/datepicker/datepicker.php?m=Jan_Feb_Mrz_Apr_Mai_Jun_Jul_Aug_Sep_Okt_Nov_Dez&d=Mo_Di_Mi_Do_Fr_Sa_So&t=heute','dp','left=200,top=200,width=230,height=210,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0');
+ dp.focus();
+- return false
++ return false;
+ }
+ </script>
+ </head>
+@@ -77,15 +64,15 @@
+ function guessTimestamp($timestr)
+ {
+
+- if (strstr($timestr, '.'))
++ if (strpos($timestr, '.'))
+ {
+ list($day, $month, $year) = explode(".", $timestr);
+ }
+- elseif (strstr($timestr, '/'))
++ elseif (strpos($timestr, '/'))
+ {
+ list($month, $day, $year) = explode("/", $timestr);
+ }
+- elseif (strstr($timestr, '-'))
++ elseif (strpos($timestr, '-'))
+ {
+ list($year, $month, $day) = explode("-", $timestr);
+ }
+@@ -101,33 +88,52 @@
+
+ #Update handling
+
+-if(isset($_REQUEST['update_content']) && $_REQUEST['update_content'] == true)
+-{
++if (isset($_REQUEST['update_content']) && $_REQUEST['update_content'] == true) {
+
+- $update_wms_sql = "UPDATE wms SET " .
+- "wms_title = '".$_REQUEST['wms_title_box']."', " .
+- "wms_abstract = '".$_REQUEST['wms_abstract_box']."', " .
+- "fees = '".$_REQUEST['fees_box']."', " .
+- "accessconstraints = '".$_REQUEST['accessconstraints_box']."', " .
+- "contactperson = '".$_REQUEST['contactperson_box']."', " .
+- "contactposition = '".$_REQUEST['contactposition_box']."', " .
+- "contactorganization = '".$_REQUEST['contactorganization_box']."', " .
+- "address = '".$_REQUEST['address_box']."', " .
+- "city = '".$_REQUEST['city_box']."', " .
+- "stateorprovince = '".$_REQUEST['stateorprovince_box']."', " .
+- "postcode = '".$_REQUEST['postcode_box']."', " .
+- "country = '".$_REQUEST['country_box']."', " .
+- "contactvoicetelephone = '".$_REQUEST['contactvoicetelephone_box']."', " .
+- "contactfacsimiletelephone = '".$_REQUEST['contactfacsimiletelephone_box']."', " .
+- "contactelectronicmailaddress = '".$_REQUEST['contactelectronicmailaddress_box']."'";
+- if (isset($_REQUEST['wms_timestamp_box']) && $_REQUEST['wms_timestamp_box'] <> "")
+- {
+- $update_wms_sql .= ", " . "wms_timestamp = " .
+- "'".guessTimestamp($_REQUEST['wms_timestamp_box'])."' ";
+- }
+- $update_wms_sql .= "WHERE wms_id = '".$_REQUEST['wms_id']."'";
+- $res_update_wms_sql = db_query($update_wms_sql);
+- while(list($key,$val) = each($_REQUEST))
++ $update_wms_sql = "UPDATE wms SET ";
++ $update_wms_sql .= "wms_title = $1, wms_abstract = $2, fees = $3, ";
++ $update_wms_sql .= "accessconstraints = $4, contactperson = $5, ";
++ $update_wms_sql .= "contactposition = $6, contactorganization = $7, ";
++ $update_wms_sql .= "address = $8, city = $9, stateorprovince = $10, ";
++ $update_wms_sql .= "postcode = $11, country = $12, ";
++ $update_wms_sql .= "contactvoicetelephone = $13, ";
++ $update_wms_sql .= "contactfacsimiletelephone = $14, ";
++ $update_wms_sql .= "contactelectronicmailaddress = $15 ";
++
++ $v = array();
++ array_push($v, $_REQUEST['wms_title_box']);
++ array_push($v, $_REQUEST['wms_abstract_box']);
++ array_push($v, $_REQUEST['fees_box']);
++ array_push($v, $_REQUEST['accessconstraints_box']);
++ array_push($v, $_REQUEST['contactperson_box']);
++ array_push($v, $_REQUEST['contactposition_box']);
++ array_push($v, $_REQUEST['contactorganization_box']);
++ array_push($v, $_REQUEST['address_box']);
++ array_push($v, $_REQUEST['city_box']);
++ array_push($v, $_REQUEST['stateorprovince_box']);
++ array_push($v, $_REQUEST['postcode_box']);
++ array_push($v, $_REQUEST['country_box']);
++ array_push($v, $_REQUEST['contactvoicetelephone_box']);
++ array_push($v, $_REQUEST['contactfacsimiletelephone_box']);
++ array_push($v, $_REQUEST['contactelectronicmailaddress_box']);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s");
++
++ if (isset($_REQUEST['wms_timestamp_box']) && $_REQUEST['wms_timestamp_box'] <> "") {
++ $update_wms_sql .= ", wms_timestamp = $16 ";
++ array_push($v, guessTimestamp($_REQUEST['wms_timestamp_box']));
++ array_push($t, "s");
++
++ $update_wms_sql .= "WHERE wms_id = $17";
++ }
++ else {
++ $update_wms_sql .= "WHERE wms_id = $16";
++ }
++ array_push($v, $_REQUEST['wms_id']);
++ array_push($t, "s");
++
++ $res_update_wms_sql = db_prep_query($update_wms_sql, $v, $t);
++
++ while(list($key,$val) = each($_REQUEST))
+ {
+ if(preg_match("/___/", $key))
+ {
+@@ -132,20 +138,19 @@
+ if(preg_match("/___/", $key))
+ {
+ $myKey = explode("___", $key);
+- $layer_id = str_replace("L_","",$myKey[0]);
+- if($myKey[1]=="layer_abstract")
+- {
+- $layer_sql = "UPDATE layer SET layer_abstract = '$val' " .
+- "WHERE layer_id = $layer_id AND fkey_wms_id = '".$_REQUEST['wms_id']."'";
+- $res_keyword_sql = db_query($layer_sql);
++ $layer_id = preg_replace("/L_/","",$myKey[0]);
++ if($myKey[1]=="layer_abstract") {
++ $layer_sql = "UPDATE layer SET layer_abstract = $1 ";
++ $layer_sql .= "WHERE layer_id = $2 AND fkey_wms_id = $3";
++ $v = array($val, $layer_id, $_REQUEST['wms_id']);
++ $t = array("s", "i", "s");
++ $res_keyword_sql = db_prep_query($layer_sql, $v, $t);
+ }
+- if($myKey[1]=="layer_keywords")
+- {
++ if($myKey[1]=="layer_keywords") {
+ #Get all keywords depending on the given layer after user modification
+ $keywords = explode(",",$val);
+ #delete all blanks from the keywords list
+- for($j = 0; $j < count($keywords); $j++)
+- {
++ for ($j = 0; $j < count($keywords); $j++) {
+ $word = $keywords[$j];
+ $word = trim($word);
+ $keywords[$j] = $word;
+@@ -155,9 +160,12 @@
+ $keyword_sql = "SELECT keyword_id, keyword FROM keyword, layer_keyword, layer " .
+ "WHERE keyword.keyword_id = layer_keyword.fkey_keyword_id " .
+ "AND layer_keyword.fkey_layer_id = layer.layer_id " .
+- "AND layer.fkey_wms_id = '".$_REQUEST['wms_id']."'" .
+- "AND layer.layer_id = $layer_id";
+- $res_keyword_sql = db_query($keyword_sql);
++ "AND layer.fkey_wms_id = $1 " .
++ "AND layer.layer_id = $2";
++
++ $v = array($_REQUEST['wms_id'], $layer_id);
++ $t = array("s", "i");
++ $res_keyword_sql = db_prep_query($keyword_sql, $v, $t);
+ while($keyword_row = db_fetch_array($res_keyword_sql))
+ {
+ $keyword = $keyword_row['keyword'];
+@@ -171,13 +179,17 @@
+ #echo "1c: Keyword nicht in User Liste: Keyword: ", $keyword, ";<br>";
+ #Deleting reference to the keyword from the layer_keyword table.
+ $keyword_sql = "DELETE FROM layer_keyword " .
+- "WHERE fkey_layer_id = $layer_id " .
+- "AND fkey_keyword_id = $keyword_id";
+- db_query($keyword_sql);
++ "WHERE fkey_layer_id = $1 " .
++ "AND fkey_keyword_id = $2";
++ $v = array($layer_id, $keyword_id);
++ $t = array("i", "i");
++ db_prep_query($keyword_sql, $v, $t);
+ #Checking, if the keyword is in use by any layer
+ $layer_sql = "SELECT * FROM layer_keyword " .
+- "WHERE fkey_keyword_id = $keyword_id";
+- $res_layer_sql = db_query($layer_sql);
++ "WHERE fkey_keyword_id = $1";
++ $v = array($keyword_id);
++ $t = array("i");
++ $res_layer_sql = db_prep_query($layer_sql, $v, $t);
+ if(!($row = db_fetch_array($res_layer_sql)))
+ {
+ #If keyword will not longer be in use, delete it from keyword table
+@@ -182,8 +194,10 @@
+ {
+ #If keyword will not longer be in use, delete it from keyword table
+ $keyword_sql = "DELETE FROM keyword " .
+- "WHERE keyword_id = $keyword_id";
+- db_query($keyword_sql);
++ "WHERE keyword_id = $1";
++ $v = array($keyword_id);
++ $t = array("i");
++ db_prep_query($keyword_sql, $v, $t);
+ }
+ }
+ #Keyword exists in the database and in the user data
+@@ -211,8 +225,10 @@
+ $keyword = trim($keywords[$i]);
+ #Check, if the keyword is exsiting in the database
+ $keyword_sql = "SELECT keyword_id FROM keyword " .
+- "WHERE UPPER(keyword) = UPPER('$keyword')";
+- $res_keyword_sql = db_query($keyword_sql);
++ "WHERE UPPER(keyword) = UPPER($1)";
++ $v = array($keyword);
++ $t = array("s");
++ $res_keyword_sql = db_prep_query($keyword_sql, $v, $t);
+ $keyword_row = db_fetch_array($res_keyword_sql);
+ #Keyword exists in the database
+ if($keyword_row != null)
+@@ -223,10 +239,15 @@
+ #Keyword does not exist in the database
+ else
+ {
+- $keyword_sql = "INSERT INTO keyword (keyword) VALUES ('$keyword')";
+- $res_keyword_sql = db_query($keyword_sql);
+- $keyword_sql = "SELECT keyword_id FROM keyword WHERE keyword = '$keyword'";
+- $res_keyword_sql = db_query($keyword_sql);
++ $keyword_sql = "INSERT INTO keyword (keyword) VALUES ($1)";
++ $v = array($keyword);
++ $t = array("s");
++ $res_keyword_sql = db_prep_query($keyword_sql, $v, $t);
++
++ $keyword_sql = "SELECT keyword_id FROM keyword WHERE keyword = $1";
++ $v = array($keyword);
++ $t = array("s");
++ $res_keyword_sql = db_prep_query($keyword_sql, $v, $t);
+ $keyword_row = db_fetch_array($res_keyword_sql);
+ if($keyword_row != null)
+ {
+@@ -236,8 +257,10 @@
+ }
+ #Inserting the reference between layer and keyword in the layer_keyword table
+ $keyword_sql = "INSERT INTO layer_keyword (fkey_layer_id, fkey_keyword_id) " .
+- "VALUES ('$layer_id', '$keyword_id')";
+- $res_keyword_sql = db_query($keyword_sql);
++ "VALUES ($1, $2)";
++ $v = array($layer_id, $keyword_id);
++ $t = array("s", "s");
++ $res_keyword_sql = db_prep_query($keyword_sql, $v, $t);
+ }
+ }
+ #Delete all elements from array
+@@ -253,12 +276,14 @@
+ if(isset($_REQUEST['delete_preview']) && $_REQUEST['delete_preview']=='1'
+ && isset($_REQUEST['layer_id']))
+ {
+- $preview_sql = "DELETE FROM layer_preview WHERE fkey_layer_id = ".$_REQUEST['layer_id']."";
+- $res_preview_sql = db_query($preview_sql);
++ $preview_sql = "DELETE FROM layer_preview WHERE fkey_layer_id = $1";
++ $v = array($_REQUEST['layer_id']);
++ $t = array("s");
++ $res_preview_sql = db_prep_query($preview_sql, $v, $t);
+ die("Preview has been deleted!</body></html>");
+ }
+ ?>
+-<form name='form1' action='<?php $self ?>' method='post'>
++<form name='form1' action='<?php echo $self; ?>' method='post'>
+
+ <table border='0'>
+ <tr>
+@@ -273,12 +298,13 @@
+
+ #Use select box to select a wms
+
+-if (isset($_REQUEST['show_wms_list']) && $_REQUEST['show_wms_list'] == true)
+-{
++//if (isset($_REQUEST['show_wms_list']) && $_REQUEST['show_wms_list'] == true){
+
+ #Querying information from wms data table
+- $wms_sql = "SELECT wms_id, wms_title FROM wms WHERE wms_owner = ".$_SESSION["mb_user_id"]. " ORDER BY wms_title";
+- $res_wms_sql = db_query($wms_sql);
++ $wms_sql = "SELECT wms_id, wms_title FROM wms WHERE wms_owner = $1 ORDER BY wms_title";
++ $v = array($_SESSION["mb_user_id"]);
++ $t = array("i");
++ $res_wms_sql = db_prep_query($wms_sql, $v, $t);
+ #wms-selection
+
+ $selectBox = "";
+@@ -306,7 +332,7 @@
+
+ if(isset($_REQUEST['wmsList']) == true && $_REQUEST['wmsList'] <>0)
+ editWMSByWMSID ($_REQUEST['wmsList']);
+-}
++//}
+
+ echo "</table>";
+
+@@ -321,8 +347,10 @@
+
+ if(isset($wms_id) == true && $wms_id <>0)
+ {
+- $selected_wms_sql = "SELECT * FROM wms WHERE wms_id = '".$wms_id."'";
+- $res_selected_wms_sql = db_query($selected_wms_sql);
++ $selected_wms_sql = "SELECT * FROM wms WHERE wms_id = $1";
++ $v = array($wms_id);
++ $t = array("s");
++ $res_selected_wms_sql = db_prep_query($selected_wms_sql, $v, $t);
+ $selected_row = db_fetch_array($res_selected_wms_sql);
+
+ ?>
+@@ -400,9 +428,11 @@
+
+ <?php
+
+- $layer_sql = "SELECT * FROM layer WHERE layer.fkey_wms_id = '".$wms_id."'" .
++ $layer_sql = "SELECT * FROM layer WHERE layer.fkey_wms_id = $1" .
+ " ORDER BY layer_pos";
+- $res_layer_sql = db_query($layer_sql);
++ $v = array($wms_id);
++ $t = array("s");
++ $res_layer_sql = db_prep_query($layer_sql, $v, $t);
+
+ while($layer_row = db_fetch_array($res_layer_sql))
+ {
+@@ -419,9 +449,11 @@
+ $keyword_sql = "SELECT keyword FROM keyword, layer_keyword, layer " .
+ "WHERE keyword.keyword_id = layer_keyword.fkey_keyword_id " .
+ "AND layer_keyword.fkey_layer_id = layer.layer_id " .
+- "AND layer.fkey_wms_id = '".$wms_id."' " .
+- "AND layer.layer_id = ".$layer_row['layer_id']."";
+- $res_keyword_sql = db_query($keyword_sql);
++ "AND layer.fkey_wms_id = $1 " .
++ "AND layer.layer_id = $2";
++ $v = array($wms_id, $layer_row['layer_id']);
++ $t = array("s", "i");
++ $res_keyword_sql = db_prep_query($keyword_sql, $v, $t);
+ $keywordList = "";
+ $seperator = "";
+ while($keyword_row = db_fetch_array($res_keyword_sql))
+Index: http/php/mod_evalArea.php
+===================================================================
+--- http/php/mod_evalArea.php (revision 2361)
++++ http/php/mod_evalArea.php (working copy)
+@@ -17,9 +17,10 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ import_request_variables("PG");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
+ include '../include/dyn_css.php';
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -31,11 +32,6 @@
+ echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+ ?>
+ <title>Resultset</title>
+-<?php
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-
+-?>
+ <style type="text/css">
+ <!--
+
+@@ -61,55 +57,71 @@
+ $posY = explode (",", $y);
+
+
+-if(SYS_DBTYPE=='pgsql'){
+- if(count($posX) > 3){
+- $sql = "SELECT area2d(GeometryFromText('MULTIPOLYGON(((";
+- for($i=0; $i<count($posX); $i++){
+- if($i>0){$sql .= ",";}
+- $sql .= $posX[$i] . " " . $posY[$i];
+- }
+- $sql .= ")))',".rawurldecode($epsg).")) as myArea";
+- $res = db_query($sql);
+- if($row = db_fetch_array($res)){
+- echo "Fläche: ".round($row[0]*100)/100 . " m<sup>2</sup>";
+- }
+- }
+- else{
+- echo "Fläche: 0 m<sup>2</sup>";
+- }
+-}else{
+- #echo "Fl�chenberechnung f�r MySQL liegt derzeit nicht vor<br></sup>";
+- #$con = db_connect($GEOS_DBSERVER,$GEOS_PORT,$GEOS_OWNER,$GEOS_PW);
+- #db_select_db($GEOS_DBSERVER,$con);
+- $con_string = "host=$GEOS_DBSERVER port=$GEOS_PORT dbname=$GEOS_DB user=$GEOS_OWNER password=$GEOS_PW";
++// check if parameters are valid geometries to
++// avoid SQL injections
++$regExp = "/\d(,\d)*/";
++if (preg_match($regExp, $x) && preg_match($regExp, $y)) {
++
++ if(SYS_DBTYPE=='pgsql'){
++ if (count($posX) > 3) {
++ $sql = "SELECT area2d(GeometryFromText('MULTIPOLYGON(((";
++ for ($i = 0; $i < count($posX); $i++) {
++ if ($i > 0) {
++ $sql .= ",";
++ }
++ $sql .= $posX[$i] . " " . $posY[$i];
++ }
++ $sql .= ")))',".rawurldecode($epsg).")) as myArea";
+
+- $con = pg_connect($con_string) or die ("Error while connecting database");
+-
++ // the input parameters are valid
++ $res = db_query($sql);
++ if($row = db_fetch_array($res)){
++ echo "Fläche: ".round($row[0]*100)/100 . " m<sup>2</sup>";
++ }
++ }
++ else{
++ echo "Fläche: 0 m<sup>2</sup>";
++ }
++ }else{
++ #echo "Fl�chenberechnung f�r MySQL liegt derzeit nicht vor<br></sup>";
++ #$con = db_connect($GEOS_DBSERVER,$GEOS_PORT,$GEOS_OWNER,$GEOS_PW);
++ #db_select_db($GEOS_DBSERVER,$con);
++ $con_string = "host=$GEOS_DBSERVER port=$GEOS_PORT dbname=$GEOS_DB user=$GEOS_OWNER password=$GEOS_PW";
++
++ $con = pg_connect($con_string) or die ("Error while connecting database");
++
++
++ if(count($posX) > 3){
++ $sql = "SELECT area2d(GeometryFromText('MULTIPOLYGON(((";
++ $i==0;
++ for($i=0; $i<count($posX); $i++){
++ if($i>0){$sql .= ",";}
++ $sql .= $posX[$i] . " " . $posY[$i];
++ }
++ $sql .= ")))',".rawurldecode($epsg).")) as myArea";
++ $res = pg_query($con,$sql);
++
++ $cnt = 0;
++ while(pg_fetch_row($res)){
++ $area = pg_fetch_result($res,$cnt,0);
++ echo "Fläche: ".round($area*100)/100 . " m<sup>2</sup>";
++ $cnt++;
++ }
++ }
++ else{
++ echo "Fläche: 0 m<sup>2</sup>";
++ }
++ }
+
+- if(count($posX) > 3){
+- $sql = "SELECT area2d(GeometryFromText('MULTIPOLYGON(((";
+- $i==0;
+- for($i=0; $i<count($posX); $i++){
+- if($i>0){$sql .= ",";}
+- $sql .= $posX[$i] . " " . $posY[$i];
+- }
+- $sql .= ")))',".rawurldecode($epsg).")) as myArea";
+- $res = pg_query($con,$sql);
+-
+- $cnt = 0;
+- while(pg_fetch_row($res)){
+- $area = pg_fetch_result($res,$cnt,0);
+- echo "Fläche: ".round($area*100)/100 . " m<sup>2</sup>";
+- $cnt++;
+- }
+- }
+- else{
+- echo "Fläche: 0 m<sup>2</sup>";
+- }
++ echo "<br>";
++ echo "Umfang: ". $length . " m";
++}
++else {
++ $e = new mb_exception("mod_evalArea.php: invalid input geometry; coordinates not float values.");
++ echo "Fläche: 0 m<sup>2</sup>";
+ }
+
+-echo "<br>";
+-echo "Umfang: ". $length . " m";
++
+ #Centroid(geometry)
+ /*
+ $sql = "SELECT Centroid(GeometryFromText('MULTIPOLYGON(((";
+Index: http/php/mod_export_image.php
+===================================================================
+--- http/php/mod_export_image.php (revision 2361)
++++ http/php/mod_export_image.php (working copy)
+@@ -16,10 +16,14 @@
+ # 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.
+-session_start();
++
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ import_request_variables("PG");
++
+ $_SESSION["mb_print_url"] = $map_url;
+ $_SESSION["mb_print_resolution"] = $quality;
++
+ header("Content-type: application/png"); // mark the following content as PNG file
+ $date = date("d.m.y");
+ header("Content-Disposition: attachment; filename=export".$date.".png");
+Index: http/php/mod_exportElement.php
+===================================================================
+--- http/php/mod_exportElement.php (revision 2361)
++++ http/php/mod_exportElement.php (working copy)
+@@ -18,6 +18,7 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_exportGUI.php
+===================================================================
+--- http/php/mod_exportGUI.php (revision 2361)
++++ http/php/mod_exportGUI.php (working copy)
+@@ -17,13 +17,12 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+Index: http/php/mod_filteredGroup_filteredGui.php
+===================================================================
+--- http/php/mod_filteredGroup_filteredGui.php (revision 2361)
++++ http/php/mod_filteredGroup_filteredGui.php (working copy)
+@@ -20,10 +20,10 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredGroup_filteredUser.php
+===================================================================
+--- http/php/mod_filteredGroup_filteredUser.php (revision 2361)
++++ http/php/mod_filteredGroup_filteredUser.php (working copy)
+@@ -20,11 +20,10 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredGroup_Gui.php
+===================================================================
+--- http/php/mod_filteredGroup_Gui.php (revision 2361)
++++ http/php/mod_filteredGroup_Gui.php (working copy)
+@@ -20,11 +20,10 @@
+
+ import_request_variables("PG");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredGroup_User.php
+===================================================================
+--- http/php/mod_filteredGroup_User.php (revision 2361)
++++ http/php/mod_filteredGroup_User.php (working copy)
+@@ -18,12 +18,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredGui_filteredGroup.php
+===================================================================
+--- http/php/mod_filteredGui_filteredGroup.php (revision 2361)
++++ http/php/mod_filteredGui_filteredGroup.php (working copy)
+@@ -18,12 +18,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredGui_filteredUser.php
+===================================================================
+--- http/php/mod_filteredGui_filteredUser.php (revision 2361)
++++ http/php/mod_filteredGui_filteredUser.php (working copy)
+@@ -18,12 +18,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+Index: http/php/mod_filteredGui_group.php
+===================================================================
+--- http/php/mod_filteredGui_group.php (revision 2361)
++++ http/php/mod_filteredGui_group.php (working copy)
+@@ -17,12 +17,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredGui_User.php
+===================================================================
+--- http/php/mod_filteredGui_User.php (revision 2361)
++++ http/php/mod_filteredGui_User.php (working copy)
+@@ -17,13 +17,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredUser_filteredGroup.php
+===================================================================
+--- http/php/mod_filteredUser_filteredGroup.php (revision 2361)
++++ http/php/mod_filteredUser_filteredGroup.php (working copy)
+@@ -17,12 +17,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredUser_filteredGui.php
+===================================================================
+--- http/php/mod_filteredUser_filteredGui.php (revision 2361)
++++ http/php/mod_filteredUser_filteredGui.php (working copy)
+@@ -17,13 +17,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredUser_Group.php
+===================================================================
+--- http/php/mod_filteredUser_Group.php (revision 2361)
++++ http/php/mod_filteredUser_Group.php (working copy)
+@@ -17,12 +17,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredUser_Gui.php
+===================================================================
+--- http/php/mod_filteredUser_Gui.php (revision 2361)
++++ http/php/mod_filteredUser_Gui.php (working copy)
+@@ -17,12 +17,11 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_filteredWms_layer_topic.php
+===================================================================
+--- http/php/mod_filteredWms_layer_topic.php (revision 2361)
++++ http/php/mod_filteredWms_layer_topic.php (working copy)
+@@ -17,16 +17,6 @@
+ # 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__)."/../../conf/mapbender.conf");
+-require_once(dirname(__FILE__)."/mb_validatePermission.php");
+-require_once("../classes/class_administration.php");
+-
+-$logged_user_name = $_SESSION["mb_user_name"];
+-$logged_user_id = $_SESSION["mb_user_id"];
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -32,198 +22,8 @@
+ <html>
+ <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET;?>">
+ <title>Administration</title>
+-<?php
+-include '../include/dyn_css.php';
+-?>
+-<script language="JavaScript">
+-function validate(wert){
+- if(document.forms[0]["selected_wms"].selectedIndex == -1){
+- document.getElementsByName("selected_wms")[0].style.backgroundColor = '#ff0000';
+- return;
+- }else if(document.forms[0]["selected_layer"].selectedIndex == -1){
+- document.getElementsByName("selected_layer")[0].style.backgroundColor = '#ff0000';
+- return;
+- }else{
+- if(wert == "remove"){
+- if(document.forms[0]["remove_topic[]"].selectedIndex == -1){
+- document.getElementsByName("remove_topic[]")[0].style.backgroundColor = '#ff0000';
+- return;
+- }
+- document.form1.remove.value = 'true';
+- document.form1.submit();
+- }
+- if(wert == "insert"){
+- if(document.forms[0]["selected_topic[]"].selectedIndex == -1){
+- document.getElementsByName("selected_topic[]")[0].style.backgroundColor = '#ff0000';
+- return;
+- }
+- document.form1.insert.value = 'true';
+- document.form1.submit();
+- }
+- }
+-}
+-</script>
+ </head>
+ <body>
+-<?php
+-
+-$fieldHeight = 20;
+-$language_suffix = "en";
+-
+-//FIXME: there seems to be an error in dyn_css.php concerning php vars.
+-if ($language == "'de'") {
+- $language_suffix = "de";
+-}
+-
+-$admin = new administration();
+-$own_gui_id_array = $admin->getGuisByOwner($logged_user_id,true);
+-$own_wms_id_array = array();
+-
+-$sql = "SELECT wms_id FROM wms WHERE wms_owner = $1";
+-$v = array($logged_user_id);
+-$t = array('i');
+-$res = db_prep_query($sql,$v,$t);
+-
+-while($row = db_fetch_array($res)){
+- array_push($own_wms_id_array,$row['wms_id']);
+-}
+-$own_layer_id_array = $admin->getLayerByWms($selected_wms);
+-
+-/*handle remove, update and insert*****************************************************************/
+-if($insert){
+- if(count($selected_topic) > 0){
+- for($i=0; $i<count($selected_topic); $i++){
+- $exists = false;
+- $sql_insert = "SELECT * FROM layer_md_topic_category WHERE fkey_layer_id = $1 and fkey_md_topic_category_id = $2";
+- $v = array($selected_layer,$selected_topic[$i]);
+- $t = array('i','i');
+- $res_insert = db_prep_query($sql_insert,$v,$t);
+- while(db_fetch_row($res_insert)){$exists = true;}
+- if($exists == false){
+- $sql_insert = "INSERT INTO layer_md_topic_category (fkey_layer_id, fkey_md_topic_category_id) VALUES($1, $2)";
+- $v = array($selected_layer,$selected_topic[$i]);
+- $t = array('i','i');
+- $res_insert = db_prep_query($sql_insert,$v,$t);
+- }
+- }
+- }
+-}
+-if($remove){
+- if(count($remove_topic)>0){
+- for($i=0; $i<count($remove_topic); $i++){
+- $sql_remove = "DELETE FROM layer_md_topic_category WHERE fkey_md_topic_category_id = $1 and fkey_layer_id = $2";
+- $v = array($remove_topic[$i],$selected_layer);
+- $t = array('i','s');
+- db_prep_query($sql_remove,$v,$t);
+- }
+- }
+-}
+-
+-
+-if (!isset($selected_layer)) {
+- if (count($own_layer_id_array) > 0) {
+- $selected_layer = $own_layer_id_array[0];
+- }
+-}
+-
+-$topic_id_layer = array();
+-
+-if (isset($selected_layer)) {
+- /*get all topics from selected layer*****************************************************************/
+- if ($language_suffix == "de") {
+- $sql_layer_topic = "SELECT t.md_topic_category_id, t.md_topic_category_code_de ";
+- $sql_layer_topic .= "FROM layer_md_topic_category as w, md_topic_category as t WHERE w.fkey_layer_id = $1 AND w.fkey_md_topic_category_id = t.md_topic_category_id ";
+- $sql_layer_topic .= "ORDER BY t.md_topic_category_code_de";
+- }
+- else {
+- $sql_layer_topic = "SELECT t.md_topic_category_id, t.md_topic_category_code_en ";
+- $sql_layer_topic .= "FROM layer_md_topic_category as w, md_topic_category as t WHERE w.fkey_layer_id = $1 AND w.fkey_md_topic_category_id = t.md_topic_category_id ";
+- $sql_layer_topic .= "ORDER BY t.md_topic_category_code_en";
+- }
+-
+- $v = array($selected_layer);
+- $t = array('s');
+- $res_layer_topic = db_prep_query($sql_layer_topic,$v,$t);
+-
+- while($row = db_fetch_array($res_layer_topic)){
+- array_push($topic_id_layer, $row["md_topic_category_id"]);
+- array_push($topic_name_layer, $row["md_topic_category_code_".$language_suffix]);
+- }
+-}
+-/*get all topics **********************************************************************************/
+-if ($language_suffix == "de") {
+- $sql_topic = "SELECT * FROM md_topic_category ORDER BY md_topic_category_code_de";
+-}
+-else {
+- $sql_topic = "SELECT * FROM md_topic_category ORDER BY md_topic_category_code_en";
+-}
+-$res_topic = db_query($sql_topic);
+-$topic_id = array();
+-$topic_name = array();
+-while($row = db_fetch_array($res_topic)){
+- if (!in_array($row["md_topic_category_id"], $topic_id_layer)) {
+- array_push($topic_id, $row["md_topic_category_id"]);
+- array_push($topic_name, $row["md_topic_category_code_".$language_suffix]);
+- }
+-}
+-
+-/*INSERT HTML*/
+-echo "<form name='form1' action='" . $self ."' method='post'>";
+-
+-/*insert wms in selectbox*************************************************************************/
+-echo "<div class='text1'>WMS: </div>";
+-echo "<select style='background:#ffffff' class='select1' name='selected_wms' onChange='submit()' size='10'>";
+-for($i=0; $i<count($own_wms_id_array); $i++){
+- echo "<option value='" . $own_wms_id_array[$i] . "' ";
+- if($selected_wms && $selected_wms == $own_wms_id_array[$i]){
+- echo "selected";
+- }
+- echo ">" . $admin->getWmsTitleByWmsId($own_wms_id_array[$i]) . "</option>";
+-}
+-echo "</select>";
+-
+-/*insert wms in selectbox*************************************************************************/
+-echo "<div class='text2'>Layer: </div>";
+-echo "<select style='background:#ffffff' class='select2' name='selected_layer' onChange='submit()' size='10'>";
+-for($i=0; $i<count($own_layer_id_array); $i++){
+- echo "<option value='" . $own_layer_id_array[$i] . "' ";
+- if($selected_layer && $selected_layer == $own_layer_id_array[$i]){
+- echo "selected";
+- }
+- echo ">" . $admin->getLayerTitleByLayerId($own_layer_id_array[$i]) . "</option>";
+-}
+-echo "</select>";
+-
+-/*insert all groups in selectbox*******************************************************************/
+-echo "<div class='text3'>TOPICS:</div><br>";
+-echo "<select style='background:#ffffff' class='select3' multiple='multiple' name='selected_topic[]' size='$fieldHeight' >";
+-for($i=0; $i<count($topic_id); $i++){
+- echo "<option value='" . $topic_id[$i] . "'>" . $topic_name[$i] . "</option>";
+-}
+-echo "</select>";
+-
+-/*Button*******************************************************************************************/
+-
+-echo "<div class='button1'><input type='button' value='==>' onClick='validate(\"insert\")'></div>";
+-echo "<input type='hidden' name='insert'>";
+-
+-echo "<div class='button2'><input type='button' value='<==' onClick='validate(\"remove\")'></div>";
+-echo "<input type='hidden' name='remove'>";
+-
+-/*insert wms_topic_dependence and container_group_dependence in selectbox**************************************************/
+-echo "<div class='text4'>SELECTED TOPICS:</div>";
+-echo "<select style='background:#ffffff' class='select4' multiple='multiple' name='remove_topic[]' size='$fieldHeight' >";
+-for ($i=0; $i < count($topic_id_layer); $i++) {
+- echo "<option value='" . $topic_id_layer[$i] . "'>" . $topic_name_layer[$i] . "</option>";
+-}
+-echo "</select>";
+-echo "</form>";
+-
+-?>
+-<script type="text/javascript">
+-<!--
+-document.forms[0].selected_wms.focus();
+-// -->
+-</script>
++This module is still under construction, see <a href='http://www.mapbender.org/Topic_/_Category'>Mapbender Wiki</a>.
+ </body>
+ </html>
+\ No newline at end of file
+Index: http/php/mod_filteredWms_topic.php
+===================================================================
+--- http/php/mod_filteredWms_topic.php (revision 2361)
++++ http/php/mod_filteredWms_topic.php (working copy)
+@@ -16,13 +16,6 @@
+ # 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.
+-
+-import_request_variables("PG");
+-require_once("../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+-require_once("../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -30,160 +23,8 @@
+ echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+ ?>
+ <title>Administration</title>
+-<?php
+-include '../include/dyn_css.php';
+-?>
+-<script language="JavaScript">
+-function validate(wert){
+- if(document.forms[0]["selected_wms"].selectedIndex == -1){
+- document.getElementsByName("selected_wms")[0].style.backgroundColor = '#ff0000';
+- return;
+- }else{
+- if(wert == "remove"){
+- if(document.forms[0]["remove_topic[]"].selectedIndex == -1){
+- document.getElementsByName("remove_topic[]")[0].style.backgroundColor = '#ff0000';
+- return;
+- }
+- document.form1.remove.value = 'true';
+- document.form1.submit();
+- }
+- if(wert == "insert"){
+- if(document.forms[0]["selected_topic[]"].selectedIndex == -1){
+- document.getElementsByName("selected_topic[]")[0].style.backgroundColor = '#ff0000';
+- return;
+- }
+- document.form1.insert.value = 'true';
+- document.form1.submit();
+- }
+- }
+-}
+-</script>
+-
+ </head>
+ <body>
+-<?php
+-
+-require_once("../classes/class_administration.php");
+-
+-$fieldHeight = 20;
+-
+-$language_suffix = "en";
+-//FIXME: there seems to be an error in dyn_css.php concerning php vars.
+-if ($language == "'de'") {
+- $language_suffix = "de";
+-}
+-
+-$logged_user_name = $_SESSION["mb_user_name"];
+-$logged_user_id = $_SESSION["mb_user_id"];
+-
+-$admin = new administration();
+-$own_gui_id_array = $admin->getGuisByOwner($logged_user_id,true);
+-$own_wms_id_array = $admin->getWmsByOwnGuis($own_gui_id_array);
+-$cnt_wms = count($own_wms_id_array);
+-
+-/*handle remove, update and insert*****************************************************************/
+-if($insert){
+- if(count($selected_topic) > 0){
+- for($i=0; $i<count($selected_topic); $i++){
+- $exists = false;
+- $sql_insert = "SELECT * FROM wms_md_topic_category WHERE fkey_wms_id = $1 and fkey_md_topic_category_id = $2";
+- $v = array($selected_wms,$selected_topic[$i]);
+- $t = array('i','i');
+- $res_insert = db_prep_query($sql_insert,$v,$t);
+- while(db_fetch_row($res_insert)){$exists = true;}
+- if($exists == false){
+- $sql_insert = "INSERT INTO wms_md_topic_category (fkey_wms_id, fkey_md_topic_category_id) VALUES($1, $2)";
+- $v = array($selected_wms,$selected_topic[$i]);
+- $t = array('i','i');
+- $res_insert = db_prep_query($sql_insert,$v,$t);
+- }
+- }
+- }
+-}
+-if($remove){
+- if(count($remove_topic)>0){
+- for($i=0; $i<count($remove_topic); $i++){
+- $sql_remove = "DELETE FROM wms_md_topic_category WHERE fkey_md_topic_category_id = $1 and fkey_wms_id = $2";
+- $v = array($remove_topic[$i],$selected_wms);
+- $t = array('i','s');
+- db_prep_query($sql_remove,$v,$t);
+- }
+- }
+-}
+-
+-/*get all topics from selected wms*****************************************************************/
+-$sql_wms_topic = "SELECT t.md_topic_category_id, t.md_topic_category_code_".$language_suffix." ";
+-$sql_wms_topic .= "FROM wms_md_topic_category as w, md_topic_category as t WHERE w.fkey_wms_id = $1 AND w.fkey_md_topic_category_id = t.md_topic_category_id ";
+-$sql_wms_topic .= "ORDER BY t.md_topic_category_code_".$language_suffix;
+-
+-if(!$selected_wms){$v = array($own_wms_id_array[0]);}
+-if($selected_wms){$v = array($selected_wms);}
+-$t = array('s');
+-$res_wms_topic = db_prep_query($sql_wms_topic,$v,$t);
+-$cnt_wms_topic=0;;
+-while($row = db_fetch_array($res_wms_topic)){
+- $topic_id_wms[$cnt_wms_topic] = $row["md_topic_category_id"];
+- $topic_name_wms[$cnt_wms_topic] = $row["md_topic_category_code_".$language_suffix];
+- $cnt_wms_topic++;
+-}
+-
+-/*get all topics **********************************************************************************/
+-$sql_topic = "SELECT * FROM md_topic_category ORDER BY md_topic_category_code_" . $language_suffix;
+-$res_topic = db_query($sql_topic);
+-$cnt_topic = 0;
+-while($row = db_fetch_array($res_topic)){
+- if (!in_array($row["md_topic_category_id"], $topic_id_wms)) {
+- $topic_id[$cnt_topic] = $row["md_topic_category_id"];
+- $topic_name[$cnt_topic] = $row["md_topic_category_code_".$language_suffix];
+- $cnt_topic++;
+- }
+-}
+-
+-/*INSERT HTML*/
+-echo "<form name='form1' action='" . $self ."' method='post'>";
+-
+-/*insert wms in selectbox*************************************************************************/
+-echo "<div class='text1'>WMS: </div>";
+-echo "<select style='background:#ffffff' class='select1' name='selected_wms' onChange='submit()' size='10'>";
+-for($i=0; $i<$cnt_wms; $i++){
+- echo "<option value='" . $own_wms_id_array[$i] . "' ";
+- if($selected_wms && $selected_wms == $own_wms_id_array[$i]){
+- echo "selected";
+- }
+- echo ">" . $admin->getWmsTitleByWmsId($own_wms_id_array[$i]) . "</option>";
+-}
+-echo "</select>";
+-
+-/*insert all groups in selectbox*******************************************************************/
+-echo "<div class='text2'>TOPICS:</div><br>";
+-echo "<select style='background:#ffffff' class='select2' multiple='multiple' name='selected_topic[]' size='$fieldHeight' >";
+-for($i=0; $i<$cnt_topic; $i++){
+- echo "<option value='" . $topic_id[$i] . "'>" . $topic_name[$i] . "</option>";
+-}
+-echo "</select>";
+-
+-/*Button*******************************************************************************************/
+-
+-echo "<div class='button1'><input type='button' value='==>' onClick='validate(\"insert\")'></div>";
+-echo "<input type='hidden' name='insert'>";
+-
+-echo "<div class='button2'><input type='button' value='<==' onClick='validate(\"remove\")'></div>";
+-echo "<input type='hidden' name='remove'>";
+-
+-/*insert wms_topic_dependence and container_group_dependence in selectbox**************************************************/
+-echo "<div class='text3'>SELECTED TOPICS:</div>";
+-echo "<select style='background:#ffffff' class='select3' multiple='multiple' name='remove_topic[]' size='$fieldHeight' >";
+-for($i=0; $i<$cnt_wms_topic; $i++){
+- echo "<option value='" . $topic_id_wms[$i] . "'>" . $topic_name_wms[$i] . "</option>";
+-}
+-echo "</select>";
+-echo "</form>";
+-
+-?>
+-<script type="text/javascript">
+-<!--
+-document.forms[0].selected_wms.focus();
+-// -->
+-</script>
++This module is still under construction, see <a href='http://www.mapbender.org/Topic_/_Category'>Mapbender Wiki</a>.
+ </body>
+ </html>
+\ No newline at end of file
+Index: http/php/mod_forgottenPassword.php
+===================================================================
+--- http/php/mod_forgottenPassword.php (revision 2361)
++++ http/php/mod_forgottenPassword.php (working copy)
+@@ -17,8 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ import_request_variables("PG");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -70,7 +70,7 @@
+ if ($_POST["sendnew"]) {
+ if ($_POST["username"]) {
+ $id = $admin->getUserIdByUserName($_POST["username"]);
+- $user_id = $id[0];
++ $user_id = $id;
+
+ if ($user_id) {
+ $upd=true;
+@@ -132,8 +132,7 @@
+
+ echo "<fieldset><legend>Forgot your Passwort ?</legend>";
+ #echo "<fieldset><legend>Passwort vergessen ?</legend>";
+- #echo "<form name='form1' action='" . $PHP_SELF . "' method='post'>";
+- echo "<form name='form1' method='post'>";
++ echo "<form name='form1' action='" . $self . "' method='post'>";
+ echo "<table cellpadding='5' cellspacing='0' border='0'><tr>";
+ echo "<td>";
+ echo "Username:";
+Index: http/php/mod_gazetteer_conf.php
+===================================================================
+--- http/php/mod_gazetteer_conf.php (revision 2361)
++++ http/php/mod_gazetteer_conf.php (working copy)
+@@ -17,8 +17,10 @@
+ # 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__)."/../php/mb_validateSession.php");
+ require(dirname(__FILE__)."/../classes/class_wfs_conf.php");
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
++
++$sParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <html>
+ <head>
+@@ -60,7 +62,7 @@
+ <body>
+ Gazetteer Configuration<br>
+ <form method='POST' onsubmit='return validate()'>
+-<a href="mod_gazetteer_edit.php">edit</a><br>
++<a href="mod_gazetteer_edit.php?<?php echo $sParams;?>">edit</a><br>
+ <?php
+ $aWFS = new wfs_conf();
+ $aWFS->getallwfs();
+@@ -72,36 +74,22 @@
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+
+- $sql = "INSERT INTO gazetteer (gazetteer_abstract,fkey_wfs_id,fkey_featuretype_id,g_label,g_label_id,g_button,g_button_id,g_style,g_buffer,g_res_style,g_use_wzgraphics) VALUES(";
+- $sql .= "'".$_REQUEST["gazetteer_abstract"]."',";
+- $sql .= "'".$_REQUEST["wfs"]."',";
+- $sql .= "'".$_REQUEST["featuretype"]."',";
+- $sql .= "'".$_REQUEST["g_label"]."',";
+- $sql .= "'".$_REQUEST["g_label_id"]."',";
+- $sql .= "'".$_REQUEST["g_button"]."',";
+- $sql .= "'".$_REQUEST["g_button_id"]."',";
+- $sql .= "'".$_REQUEST["g_style"]."',";
+- $sql .= "'".$_REQUEST["g_buffer"]."',";
+- $sql .= "'".$_REQUEST["g_res_style"]."',";
+- $sql .= $_REQUEST["g_use_wzgraphics"];
+- $sql .= "); ";
+-
+- $res = db_query($sql);
++ $sql = "INSERT INTO gazetteer (gazetteer_abstract, fkey_wfs_id, ";
++ $sql .= "fkey_featuretype_id, g_label, g_label_id, g_button, ";
++ $sql .= "g_button_id, g_style, g_buffer, g_res_style, g_use_wzgraphics) ";
++ $sql .= "VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);";
++ $v = array($_REQUEST["gazetteer_abstract"], $_REQUEST["wfs"], $_REQUEST["featuretype"], $_REQUEST["g_label"], $_REQUEST["g_label_id"], $_REQUEST["g_button"], $_REQUEST["g_button_id"], $_REQUEST["g_style"], $_REQUEST["g_buffer"], $_REQUEST["g_res_style"], $_REQUEST["g_use_wzgraphics"]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "i");
++ $res = db_prep_query($sql, $v, $t);
+ $wfsID = db_insert_id($con);
+ for($i=0; $i<count($_REQUEST["f_id"]); $i++){
+- $sql = "INSERT INTO gazetteer_element (fkey_gazetteer_id,f_id,f_search,f_pos,f_style_id,f_toupper,f_label,f_label_id,f_show,f_respos) VALUES(";
+- $sql .= "'".$wfsID."',";
+- $sql .= "'".$_REQUEST["f_id"][$i]."',";
+- $sql .= "'".$_REQUEST["f_search"][$i]."',";
+- $sql .= "'".$_REQUEST["f_pos"][$i]."',";
+- $sql .= "'".$_REQUEST["f_style_id"][$i]."',";
+- $sql .= "'".$_REQUEST["f_toupper"][$i]."',";
+- $sql .= "'".$_REQUEST["f_label"][$i]."',";
+- $sql .= "'".$_REQUEST["f_label_id"][$i]."',";
+- $sql .= "'".$_REQUEST["f_show"][$i]."',";
+- $sql .= "'".$_REQUEST["f_respos"][$i]."'";
+- $sql .= "); ";
+- $res = db_query($sql);
++ $sql = "INSERT INTO gazetteer_element (fkey_gazetteer_id, ";
++ $sql .= "f_id, f_search, f_pos, f_style_id, f_toupper, f_label, ";
++ $sql .= "f_label_id, f_show, f_respos) VALUES (";
++ $sql .= "$1, $2, $3, $4, $5, $6, $7, $8, $9, $10);";
++ $v = array($wfsID, $_REQUEST["f_id"][$i], $_REQUEST["f_search"][$i], $_REQUEST["f_pos"][$i], $_REQUEST["f_style_id"][$i], $_REQUEST["f_toupper"][$i], $_REQUEST["f_label"][$i], $_REQUEST["f_label_id"][$i], $_REQUEST["f_show"][$i], $_REQUEST["f_respos"][$i]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ }
+ }
+
+@@ -141,7 +129,7 @@
+ echo "<tr><td>Title:</td><td>".$aWFS->wfs_title[$i]."</td></tr>";
+ echo "<tr><td>Abstract:</td><td>".$aWFS->wfs_abstract[$i]."</td></tr>";
+ echo "<tr><td>Capabilities:</td><td>".$aWFS->wfs_getcapabilities[$i]."</td></tr>";
+- echo "<tr><td>FeaturTypes:</td><td>".$aWFS->wfs_describefeaturetype[$i]."</td></tr>";
++ echo "<tr><td>FeatureTypes:</td><td>".$aWFS->wfs_describefeaturetype[$i]."</td></tr>";
+ echo "<tr><td>Feature:</td><td>".$aWFS->wfs_getfeature[$i]."</td></tr>";
+ echo "</table>";
+ }
+Index: http/php/mod_gazetteer_edit.php
+===================================================================
+--- http/php/mod_gazetteer_edit.php (revision 2361)
++++ http/php/mod_gazetteer_edit.php (working copy)
+@@ -17,7 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
++$sParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <html>
+ <head>
+@@ -46,7 +48,7 @@
+ <body>
+ Gazetteer Configuration<br>
+ <form method='POST' onsubmit='return validate()'>
+-<a href="mod_gazetteer_conf.php">new</a><br>
++<a href="mod_gazetteer_conf.php?<?php echo $sParams;?>">new</a><br>
+
+ <?php
+ /* save gazetteer properties */
+@@ -56,31 +58,34 @@
+ if(isset($_REQUEST["save"])){
+
+ $sql = "UPDATE gazetteer SET ";
+- $sql .= "gazetteer_abstract = '".$_REQUEST["gazetteer_abstract"]."',";
+- $sql .= "g_label = '".$_REQUEST["g_label"]."',";
+- $sql .= "g_label_id = '".$_REQUEST["g_label_id"]."',";
+- $sql .= "g_button = '".$_REQUEST["g_button"]."',";
+- $sql .= "g_button_id = '".$_REQUEST["g_button_id"]."',";
+- $sql .= "g_style = '".$_REQUEST["g_style"]."',";
+- $sql .= "g_buffer = '".$_REQUEST["g_buffer"]."',";
+- $sql .= "g_res_style = '".$_REQUEST["g_res_style"]."',";
+- $sql .= "g_use_wzgraphics = ".$_REQUEST["g_use_wzgraphics"];
+- $sql .= " WHERE gazetteer_id = ".$_REQUEST["gaz"].";";
+- $res = db_query($sql);
++ $sql .= "gazetteer_abstract = $1, ";
++ $sql .= "g_label = $2, ";
++ $sql .= "g_label_id = $3, ";
++ $sql .= "g_button = $4, ";
++ $sql .= "g_button_id = $5, ";
++ $sql .= "g_style = $6, ";
++ $sql .= "g_buffer = $7, ";
++ $sql .= "g_res_style = $8, ";
++ $sql .= "g_use_wzgraphics = $9 ";
++ $sql .= "WHERE gazetteer_id = $10;";
++ $v = array($_REQUEST["gazetteer_abstract"], $_REQUEST["g_label"], $_REQUEST["g_label_id"], $_REQUEST["g_button"], $_REQUEST["g_button_id"], $_REQUEST["g_style"], $_REQUEST["g_buffer"], $_REQUEST["g_res_style"], $_REQUEST["g_use_wzgraphics"], $_REQUEST["gaz"]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "i", "i");
++ $res = db_prep_query($sql, $v, $t);
+
+ for($i=0; $i<count($_REQUEST["f_id"]); $i++){
+ $sql = "UPDATE gazetteer_element SET ";
+- $sql .= "f_search = '".$_REQUEST["f_search"][$i]."',";
+- $sql .= "f_pos = '".$_REQUEST["f_pos"][$i]."',";
+- $sql .= "f_style_id = '".$_REQUEST["f_style_id"][$i]."',";
+- $sql .= "f_toupper = '".$_REQUEST["f_toupper"][$i]."',";
+- $sql .= "f_label = '".$_REQUEST["f_label"][$i]."',";
+- $sql .= "f_label_id = '".$_REQUEST["f_label_id"][$i]."',";
+- $sql .= "f_show = '".$_REQUEST["f_show"][$i]."',";
+- $sql .= "f_respos = '".$_REQUEST["f_respos"][$i]."'";
+- $sql .= " WHERE fkey_gazetteer_id = ".$_REQUEST["gaz"]." AND f_id = ".$_REQUEST["f_id"][$i].";";
+-
+- $res = db_query($sql);
++ $sql .= "f_search = $1, ";
++ $sql .= "f_pos = $2, ";
++ $sql .= "f_style_id = $3, ";
++ $sql .= "f_toupper = $4, ";
++ $sql .= "f_label = $5, ";
++ $sql .= "f_label_id = $6, ";
++ $sql .= "f_show = $7, ";
++ $sql .= "f_respos = $8 ";
++ $sql .= "WHERE fkey_gazetteer_id = $9 AND f_id = $10;";
++ $v = array($_REQUEST["f_search"][$i], $_REQUEST["f_pos"][$i], $_REQUEST["f_style_id"][$i], $_REQUEST["f_toupper"][$i], $_REQUEST["f_label"][$i], $_REQUEST["f_label_id"][$i], $_REQUEST["f_show"][$i], $_REQUEST["f_respos"][$i], $_REQUEST["gaz"], $_REQUEST["f_id"][$i]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "i", "i");
++ $res = db_prep_query($sql, $v, $t);
+ }
+ }
+
+@@ -110,8 +115,10 @@
+
+ /* configure elements */
+ if(isset($_REQUEST["gaz"])){
+- $sql = "SELECT * FROM gazetteer WHERE gazetteer_id = ".$_REQUEST["gaz"];
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gazetteer WHERE gazetteer_id = $1";
++ $v = array($_REQUEST["gaz"]);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ if($row = db_fetch_array($res)){
+ echo "<table>";
+ echo "<tr><td>GazetterID:</td><td>".$row["gazetteer_id"]."</td></tr>" ;
+@@ -132,9 +139,11 @@
+ /* set element options */
+ $sql = "SELECT * FROM gazetteer_element ";
+ $sql .= "JOIN wfs_element ON gazetteer_element.f_id = wfs_element.element_id ";
+- $sql .= "WHERE fkey_gazetteer_id = ".$_REQUEST["gaz"];
++ $sql .= "WHERE fkey_gazetteer_id = $1";
++ $v = array($_REQUEST["gaz"]);
++ $t = array("i");
+ echo $sql;
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+
+ echo "<table border='1'>";
+ echo "<tr>";
+Index: http/php/mod_gazetteerMetadata.php
+===================================================================
+--- http/php/mod_gazetteerMetadata.php (revision 2361)
++++ http/php/mod_gazetteerMetadata.php (working copy)
+@@ -17,12 +17,13 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++
+ $gui_id = $_SESSION["mb_user_gui"];
+ $user_id = $_SESSION["mb_user_id"];
+
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-require_once(dirname(__FILE__)."/../classes/class_administration.php");
++$sParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+@@ -236,7 +237,7 @@
+ <form name='form1' target='result' onsubmit='return validate();'>
+ <p>
+ <input class='textfield' name='search' type='text' style='width:110px'>
+-<img src="../img/add.png" title="keywords" onclick="window.open('mod_SelectKeyword.php', toolbar='no', status='no');">
++<img src="../img/add.png" title="keywords" onclick="window.open('mod_SelectKeyword.php?<?php echo $sParams;?>', toolbar='no', status='no');">
+ <input type='submit' name='send' value='ok'>
+ </p>
+ </form>
+Index: http/php/mod_gazetteerMetadata_search.php
+===================================================================
+--- http/php/mod_gazetteerMetadata_search.php (revision 2361)
++++ http/php/mod_gazetteerMetadata_search.php (working copy)
+@@ -1,5 +1,7 @@
+ <?php
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++require_once(dirname(__FILE__)."/../extensions/JSON.php");
+
+ $user_id = $_SESSION["mb_user_id"];
+ $query = $_REQUEST["search"];
+@@ -4,10 +6,6 @@
+ $user_id = $_SESSION["mb_user_id"];
+ $query = $_REQUEST["search"];
+
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-require_once(dirname(__FILE__)."/../classes/class_administration.php");
+-require_once(dirname(__FILE__)."/../extensions/JSON.php");
+-
+ $n = new administration();
+ $myguis = $n->getGuisByPermission($user_id, true);
+ $mywms = $n->getWmsByOwnGuis($myguis);
+Index: http/php/mod_gazetteerSQL_server.php
+===================================================================
+--- http/php/mod_gazetteerSQL_server.php (revision 2361)
++++ http/php/mod_gazetteerSQL_server.php (working copy)
+@@ -1,9 +1,7 @@
+ <?php
+-session_start();
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../extensions/JSON.php");
+ require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../../conf/gazetteerSQL.conf");
+
+ $con = pg_connect($connstring);
+Index: http/php/mod_gazLayerObj_conf.php
+===================================================================
+--- http/php/mod_gazLayerObj_conf.php (revision 2361)
++++ http/php/mod_gazLayerObj_conf.php (working copy)
+@@ -17,8 +17,8 @@
+ # 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__)."/../php/mb_validateSession.php");
+ require(dirname(__FILE__)."/../classes/class_wfs_conf.php");
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
+ ?>
+ <html>
+ <head>
+@@ -76,9 +76,11 @@
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+- $sql = "UPDATE gui_layer SET gui_layer_wfs_featuretype = '".$_REQUEST["myWFS"]."' ";
+- $sql .= "WHERE fkey_gui_id='".$_REQUEST["gui"]."' AND fkey_layer_id=".$_REQUEST["layer"];
+- $res = db_query($sql);
++ $sql = "UPDATE gui_layer SET gui_layer_wfs_featuretype = $1 ";
++ $sql .= "WHERE fkey_gui_id = $2 AND fkey_layer_id = $3";
++ $v = array($_REQUEST["myWFS"], $_REQUEST["gui"], $_REQUEST["layer"]);
++ $t = array("s", "s", "i");
++ $res = db_prep_query($sql, $v, $t);
+ echo "layer is connected with: ".$_REQUEST["myWFS"];
+ die();
+ }
+Index: http/php/mod_gazLayerObj_edit.php
+===================================================================
+--- http/php/mod_gazLayerObj_edit.php (revision 2361)
++++ http/php/mod_gazLayerObj_edit.php (working copy)
+@@ -17,7 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <html>
+ <head>
+@@ -54,29 +54,34 @@
+ if(isset($_REQUEST["save"])){
+
+ $sql = "UPDATE gazetteer SET ";
+- $sql .= "gazetteer_abstract = '".$_REQUEST["gazetteer_abstract"]."',";
+- $sql .= "g_label = '".$_REQUEST["g_label"]."',";
+- $sql .= "g_label_id = '".$_REQUEST["g_label_id"]."',";
+- $sql .= "g_button = '".$_REQUEST["g_button"]."',";
+- $sql .= "g_button_id = '".$_REQUEST["g_button_id"]."',";
+- $sql .= "g_style = '".$_REQUEST["g_style"]."',";
+- $sql .= "g_buffer = '".$_REQUEST["g_buffer"]."'";
+- $sql .= " WHERE gazetteer_id = ".$_REQUEST["fkey_gazetteer_id"].";";
++ $sql .= "gazetteer_abstract = $1, ";
++ $sql .= "g_label = $2, ";
++ $sql .= "g_label_id = $3, ";
++ $sql .= "g_button = $4, ";
++ $sql .= "g_button_id = $5, ";
++ $sql .= "g_style = $6, ";
++ $sql .= "g_buffer = $7 ";
++ $sql .= "WHERE gazetteer_id = $8;";
+
+- $res = db_query($sql);
++ $v = array($_REQUEST["gazetteer_abstract"], $_REQUEST["g_label"], $_REQUEST["g_label_id"], $_REQUEST["g_button"], $_REQUEST["g_button_id"], $_REQUEST["g_style"], $_REQUEST["g_buffer"], $_REQUEST["fkey_gazetteer_id"]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "i");
++ $res = db_prep_query($sql, $v, $t);
+
+- for($i=0; $i<count($_REQUEST["f_id"]); $i++){
++ for ($i = 0; $i < count($_REQUEST["f_id"]); $i++){
+ $sql = "UPDATE gazetteer_element SET ";
+- $sql .= "f_search = '".$_REQUEST["f_search"][$i]."',";
+- $sql .= "f_pos = '".$_REQUEST["f_pos"][$i]."',";
+- $sql .= "f_style_id = '".$_REQUEST["f_style_id"][$i]."',";
+- $sql .= "f_label = '".$_REQUEST["f_label"][$i]."',";
+- $sql .= "f_label_id = '".$_REQUEST["f_label_id"][$i]."',";
+- $sql .= "f_show = '".$_REQUEST["f_show"][$i]."',";
+- $sql .= "f_respos = '".$_REQUEST["f_respos"][$i]."'";
+- $sql .= " WHERE fkey_gazetteer_id = ".$_REQUEST["fkey_gazetteer_id"]." AND f_id = ".$_REQUEST["f_id"][$i].";";
++ $sql .= "f_search = $1, ";
++ $sql .= "f_pos = $2, ";
++ $sql .= "f_style_id = $3, ";
++ $sql .= "f_label = $4, ";
++ $sql .= "f_label_id = $5, ";
++ $sql .= "f_show = $6, ";
++ $sql .= "f_respos = $7 ";
++ $sql .= "WHERE fkey_gazetteer_id = $8 AND f_id = $9;";
+
+- $res = db_query($sql);
++ $v = array($_REQUEST["f_search"][$i], $_REQUEST["f_pos"][$i], $_REQUEST["f_style_id"][$i], $_REQUEST["f_label"][$i], $_REQUEST["f_label_id"][$i], $_REQUEST["f_show"][$i], $_REQUEST["f_respos"][$i], $_REQUEST["fkey_gazetteer_id"], $_REQUEST["f_id"][$i]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "i", "i");
++
++ $res = db_prep_query($sql, $v, $t);
+ }
+ }
+
+@@ -92,8 +97,10 @@
+
+ /* configure elements */
+ if(isset($_REQUEST["fkey_gazetteer_id"])){
+- $sql = "SELECT * FROM gazetteer WHERE gazetteer_id = ".$_REQUEST["fkey_gazetteer_id"];
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gazetteer WHERE gazetteer_id = $1";
++ $v = array($_REQUEST["fkey_gazetteer_id"]);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ if($row = db_fetch_array($res)){
+ echo "<table>";
+ echo "<tr><td>ID:</td><td>".$row["gazetteer_id"]."</td></tr>" ;
+@@ -110,8 +117,10 @@
+ /* set element options */
+ $sql = "SELECT * FROM gazetteer_element ";
+ $sql .= "JOIN wfs_element ON gazetteer_element.f_id = wfs_element.element_id ";
+- $sql .= "WHERE fkey_gazetteer_id = ".$_REQUEST["fkey_gazetteer_id"];
+- $res = db_query($sql);
++ $sql .= "WHERE fkey_gazetteer_id = $1";
++ $v = array($_REQUEST["fkey_gazetteer_id"]);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+
+ echo "<table border='1'>";
+ echo "<tr>";
+Index: http/php/mod_getStyles.php
+===================================================================
+--- http/php/mod_getStyles.php (revision 2361)
++++ http/php/mod_getStyles.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+@@ -126,9 +124,12 @@
+ @fclose($style_xml);
+ fclose($style_file);
+ #include(dirname(__FILE__)."/../../conf/www.conf");
+- $sql = "UPDATE wms SET wms_filter = '".str_replace(basename($login),$style_filename,$login)."' WHERE wms_id = ". $wmsList;
++ $pattern = "/" . basename($login) . "/";
++ $sql = "UPDATE wms SET wms_filter = $1 WHERE wms_id = $2";
++ $v = array(preg_replace($pattern,$style_filename,$login), $wmsList);
++ $t = array("s", "i");
+ echo $sql;
+- db_query($sql) or die("unable to change filter!");
++ db_prep_query($sql, $v, $t) or die("unable to change filter!");
+ }
+ ###
+
+@@ -135,7 +136,7 @@
+ $sql = "SELECT * FROM wms ORDER BY wms_title";
+ $res = db_query($sql);
+ $cnt = 0;
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+ echo "<select class='wmsList' size='20' name='wmsList' class='wmsList' onchange='submit()'>";
+ while($row = db_fetch_array($res)){
+ # getStyle - Request:
+@@ -141,8 +142,10 @@
+ # getStyle - Request:
+ if($wmsList && $row["wms_id"] == $wmsList){
+ $getStyle = $row["wms_getmap"]."&VERSION=1.1.1&REQUEST=getStyles&SERVICE=WMS&LAYERS=";
+- $sql_style = "SELECT layer_name FROM layer WHERE fkey_wms_id = " . $wmsList;
+- $res_style = db_query($sql_style);
++ $sql_style = "SELECT layer_name FROM layer WHERE fkey_wms_id = $1";
++ $v = array($wmsList);
++ $t = array("i");
++ $res_style = db_prep_query($sql_style, $v, $t);
+
+ $cnt_style = 0;
+ while($row2 = db_fetch_array($res_style)){
+Index: http/php/mod_group_filteredGui.php
+===================================================================
+--- http/php/mod_group_filteredGui.php (revision 2361)
++++ http/php/mod_group_filteredGui.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+Index: http/php/mod_group_filteredUser.php
+===================================================================
+--- http/php/mod_group_filteredUser.php (revision 2361)
++++ http/php/mod_group_filteredUser.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_group_gui.php
+===================================================================
+--- http/php/mod_group_gui.php (revision 2361)
++++ http/php/mod_group_gui.php (working copy)
+@@ -17,13 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_group_user.php
+===================================================================
+--- http/php/mod_group_user.php (revision 2361)
++++ http/php/mod_group_user.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_gui_filteredGroup.php
+===================================================================
+--- http/php/mod_gui_filteredGroup.php (revision 2361)
++++ http/php/mod_gui_filteredGroup.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_gui_filteredUser.php
+===================================================================
+--- http/php/mod_gui_filteredUser.php (revision 2361)
++++ http/php/mod_gui_filteredUser.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_gui_group.php
+===================================================================
+--- http/php/mod_gui_group.php (revision 2361)
++++ http/php/mod_gui_group.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_gui_owner.php
+===================================================================
+--- http/php/mod_gui_owner.php (revision 2361)
++++ http/php/mod_gui_owner.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_gui_user.php
+===================================================================
+--- http/php/mod_gui_user.php (revision 2361)
++++ http/php/mod_gui_user.php (working copy)
+@@ -18,11 +18,9 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_help.php
+===================================================================
+--- http/php/mod_help.php (revision 2361)
++++ http/php/mod_help.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+ ?>
+@@ -26,7 +26,6 @@
+ <script language="JavaScript" type="text/javascript">
+ <?php
+ $e_id_css = 'help';
+-$gui_id = $_REQUEST["gui_id"];
+ include(dirname(__FILE__)."/../include/dyn_php.php");
+ if(!isset($mod_help_width)){
+ $mod_help_width = 1000;
+Index: http/php/mod_insertWmcIntoDb.php
+===================================================================
+--- http/php/mod_insertWmcIntoDb.php (revision 2361)
++++ http/php/mod_insertWmcIntoDb.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ require_once(dirname(__FILE__)."/../extensions/JSON.php");
+@@ -22,12 +22,6 @@
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ require_once(dirname(__FILE__)."/../extensions/JSON.php");
+
+-session_start();
+-
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
+-
+-
+ $json = new Services_JSON();
+ $mapObject = $json->decode($_REQUEST["mapObject"]);
+ $user_id = $_SESSION["mb_user_id"];
+Index: http/php/mod_layerMetadata.php
+===================================================================
+--- http/php/mod_layerMetadata.php (revision 2361)
++++ http/php/mod_layerMetadata.php (working copy)
+@@ -17,7 +17,8 @@
+ # 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("../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+
+Index: http/php/mod_loadCapabilities.php
+===================================================================
+--- http/php/mod_loadCapabilities.php (revision 2361)
++++ http/php/mod_loadCapabilities.php (working copy)
+@@ -17,14 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
++import_request_variables("PG");
+ include(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$secParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-$self = $PHP_SELF."?".$secParams;
+-import_request_variables("PG");
+ ?>
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -81,7 +75,7 @@
+ }
+ else{
+ var gui_id=document.form1.guiList.options[listIndex].value;
+- document.form1.action = '../php/mod_loadwms.php?<?php echo $secParams ?>';
++ document.form1.action = '../php/mod_loadwms.php?<?php echo SID; ?>';
+ document.form1.submit();
+ }
+ }
+Index: http/php/mod_loadCapabilities_temp.php
+===================================================================
+--- http/php/mod_loadCapabilities_temp.php (revision 2361)
++++ http/php/mod_loadCapabilities_temp.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+ include(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/mb_validateInput.php");
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+ import_request_variables("PG");
+ ?>
+
+@@ -85,7 +83,7 @@
+ <?php
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+
+ $gui_id = $_SESSION["mb_user_gui"];
+
+Index: http/php/mod_loadCapabilitiesList.php
+===================================================================
+--- http/php/mod_loadCapabilitiesList.php (revision 2361)
++++ http/php/mod_loadCapabilitiesList.php (working copy)
+@@ -17,13 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+-
+-include(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
++require(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ ?>
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -92,7 +87,7 @@
+ }
+ else{
+ var gui_id=document.form1.guiList.options[listIndex].value;
+- document.form1.action='../php/mod_loadwms.php';
++ document.form1.action='../php/mod_loadwms.php<?php echo SID;?>';
+ document.form1.submit();
+ }
+ }
+@@ -104,8 +99,8 @@
+ }
+ var gui_ind = document.form1.guiList.selectedIndex;
+ var ind = document.form1.wmsID.selectedIndex;
+- var ind2 = document.form1.guiID.selectedIndex;
+- var permission = confirm("Load " + document.form1.wmsID.options[ind].text + " FROM " + document.form1.guiID.options[ind2].value + " INTO "+document.form1.guiList.options[gui_ind].value+" ?");
++ var ind2 = document.form1.guiID_.selectedIndex;
++ var permission = confirm("Load " + document.form1.wmsID.options[ind].text + " FROM " + document.form1.guiID_.options[ind2].value + " INTO "+document.form1.guiList.options[gui_ind].value+" ?");
+ if(permission == true){
+ document.form1.submit();
+ }
+@@ -110,7 +105,7 @@
+ document.form1.submit();
+ }
+ else{
+- document.form1.guiID.selectedIndex = -1;
++ document.form1.guiID_.selectedIndex = -1;
+ }
+ }
+ </script>
+@@ -126,7 +121,7 @@
+
+
+ ###INSERT
+-if(isset($wmsID) && isset($guiID)){
++if(isset($wmsID) && isset($guiID_)){
+ $sql_pos = "SELECT MAX(gui_wms_position) AS my_gui_wms_position FROM gui_wms WHERE fkey_gui_id = $1";
+ $v = array($guiList);
+ $t = array('s');
+@@ -139,7 +134,7 @@
+ }
+
+ $sql = "SELECT * FROM gui_wms WHERE fkey_gui_id = $1 AND fkey_wms_id = $2";
+- $v = array($guiID,$wmsID);
++ $v = array($guiID_,$wmsID);
+ $t = array('s','i');
+ $res = db_prep_query($sql,$v,$t);
+ $cnt = 0;
+@@ -154,8 +149,10 @@
+ $cnt++;
+ }
+
+- $sql = "SELECT * FROM gui_layer WHERE fkey_gui_id = '".$guiID."' AND gui_layer_wms_id = ".$wmsID;
+- $res = db_query($sql);
++ $sql = "SELECT * FROM gui_layer WHERE fkey_gui_id = $1 AND gui_layer_wms_id = $2";
++ $v = array($guiID_, $wmsID);
++ $t = array("s", "i");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $sql_ins = "INSERT INTO gui_layer (fkey_gui_id,fkey_layer_id,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,";
+@@ -170,7 +167,7 @@
+ }
+ }
+
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+
+ echo "<table cellpadding='0' cellspacing='0' border='0'>";
+ echo "<tr>";
+@@ -180,16 +177,20 @@
+ echo"<br>";
+
+ $sql = "SELECT * FROM gui WHERE gui_id IN (";
+- for($i=0; $i<count($ownguis); $i++){
+- if($i>0){ $sql .= ",";}
+- $sql .= "'".$ownguis[$i]."'";
++ $v = $ownguis;
++ $t = array();
++ for ($i = 1; $i <= count($ownguis); $i++){
++ if ($i > 1) {
++ $sql .= ",";
++ }
++ $sql .= "$".$i;
++ array_push($t, "s");
+ }
+ $sql .= ") ORDER BY gui_name";
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+ $count=0;
+ echo"<select size='8' name='guiList' style='width:200px' onClick='submit()'>";
+ while($row = db_fetch_array($res)){
+- $gui_id[$count]=$row["gui_id"];
+ $gui_name[$count]=$row["gui_name"];
+ $gui_description[$count]=$row["gui_description"];
+ $count++;
+@@ -236,12 +237,17 @@
+ echo"<div class='text1'>Load WMS</div>";
+ $sql = "SELECT DISTINCT wms.wms_id,wms.wms_title,wms.wms_abstract,wms.wms_owner FROM gui_wms JOIN wms ON ";
+ $sql .= "wms.wms_id = gui_wms.fkey_wms_id WHERE gui_wms.fkey_gui_id IN(";
+- for($i=0; $i<count($arrayGUIs); $i++){
+- if($i>0){$sql .= ",";}
+- $sql .= "'".$arrayGUIs[$i]."'";
++ $v = $arrayGUIs;
++ $t = array();
++ for ($i = 1; $i <= count($arrayGUIs); $i++){
++ if ($i > 1) {
++ $sql .= ",";
++ }
++ $sql .= "$" . $i;
++ array_push($t, "s");
+ }
+ $sql .= ") ORDER BY wms.wms_title";
+- $res = db_query($sql);
++ $res = db_prep_query($sql, $v, $t);
+ echo "<select class='select1' name='wmsID' size='20' onchange='submit()'>";
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+@@ -263,9 +269,11 @@
+
+ if(isset($wmsID)){
+ echo "<div class='text2'>FROM:</div>";
+- $sql = "SELECT * from gui_wms WHERE fkey_wms_id ='".$wmsID."' ORDER BY fkey_gui_id";
+- $res = db_query($sql);
+- echo "<select class='select2' name='guiID' size='20' onchange='load()'>";
++ $sql = "SELECT * from gui_wms WHERE fkey_wms_id = $1 ORDER BY fkey_gui_id";
++ $v = array($wmsID);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
++ echo "<select class='select2' name='guiID_' size='20' onchange='load()'>";
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ echo "<option value='".$row["fkey_gui_id"]."' ";
+Index: http/php/mod_loadwfs.php
+===================================================================
+--- http/php/mod_loadwfs.php (revision 2361)
++++ http/php/mod_loadwfs.php (working copy)
+@@ -17,10 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-
++require(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/mb_validateInput.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../classes/class_wfs.php");
+ echo "file: ".$_REQUEST["xml_file"];
+ echo "<br>-------------------------------<br>";
+Index: http/php/mod_loadWFSCapabilities.php
+===================================================================
+--- http/php/mod_loadWFSCapabilities.php (revision 2361)
++++ http/php/mod_loadWFSCapabilities.php (working copy)
+@@ -17,15 +17,10 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++import_request_variables("PG");
++include(dirname(__FILE__)."/../php/mb_validatePermission.php");
+
+-include(dirname(__FILE__)."/../php/mb_validateSession.php");
+-include(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+-import_request_variables("PG");
+ ?>
+-
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+ <html>
+@@ -80,7 +75,7 @@
+ }
+ else{
+ var gui_id=document.form1.guiList.options[listIndex].value;
+- document.form1.action='../php/mod_loadwfs.php';
++ document.form1.action='../php/mod_loadwfs.php?<?php echo $urlParameters;?>';
+ document.form1.submit();
+ }
+ }
+@@ -95,7 +90,7 @@
+ $admin = new administration();
+ $ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+ echo count($ownguis)."<br>";
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+
+ echo "<table cellpadding='0' cellspacing='0' border='0'>";
+ echo "<tr>";
+Index: http/php/mod_loadwms.php
+===================================================================
+--- http/php/mod_loadwms.php (revision 2361)
++++ http/php/mod_loadwms.php (working copy)
+@@ -17,17 +17,12 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once("../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
+-require_once("mb_validatePermission.php");
++require_once("mb_validateSession.php");
+ require_once("../classes/class_wms.php");
+
+-
+ echo "file: ".$_REQUEST["xml_file"];
+
+-$gui_id = $_REQUEST["guiList"];
++$guiList = $_REQUEST["guiList"];
+ $xml = $_REQUEST["xml_file"];
+
+ $mywms = new wms();
+@@ -32,6 +27,6 @@
+
+ $mywms = new wms();
+ $mywms->createObjFromXML($xml);
+-$mywms->writeObjInDB($gui_id);
++$mywms->writeObjInDB($guiList);
+ $mywms->displayWMS();
+ ?>
+Index: http/php/mod_loadwms_temp.php
+===================================================================
+--- http/php/mod_loadwms_temp.php (revision 2361)
++++ http/php/mod_loadwms_temp.php (working copy)
+@@ -17,9 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/mb_validateInput.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ require_once(dirname(__FILE__)."/../classes/class_wms.php");
+
+
+Index: http/php/mod_log.php
+===================================================================
+--- http/php/mod_log.php (revision 2361)
++++ http/php/mod_log.php (working copy)
+@@ -16,7 +16,7 @@
+ # 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.
+-include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+ if($_REQUEST['req']){
+Index: http/php/mod_logout.php
+===================================================================
+--- http/php/mod_logout.php (revision 2361)
++++ http/php/mod_logout.php (working copy)
+@@ -17,9 +17,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-session_start();
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ $gui_id = $_SESSION["mb_user_gui"];
+Index: http/php/mod_map1.php
+===================================================================
+--- http/php/mod_map1.php (revision 2361)
++++ http/php/mod_map1.php (working copy)
+@@ -17,8 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ $gui_id = $_SESSION["mb_user_gui"];
+@@ -37,8 +36,10 @@
+
+ <title>mod_map1</title>
+ <?php
+-$sql = "SELECT e_width, e_height FROM gui_element WHERE e_id = 'mapframe1' AND fkey_gui_id = '".$_SESSION["mb_user_gui"]."'";
+-$res = db_query($sql);
++$sql = "SELECT e_width, e_height FROM gui_element WHERE e_id = 'mapframe1' AND fkey_gui_id = $1";
++$v = array($_SESSION["mb_user_gui"]);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_width = $row["e_width"];
+Index: http/php/mod_mapOV.php
+===================================================================
+--- http/php/mod_mapOV.php (revision 2361)
++++ http/php/mod_mapOV.php (working copy)
+@@ -17,8 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+
+@@ -45,8 +45,10 @@
+ ?>
+ <?php
+ $gui_id = $_SESSION["mb_user_gui"];
+-$sql = "SELECT e_width,e_height, e_target FROM gui_element WHERE e_id = 'overview' AND fkey_gui_id = '".$gui_id."'";
+-$res = db_query($sql);
++$sql = "SELECT e_width,e_height, e_target FROM gui_element WHERE e_id = 'overview' AND fkey_gui_id = $1";
++$v = array($gui_id);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ echo "<script type='text/javascript'>";
+ while($row = db_fetch_array($res)){
+Index: http/php/mod_meetingPoint.php
+===================================================================
+--- http/php/mod_meetingPoint.php (revision 2361)
++++ http/php/mod_meetingPoint.php (working copy)
+@@ -17,10 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-
+ require("../php/mb_validateSession.php");
+-require_once("../../conf/mapbender.conf");
+
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+@@ -297,7 +294,7 @@
+ </head>
+ <body>
+
+-<form action="" >
++<form action="<?php echo $self; ?>" >
+
+ <img id='my_getCoords' name='my_getCoords' onclick="mod_meetingPoint_run()" onmouseover ="parent.mb_regButton_frame('init_mod_meetingPoint','meetingPoint',null)" title="Treffpunkt setzen" src = '../img/button_digitize/point_off.png'>
+ <br>
+Index: http/php/mod_newGui.php
+===================================================================
+--- http/php/mod_newGui.php (revision 2361)
++++ http/php/mod_newGui.php (working copy)
+@@ -17,12 +17,10 @@
+ # 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__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+Index: http/php/mod_orphanWMS.php
+===================================================================
+--- http/php/mod_orphanWMS.php (revision 2361)
++++ http/php/mod_orphanWMS.php (working copy)
+@@ -17,13 +17,10 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_owsproxy_conf.php
+===================================================================
+--- http/php/mod_owsproxy_conf.php (revision 2361)
++++ http/php/mod_owsproxy_conf.php (working copy)
+@@ -17,8 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-include(dirname(__FILE__)."/../php/mb_validateSession.php");
+-include(dirname(__FILE__)."/../classes/class_administration.php");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ $admin = new administration();
+ $ownwms = $admin->getWmsByOwner($_SESSION["mb_user_id"]);
+ if(isset($_REQUEST["wms_id"]) && isset($_REQUEST["status"])){
+@@ -39,7 +39,7 @@
+ </style>
+ <script language="JavaScript" type="text/javascript">
+ function set(wms_id, status){
+- document.location.href = "mod_owsproxy_conf.php?wms_id="+wms_id+"&status="+status+"&<?php echo SID; ?>";
++ document.location.href = "mod_owsproxy_conf.php?<?php echo $urlParameters; ?>&wms_id="+wms_id+"&status="+status;
+ }
+ </script>
+
+Index: http/php/mod_printView1.php
+===================================================================
+--- http/php/mod_printView1.php (revision 2361)
++++ http/php/mod_printView1.php (working copy)
+@@ -17,7 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ //
+ import_request_variables("PG");
+ $_SESSION["mb_print_url"] = $map_url;
+Index: http/php/mod_renameGUI.php
+===================================================================
+--- http/php/mod_renameGUI.php (revision 2361)
++++ http/php/mod_renameGUI.php (working copy)
+@@ -17,13 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -150,7 +145,7 @@
+ }
+ </script>
+ </head>
+-<body onLoad='document.form1.newGuiName.focus()'>
++<body>
+ <?php
+
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+@@ -191,7 +186,7 @@
+ $res = db_prep_query($sql,$v,$t);
+ $count=0;
+ while($row = db_fetch_array($res)){
+- $gui_id[$count]=$row["gui_id"];
++ $gui_id_[$count]=$row["gui_id"];
+ $count++;
+ }
+ echo "<select class='guiList' size='20' name='guiList' onchange='document.form1.guiList.value = this.value;submit();'>";
+@@ -196,11 +191,11 @@
+ }
+ echo "<select class='guiList' size='20' name='guiList' onchange='document.form1.guiList.value = this.value;submit();'>";
+ for ($i=0; $i<$count;$i++){
+- echo "<option value='".$gui_id[$i]."' ";
+- if($guiList && $guiList == $gui_id[$i]){
++ echo "<option value='".$gui_id_[$i]."' ";
++ if($guiList && $guiList == $gui_id_[$i]){
+ echo "selected";
+ }
+- echo ">".$gui_id[$i]."</option>";
++ echo ">".$gui_id_[$i]."</option>";
+ }
+ echo "</select><br><br><br>";
+ }
+Index: http/php/mod_saveWKT.php
+===================================================================
+--- http/php/mod_saveWKT.php (revision 2361)
++++ http/php/mod_saveWKT.php (working copy)
+@@ -18,7 +18,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <html>
+ <head>
+@@ -92,7 +92,7 @@
+ //$sql = "SELECT f_table_name, f_geometry_column,type,srid FROM geometry_columns";
+ $res = pg_query($con,$sql);
+ $cnt = 0;
+-echo "<form action='".$PHP_SELF."' method='POST'>";
++echo "<form action='".$self."' method='POST'>";
+ #echo "Selektieren: <input name='actionType' type='radio' value='select'>";
+ #echo "Speichern: <input name='actionType' type='radio' value='create'><br>";
+ echo "<select name='tablenames' onchange='submit()'>";
+Index: http/php/mod_SelectKeyword.php
+===================================================================
+--- http/php/mod_SelectKeyword.php (revision 2361)
++++ http/php/mod_SelectKeyword.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+
+Index: http/php/mod_showLoggedUser.php
+===================================================================
+--- http/php/mod_showLoggedUser.php (revision 2361)
++++ http/php/mod_showLoggedUser.php (working copy)
+@@ -17,12 +17,10 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ $gui_id = $_SESSION["mb_user_gui"];
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+Index: http/php/mod_simpleWMSpreferences.php
+===================================================================
+--- http/php/mod_simpleWMSpreferences.php (revision 2361)
++++ http/php/mod_simpleWMSpreferences.php (working copy)
+@@ -17,8 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+@@ -76,8 +75,10 @@
+ <?php
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-$sql = "SELECT * FROM gui_element WHERE e_id = 'WMS_preferences' AND fkey_gui_id = '".$_SESSION["mb_user_gui"]."'";
+-$res = db_query($sql);
++$sql = "SELECT * FROM gui_element WHERE e_id = 'WMS_preferences' AND fkey_gui_id = $1";
++$v = array($_SESSION["mb_user_gui"]);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ $e_target = $row["e_target"];
+Index: http/php/mod_treefolderAdmin.php
+===================================================================
+--- http/php/mod_treefolderAdmin.php (revision 2361)
++++ http/php/mod_treefolderAdmin.php (working copy)
+@@ -20,7 +20,8 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ ?>
+@@ -434,21 +435,28 @@
+ // this is a multinary tree structure which is easy to
+ // populate with database data :)
+ <?php
+-$sql = "SELECT id FROM gui_treegde WHERE fkey_gui_id = '".$guiList."'";
+-$res = db_query($sql);
++$sql = "SELECT id FROM gui_treegde WHERE fkey_gui_id = $1";
++// $v and $t will be re-used below!
++$v = array($guiList);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ if(!db_fetch_row($res)){
+- $sql = "INSERT INTO gui_treegde(fkey_gui_id, my_layer_title,lft,rgt,layer) VALUES('".$guiList."', 'new','1','4','')";
+- db_query($sql);
+- $sql = "INSERT INTO gui_treegde(fkey_gui_id,my_layer_title,lft,rgt,layer) VALUES('".$guiList."','new','2','3','')";
+- db_query($sql);
++ $sql = "INSERT INTO gui_treegde(fkey_gui_id, my_layer_title,lft,rgt,layer) VALUES($1, 'new','1','4','')";
++ //using $v and $t fom above
++ db_prep_query($sql, $v, $t);
++ $sql = "INSERT INTO gui_treegde(fkey_gui_id,my_layer_title,lft,rgt,layer) VALUES($1,'new','2','3','')";
++ //using $v and $t fom above
++ db_prep_query($sql, $v, $t);
+ }
+-
++
+ $sql = "SELECT n.wms_id, n.id, n.my_layer_title, n.lft, n.rgt, n.layer, COUNT(*) AS level1, ((n.rgt - n.lft -1)/2) AS offspring ";
+ $sql .= "FROM gui_treegde as n, gui_treegde as p WHERE n.lft BETWEEN p.lft AND p.rgt ";
+-$sql .= " AND n.fkey_gui_id = '".$guiList."' AND p.fkey_gui_id = '".$guiList."' ";
++$sql .= " AND n.fkey_gui_id = $1 AND p.fkey_gui_id = $2 ";
+ $sql .= " GROUP BY n.wms_id, n.lft, n.my_layer_title, ((n.rgt - n.lft -1)/2) , n.id, n.rgt, n.layer ORDER BY n.lft;";
+ #echo $sql;
+-$res = db_query($sql);
++$v = array($guiList, $guiList);
++$t = array("s", "s");
++$res = db_prep_query($sql, $v, $t);
+ echo "function initArray(){";
+ echo "Note(0,-1,'','');";
+ $cnt = 0;
+Index: http/php/mod_treefolderClient.php
+===================================================================
+--- http/php/mod_treefolderClient.php (revision 2361)
++++ http/php/mod_treefolderClient.php (working copy)
+@@ -17,10 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++import_request_variables("PG");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
+-import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+ $guiList = $_SESSION["mb_user_gui"];
+@@ -78,8 +77,10 @@
+ // -->
+ </STYLE>
+ <?php
+-$sql = "SELECT e_target FROM gui_element WHERE e_id = 'treeConfGDE' AND fkey_gui_id = '".$guiList."'";
+-$res = db_query($sql);
++$sql = "SELECT e_target FROM gui_element WHERE e_id = 'treeConfGDE' AND fkey_gui_id = $1";
++$v = array($guiList);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while(db_fetch_row($res)){
+ $e_target = db_result($res,0,"e_target");
+@@ -548,13 +549,18 @@
+ // this is a multinary tree structure which is easy to
+ // populate with database data :)
+ <?php
+-$sql = "SELECT id FROM gui_treegde WHERE fkey_gui_id = '".$guiList."'";
+-$res = db_query($sql);
++$sql = "SELECT id FROM gui_treegde WHERE fkey_gui_id = $1";
++// $v and $t will be re-used below!
++$v = array($guiList);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ if(!db_fetch_row($res)){
+- $sql = "INSERT INTO gui_treegde(fkey_gui_id, my_layer_title,lft,rgt,layer) VALUES('".$guiList."', 'new','1','4','')";
+- db_query($sql);
+- $sql = "INSERT INTO gui_treegde(fkey_gui_id,my_layer_title,lft,rgt,layer) VALUES('".$guiList."','new','2','3','')";
+- db_query($sql);
++ $sql = "INSERT INTO gui_treegde(fkey_gui_id, my_layer_title,lft,rgt,layer) VALUES($1, 'new','1','4','')";
++ //using $v and $t fom above
++ db_prep_query($sql, $v, $t);
++ $sql = "INSERT INTO gui_treegde(fkey_gui_id,my_layer_title,lft,rgt,layer) VALUES($1,'new','2','3','')";
++ //using $v and $t fom above
++ db_prep_query($sql, $v, $t);
+ }
+
+ $sql = "SELECT n.wms_id, n.id, n.my_layer_title, n.lft, n.rgt, n.layer, COUNT(*) AS level1, ((n.rgt - n.lft -1)/2) AS offspring ";
+@@ -559,10 +565,11 @@
+
+ $sql = "SELECT n.wms_id, n.id, n.my_layer_title, n.lft, n.rgt, n.layer, COUNT(*) AS level1, ((n.rgt - n.lft -1)/2) AS offspring ";
+ $sql .= "FROM gui_treegde as n, gui_treegde as p WHERE n.lft BETWEEN p.lft AND p.rgt ";
+-$sql .= " AND n.fkey_gui_id = '".$guiList."' AND p.fkey_gui_id = '".$guiList."' ";
++$sql .= " AND n.fkey_gui_id = $1 AND p.fkey_gui_id = $2 ";
+ $sql .= " GROUP BY n.wms_id, n.lft, n.my_layer_title, ((n.rgt - n.lft -1)/2) , n.id, n.rgt, n.layer ORDER BY n.lft";
+-
+-$res = db_query($sql);
++$v = array($guiList, $guiList);
++$t = array("s", "s");
++$res = db_prep_query($sql, $v, $t);
+ echo "function initArray(){";
+ echo "Note(0,-1,'','');";
+ $cnt = 0;
+Index: http/php/mod_updateWMS.php
+===================================================================
+--- http/php/mod_updateWMS.php (revision 2361)
++++ http/php/mod_updateWMS.php (working copy)
+@@ -17,14 +17,13 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-$con = db_connect(DBSERVER,OWNER,PW);
+ require_once(dirname(__FILE__)."/mb_validatePermission.php");
+ require_once(dirname(__FILE__)."/../classes/class_wms.php");
++
++$con = db_connect(DBSERVER,OWNER,PW);
++
+ import_request_variables("PG");
+ $secParams = SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-$self = $PHP_SELF."?".$secParams;
+ ?>
+ <html>
+ <head>
+@@ -56,7 +55,7 @@
+ </script>
+ </head>
+ <body>
+-<form name='form1' action='<?php $self ?>' method='POST'>
++<form name='form1' action='<?php echo $self ?>' method='POST'>
+ <?php
+
+
+@@ -63,11 +62,9 @@
+
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+ $admin = new administration();
+-$ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+-$permguis = $admin->getGuisByPermission($_SESSION["mb_user_id"],true);
+-$wms_id_own = $admin->getWmsByOwnGuis($ownguis);
++$wms_id_own = $admin->getWmsByWmsOwner($_SESSION["mb_user_id"]);
+
+-if (count($wms_id_own)>0 AND count($ownguis)>0 AND count($permguis)>0){
++if (count($wms_id_own)>0){
+ $v = array();
+ $t = array();
+ $c = 1;
+Index: http/php/mod_usemap.php
+===================================================================
+--- http/php/mod_usemap.php (revision 2361)
++++ http/php/mod_usemap.php (working copy)
+@@ -19,7 +19,8 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+ ?>
+ <title>image map generator</title>
+Index: http/php/mod_user_filteredGroup.php
+===================================================================
+--- http/php/mod_user_filteredGroup.php (revision 2361)
++++ http/php/mod_user_filteredGroup.php (working copy)
+@@ -18,11 +18,10 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+Index: http/php/mod_user_filteredGui.php
+===================================================================
+--- http/php/mod_user_filteredGui.php (revision 2361)
++++ http/php/mod_user_filteredGui.php (working copy)
+@@ -18,16 +18,13 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-session_start();
++require_once(dirname(__FILE__)."/mb_validatePermission.php");
++require_once(dirname(__FILE__)."/../classes/class_wms.php");
++
+ $gui_id = $_SESSION["mb_user_gui"];
+
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/mb_validatePermission.php");
+-require_once(dirname(__FILE__)."/../classes/class_wms.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+-
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+Index: http/php/mod_user_group.php
+===================================================================
+--- http/php/mod_user_group.php (revision 2361)
++++ http/php/mod_user_group.php (working copy)
+@@ -18,11 +18,10 @@
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+Index: http/php/mod_user_gui.php
+===================================================================
+--- http/php/mod_user_gui.php (revision 2361)
++++ http/php/mod_user_gui.php (working copy)
+@@ -17,15 +17,14 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ import_request_variables("PG");
+-session_start();
++
++require_once(dirname(__FILE__)."/mb_validatePermission.php");
++require_once(dirname(__FILE__)."/../classes/class_wms.php");
++
+ $gui_id = $_SESSION["mb_user_gui"];
+
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+-require_once(dirname(__FILE__)."/mb_validatePermission.php");
+-require_once(dirname(__FILE__)."/../classes/class_wms.php");
+-$self = $PHP_SELF . "?".SID."&guiID=".$_REQUEST["guiID"]."&elementID=".$_REQUEST["elementID"];
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+Index: http/php/mod_wfs.php
+===================================================================
+--- http/php/mod_wfs.php (revision 2361)
++++ http/php/mod_wfs.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+Index: http/php/mod_wfs_conf.php
+===================================================================
+--- http/php/mod_wfs_conf.php (revision 2361)
++++ http/php/mod_wfs_conf.php (working copy)
+@@ -17,8 +17,9 @@
+ # 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__)."/../php/mb_validateSession.php");
+ require(dirname(__FILE__)."/../classes/class_wfs_conf.php");
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect(DBSERVER,OWNER,PW);
+ db_select_db(DB,$con);
+ ?>
+@@ -66,9 +67,9 @@
+ <br>
+ <b>WFS Configuration</b>
+ <br>
+-<form method='POST' onsubmit='return validate()'>
++<form method='POST' action='<?php echo $self;?>'onsubmit='return validate()'>
+ <br>
+-<a href="mod_wfs_edit.php">edit WFS Configuration</a><br><br>
++<a href="mod_wfs_edit.php?<?php echo $urlParameters;?>">edit WFS Configuration</a><br><br>
+ Select WFS:
+ <?php
+ $aWFS = new wfs_conf();
+@@ -89,62 +90,75 @@
+
+ db_select_db($DB,$con);
+
+- $sql = "INSERT INTO wfs_conf (wfs_conf_abstract,fkey_wfs_id,fkey_featuretype_id,g_label,g_label_id,g_button,g_button_id,g_style,g_buffer,g_res_style,g_use_wzgraphics) VALUES(";
+- $sql .= "'".$_REQUEST["wfs_conf_abstract"]."',";
+- $sql .= "'".$_REQUEST["wfs"]."',";
+- $sql .= "'".$_REQUEST["featuretype"]."',";
+- $sql .= "'".$_REQUEST["g_label"]."',";
+- $sql .= "'".$_REQUEST["g_label_id"]."',";
+- $sql .= "'".$_REQUEST["g_button"]."',";
+- $sql .= "'".$_REQUEST["g_button_id"]."',";
+- $sql .= "'".$_REQUEST["g_style"]."',";
+- $sql .= "'".$_REQUEST["g_buffer"]."',";
+- $sql .= "'".$_REQUEST["g_res_style"]."',";
+- if(!empty($_REQUEST["g_use_wzgraphics"])){
++ $sql = "INSERT INTO wfs_conf (";
++ $sql .= "wfs_conf_abstract, fkey_wfs_id, ";
++ $sql .= "fkey_featuretype_id, g_label, g_label_id, g_button, ";
++ $sql .= "g_button_id, g_style, g_buffer, g_res_style, g_use_wzgraphics";
++ $sql .= ") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, ";
++ if (!empty($_REQUEST["g_use_wzgraphics"])) {
+ $sql .= "'1'";
+- }else{$sql .= "'0'";}
++ }
++ else {
++ $sql .= "'0'";
++ }
+ $sql .= "); ";
++
++ $v = array($_REQUEST["wfs_conf_abstract"], $_REQUEST["wfs"], $_REQUEST["featuretype"], $_REQUEST["g_label"], $_REQUEST["g_label_id"], $_REQUEST["g_button"], $_REQUEST["g_button_id"], $_REQUEST["g_style"], $_REQUEST["g_buffer"], $_REQUEST["g_res_style"]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "s", "s", "s");
++ $res = db_prep_query($sql, $v, $t);
++
++ $wfsID = db_insert_id($con,'wfs_conf','wfs_conf_id');
+
+- $res = db_query($sql);
+- $wfsID = db_insert_id($con,'wfs_conf','wfs_conf_id');
+- for($i=0; $i<$_REQUEST["num"]; $i++){
+- $sql = "INSERT INTO wfs_conf_element (fkey_wfs_conf_id,f_id,f_search,f_pos,f_style_id,f_toupper,f_label,f_label_id,f_show,f_respos,f_edit,f_form_element_html,f_mandatory) VALUES(";
+- $sql .= "'".$wfsID."',";
+- $sql .= "'".$_REQUEST["f_id".$i]."',";
+- if(!empty($_REQUEST["f_search".$i])){
+- $sql .= "'1',";
+- }else{$sql .= "'0',";}
+- $sql .= "'".$_REQUEST["f_pos".$i]."',";
+- $sql .= "'".$_REQUEST["f_style_id".$i]."',";
+- if(!empty($_REQUEST["f_toupper".$i])){
+- $sql .= "'1',";
+- }else{$sql .= "'0',";}
+- $sql .= "'".$_REQUEST["f_label".$i]."',";
+- $sql .= "'".$_REQUEST["f_label_id".$i]."',";
+- if(!empty($_REQUEST["f_show".$i])){
+- $sql .= "'1',";
+- }else{$sql .= "'0',";}
+- $sql .= "'".$_REQUEST["f_respos".$i]."'";
+- $sql .= ",";
+- if(!empty($_REQUEST["f_edit".$i])){
+- $sql .= "'1',";
+- }else{$sql .= "'0',";}
+- $sql .= "'".$_REQUEST["f_form_element_html".$i]."',";
+- if(!empty($_REQUEST["f_mandatory".$i])){
++ for ($i = 0; $i < $_REQUEST["num"]; $i++){
++ $sql = "INSERT INTO wfs_conf_element (fkey_wfs_conf_id,f_id,f_search,f_pos,f_style_id,f_toupper,f_label,f_label_id,f_show,f_respos,f_edit,f_form_element_html,f_mandatory,f_auth_varname) VALUES(";
++ $sql .= "$1, $2, ";
++ if (!empty($_REQUEST["f_search".$i])) {
++ $sql .= "'1'";
++ }
++ else {
++ $sql .= "'0'";
++ }
++ $sql .= ", $3, $4, ";
++ if (!empty($_REQUEST["f_toupper".$i])) {
++ $sql .= "'1'";
++ }
++ else {
++ $sql .= "'0'";
++ }
++ $sql .= ",$5, $6, ";
++ if (!empty($_REQUEST["f_show".$i])) {
++ $sql .= "'1'";
++ }
++ else {
++ $sql .= "'0'";
++ }
++ $sql .= ", $7, ";
++ if (!empty($_REQUEST["f_edit".$i])) {
++ $sql .= "'1'";
++ }
++ else {
++ $sql .= "'0'";
++ }
++ $sql .= ",$8, ";
++ if (!empty($_REQUEST["f_mandatory".$i])) {
+ $sql .= "'1'";
+- }else{$sql .= "'0'";}
+-// $sql .= ", ";
+-// $sql .= "'".addslashes($_REQUEST["f_auth_varname".$i]);
+-// $sql .= "'";
+- $sql .= "); ";
++ }
++ else {
++ $sql .= "'0'";
++ }
++ $sql .= ",$9";
++ $sql .= "); ";
+
+- $res = db_query($sql);
++ $v = array($wfsID, $_REQUEST["f_id".$i], $_REQUEST["f_pos".$i], $_REQUEST["f_style_id".$i], $_REQUEST["f_label".$i], $_REQUEST["f_label_id".$i], $_REQUEST["f_respos".$i], $_REQUEST["f_form_element_html".$i], $_REQUEST["f_auth_varname".$i]);
++ $t = array("i", "s", "s", "s", "s", "s", "i", "s", "s");
++ $res = db_prep_query($sql, $v, $t);
+ }
+ if (isset($_REQUEST["f_geom"])) {
+- $sql = "UPDATE wfs_conf_element SET ";
+- $sql .= "f_geom = 1";
+- $sql .= " WHERE fkey_wfs_conf_id = ".$wfsID." AND f_id = ".$_REQUEST["f_geom"].";";
+- $res = db_query($sql);
++ $sql = "UPDATE wfs_conf_element SET f_geom = 1 ";
++ $sql .= "WHERE fkey_wfs_conf_id = $1 AND f_id = $2;";
++ $v = array($wfsID, $_REQUEST["f_geom"]);
++ $t = array("i", "i");
++ $res = db_prep_query($sql, $v, $t);
+ }
+
+ echo "<script language='javascript'>";
+@@ -271,8 +285,7 @@
+ echo "<td><input name='f_respos".$i."' type='text' size='1' value='0'></td>";
+ echo "<td><input name='f_mandatory".$i."' type='checkbox'></td>";
+ echo "<td><input name='f_edit".$i."' type='checkbox'></td>";
+- echo "<td><textarea name='f_form_element_html".$cnt."' cols='15' rows='1' ></textarea></td>";
+-// echo "<td><input name='f_auth_varname".$cnt."' type='text' size='8' value='".$row["f_auth_varname"]."'></td>";
++ echo "<td><textarea name='f_form_element_html".$i."' cols='15' rows='1' ></textarea></td>";
+ echo "</tr>";
+ }
+ echo "</table>";
+Index: http/php/mod_wfs_edit.php
+===================================================================
+--- http/php/mod_wfs_edit.php (revision 2361)
++++ http/php/mod_wfs_edit.php (working copy)
+@@ -17,7 +17,7 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ?>
+ <html>
+ <head>
+@@ -47,13 +47,11 @@
+ <br>
+ <b>WFS Configuration</b>
+ <br><br>
+-<form name='form1' method='POST' onsubmit='return validate()'>
+-<a href="mod_wfs_conf.php">new Configuration</a><br><br>
++<form name='form1' action='<?php echo $self;?>' method='POST' onsubmit='return validate()'>
++<a href="mod_wfs_conf.php?<?php echo $urlParameters;?>">new Configuration</a><br><br>
+ Select WFS Configuration:<br><br>
+ <?php
+ /* save wfs_conf properties */
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db($DB,$con);
+
+ if(isset($_REQUEST["save"])){
+
+@@ -58,38 +56,40 @@
+ if(isset($_REQUEST["save"])){
+
+ $sql = "UPDATE wfs_conf SET ";
+- $sql .= "wfs_conf_abstract = '".$_REQUEST["wfs_conf_abstract"]."',";
+- $sql .= "g_label = '".$_REQUEST["g_label"]."',";
+- $sql .= "g_label_id = '".$_REQUEST["g_label_id"]."',";
+- $sql .= "g_button = '".$_REQUEST["g_button"]."',";
+- $sql .= "g_button_id = '".$_REQUEST["g_button_id"]."',";
+- $sql .= "g_style = '".$_REQUEST["g_style"]."',";
+- $sql .= "g_buffer = '".$_REQUEST["g_buffer"]."',";
+- $sql .= "g_res_style = '".$_REQUEST["g_res_style"]."',";
+- $sql .= "g_use_wzgraphics = ";
+- if(!empty($_REQUEST["g_use_wzgraphics"])){
+- $sql .= '1';
+- }else{$sql .= '0';}
+- $sql .= " WHERE wfs_conf_id = ".$_REQUEST["gaz"].";";
++ $sql .= "wfs_conf_abstract = $1, g_label = $2, ";
++ $sql .= "g_label_id = $3, g_button = $4, g_button_id = $5, g_style = $6, ";
++ $sql .= "g_buffer = $7, g_res_style = $8, g_use_wzgraphics = ";
++ if (!empty($_REQUEST["g_use_wzgraphics"])) {
++ $sql .= "1";
++ }
++ else {
++ $sql .= "0";
++ }
++ $sql .= " WHERE wfs_conf_id = $9;";
+
+- $res = db_query($sql);
++ $v = array($_REQUEST["wfs_conf_abstract"], $_REQUEST["g_label"], $_REQUEST["g_label_id"], $_REQUEST["g_button"], $_REQUEST["g_button_id"], $_REQUEST["g_style"], $_REQUEST["g_buffer"], $_REQUEST["g_res_style"], $_REQUEST["gaz"]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "i", "s");
++ $res = db_prep_query($sql, $v, $t);
+
+ if (isset($_REQUEST["f_geom"])) {
+- $sql = "UPDATE wfs_conf_element SET ";
+- $sql .= "f_geom = 1";
+- $sql .= " WHERE fkey_wfs_conf_id = ".$_REQUEST["gaz"]." AND f_id = ".$_REQUEST["f_geom"].";";
+- $res = db_query($sql);
++ $sql = "UPDATE wfs_conf_element SET f_geom = 1 ";
++ $sql .= "WHERE fkey_wfs_conf_id = $1 AND f_id = $2;";
++ $v = array($_REQUEST["gaz"], $_REQUEST["f_geom"]);
++ $t = array("i", "s");
++ $res = db_prep_query($sql, $v, $t);
+
+- $sql = "UPDATE wfs_conf_element SET ";
+- $sql .= "f_geom = 0";
+- $sql .= " WHERE fkey_wfs_conf_id = ".$_REQUEST["gaz"]." AND f_id <> ".$_REQUEST["f_geom"].";";
+- $res = db_query($sql);
++ $sql = "UPDATE wfs_conf_element SET f_geom = 0 ";
++ $sql .= "WHERE fkey_wfs_conf_id = $1 AND f_id <> $2;";
++ $v = array($_REQUEST["gaz"], $_REQUEST["f_geom"]);
++ $t = array("i", "s");
++ $res = db_prep_query($sql, $v, $t);
+ }
+ else {
+- $sql = "UPDATE wfs_conf_element SET ";
+- $sql .= "f_geom = 0";
+- $sql .= " WHERE fkey_wfs_conf_id = ".$_REQUEST["gaz"].";";
+- $res = db_query($sql);
++ $sql = "UPDATE wfs_conf_element SET f_geom = 0 ";
++ $sql .= "WHERE fkey_wfs_conf_id = $1;";
++ $v = array($_REQUEST["gaz"]);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ }
+
+ for($i=0; $i<$_REQUEST["num"]; $i++){
+@@ -94,42 +94,51 @@
+
+ for($i=0; $i<$_REQUEST["num"]; $i++){
+
+- $sql = "UPDATE wfs_conf_element SET ";
+- $sql .= "f_search = '";
+- if(!empty($_REQUEST["f_search".$i])){
+- $sql .= '1';
+- }else{$sql .= '0';}
+- $sql .= "',";
+- $sql .= "f_pos = '".$_REQUEST["f_pos".$i]."',";
+- $sql .= "f_style_id = '".$_REQUEST["f_style_id".$i]."',";
++ $sql = "UPDATE wfs_conf_element SET f_search = '";
++ if (!empty($_REQUEST["f_search".$i])) {
++ $sql .= "1";
++ }
++ else {
++ $sql .= "0";
++ }
++ $sql .= "', f_pos = $1, f_style_id = $2,";
+ $sql .= "f_toupper = '" ;
+- if(!empty($_REQUEST["f_toupper".$i])){
+- $sql .= '1';
+- }else{$sql .= '0';}
+- $sql .= "',";
+- $sql .= "f_label = '".$_REQUEST["f_label".$i]."',";
+- $sql .= "f_label_id = '".$_REQUEST["f_label_id".$i]."',";
++ if (!empty($_REQUEST["f_toupper".$i])) {
++ $sql .= "1";
++ }
++ else {
++ $sql .= "0";
++ }
++ $sql .= "',f_label = $3, f_label_id = $4,";
+ $sql .= "f_show = '";
+- if(!empty($_REQUEST["f_show".$i])){
+- $sql .= '1';
+- }else{$sql .= '0';}
+- $sql .= "',";
+- $sql .= "f_respos = '".$_REQUEST["f_respos".$i]."' ";
+- $sql .= ",";
++ if (!empty($_REQUEST["f_show".$i])) {
++ $sql .= "1";
++ }
++ else {
++ $sql .= "0";
++ }
++ $sql .= "',f_respos = $5,";
+ $sql .= "f_edit = '";
+- if(!empty($_REQUEST["f_edit".$i])){
+- $sql .= '1';
+- }else{$sql .= '0';}
+- $sql .= "',";
+- $sql .= "f_form_element_html = '".addslashes($_REQUEST["f_form_element_html".$i]);
+- $sql .= "',";
++ if (!empty($_REQUEST["f_edit".$i])) {
++ $sql .= "1";
++ }
++ else {
++ $sql .= "0";
++ }
++ $sql .= "', f_form_element_html = $6,";
+ $sql .= "f_mandatory = '";
+- if(!empty($_REQUEST["f_mandatory".$i])){
++ if (!empty($_REQUEST["f_mandatory".$i])) {
+ $sql .= "1";
+- }else{$sql .= "0";}
+- $sql .= "'";
+- $sql .= " WHERE fkey_wfs_conf_id = ".$_REQUEST["gaz"]." AND f_id = ".$_REQUEST["f_id".$i].";";
+- $res = db_query($sql);
++ }
++ else {
++ $sql .= "0";
++ }
++ $sql .= "', f_auth_varname = $7";
++ $sql .= " WHERE fkey_wfs_conf_id = $8 AND f_id = $9;";
++
++ $v = array($_REQUEST["f_pos".$i], $_REQUEST["f_style_id".$i], $_REQUEST["f_label".$i], $_REQUEST["f_label_id".$i], $_REQUEST["f_respos".$i], addslashes($_REQUEST["f_form_element_html".$i]), $_REQUEST["f_auth_varname".$i], $_REQUEST["gaz"], $_REQUEST["f_id".$i]);
++ $t = array("s", "s", "s", "s", "s", "s", "s", "i", "s");
++ $res = db_prep_query($sql, $v, $t);
+ }
+ }
+
+@@ -164,9 +173,11 @@
+ }
+
+ /* configure elements */
+-if(isset($_REQUEST["gaz"])){
+- $sql = "SELECT * FROM wfs_conf WHERE wfs_conf_id = ".$_REQUEST["gaz"];
+- $res = db_query($sql);
++if (isset($_REQUEST["gaz"])) {
++ $sql = "SELECT * FROM wfs_conf WHERE wfs_conf_id = $1";
++ $v = array($_REQUEST["gaz"]);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+ if($row = db_fetch_array($res)){
+ echo "<table>";
+ echo "<tr><td>GazetterID:</td><td>".$row["wfs_conf_id"]."</td></tr>" ;
+@@ -187,9 +198,10 @@
+ /* set element options */
+ $sql = "SELECT * FROM wfs_conf_element ";
+ $sql .= "JOIN wfs_element ON wfs_conf_element.f_id = wfs_element.element_id ";
+- $sql .= "WHERE fkey_wfs_conf_id = ".$_REQUEST["gaz"]." ORDER BY f_id";
+-
+- $res = db_query($sql);
++ $sql .= "WHERE fkey_wfs_conf_id = $1 ORDER BY f_id";
++ $v = array($_REQUEST["gaz"]);
++ $t = array("i");
++ $res = db_prep_query($sql, $v, $t);
+
+ echo "<table border='1'>";
+ echo "<tr valign = bottom>";
+Index: http/php/mod_wfs_gazetteer_server.php
+===================================================================
+--- http/php/mod_wfs_gazetteer_server.php (revision 2361)
++++ http/php/mod_wfs_gazetteer_server.php (working copy)
+@@ -17,14 +17,11 @@
+ # 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__)."/../../conf/mapbender.conf");
+-include(dirname(__FILE__)."/../classes/class_gml2.php");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../classes/class_gml2.php");
+ require_once(dirname(__FILE__)."/../extensions/JSON.php");
+ require_once(dirname(__FILE__)."/../classes/class_administration.php");
+
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db($DB,$con);
+-
+ $command = $_REQUEST["command"];
+
+ function checkAccessConstraint($filter, $wfs_conf_id) {
+Index: http/php/mod_wfs_result.php
+===================================================================
+--- http/php/mod_wfs_result.php (revision 2361)
++++ http/php/mod_wfs_result.php (working copy)
+@@ -17,13 +17,18 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-$filter = stripslashes($_REQUEST["filter"]);
+-$url = stripslashes($_REQUEST['url']);
+-//echo $filter; die();
+-require_once("../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once("../classes/class_stripRequest.php");
+ require_once("../classes/class_connector.php");
+
++$filter = stripslashes($_REQUEST["filter"]);
++$url = stripslashes($_REQUEST["url"]);
++$js_wfs_conf_id = $_REQUEST["js_wfs_conf_id"];
++$db_wfs_conf_id = $_REQUEST["db_wfs_conf_id"];
++$typename = $_REQUEST["typename"];
++
++//echo $filter; die();
++
+ function sepNameSpace($s){
+ $c = strpos($s,":");
+ if ($c > 0){
+@@ -60,7 +65,6 @@
+ $el = -1;
+ $fid = -1;
+
+-$typename = $_REQUEST["typename"];
+ $element_str = "";
+ $geom_str = "";
+ foreach ($values as $element) {
+@@ -106,7 +110,7 @@
+ }
+ // TO DO: the following is added twice! Once suffices.
+ $element_str .= "geom.get(" . $member . ").e.setElement('fid', '".$fid."');\n";
+- $element_str .= "geom.get(" . $member . ").wfs_conf = ".$_REQUEST['wfs_conf_id'].";\n";
++ $element_str .= "geom.get(" . $member . ").wfs_conf = ".$js_wfs_conf_id.";\n";
+ }
+ else if(strtoupper($element[tag]) == strtoupper("gml:coordinates") && $geom == true){
+ $tmp = str_replace(",,","",str_replace(" ",",",trim($element[value])));
+Index: http/php/mod_wfs_save.php
+===================================================================
+--- http/php/mod_wfs_save.php (revision 2361)
++++ http/php/mod_wfs_save.php (working copy)
+@@ -19,7 +19,9 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
++
+ echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
+ ?>
+ <title>WFS Save</title>
+@@ -145,7 +147,7 @@
+ <div id='a' name='a'></div>
+ </form>
+
+-<form action='../extensions/geom2wfst.php' method='POST'>
++<form action='../extensions/geom2wfst.php<?php echo $urlParameters;?>' method='POST'>
+ <input type='text' name='url'>
+ <input type='text' name='filter'>
+ </form>
+Index: http/php/mod_wfsLayerObj_conf.php
+===================================================================
+--- http/php/mod_wfsLayerObj_conf.php (revision 2361)
++++ http/php/mod_wfsLayerObj_conf.php (working copy)
+@@ -17,8 +17,9 @@
+ # 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__)."/../php/mb_validateSession.php");
+ require(dirname(__FILE__)."/../classes/class_wfs_conf.php");
+-require(dirname(__FILE__)."/../../conf/mapbender.conf");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
+ ?>
+Index: http/php/mod_wfsrequest.php
+===================================================================
+--- http/php/mod_wfsrequest.php (revision 2361)
++++ http/php/mod_wfsrequest.php (working copy)
+@@ -17,9 +17,11 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db($DB,$con);
++
+ if(isset($_REQUEST["backlink"]) && $_REQUEST["backlink"] == 'parent'){
+ $p = 'parent';
+ }else{
+@@ -32,8 +34,8 @@
+ $sql .= "WHERE wfs_conf.wfs_conf_id = $1";
+
+ $v = array($_REQUEST['wfs_conf_id']);
+-$t = array('i');
+-$res = db_prep_query($sql,$v,$t);
++$t = array("i");
++$res = db_prep_query($sql, $v, $t);
+ if($row = db_fetch_array($res)){
+ $g_res_style = $row["g_res_style"];
+
+@@ -45,8 +47,8 @@
+ $sql .= "WHERE wfs_conf_element.fkey_wfs_conf_id = $1 ";
+ $sql .= "AND wfs_conf_element.f_show = 1 ORDER BY wfs_conf_element.f_respos;";
+ $v = array($_REQUEST['wfs_conf_id']);
+-$t = array('i');
+-$res = db_prep_query($sql,$v,$t);
++$t = array("i");
++$res = db_prep_query($sql, $v, $t);
+ $col = array();
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+Index: http/php/mod_WMSpreferences.php
+===================================================================
+--- http/php/mod_WMSpreferences.php (revision 2361)
++++ http/php/mod_WMSpreferences.php (working copy)
+@@ -17,10 +17,10 @@
+ # 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__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
++
+ $con = db_connect($DBSERVER,$OWNER,$PW);
+ db_select_db(DB,$con);
+-session_start();
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+@@ -62,8 +62,10 @@
+ </STYLE>
+ <?php
+
+-$sql = "SELECT * FROM gui_element WHERE e_id = 'WMS_preferences' AND fkey_gui_id = '".$_SESSION["mb_user_gui"]."'";
+-$res = db_query($sql);
++$sql = "SELECT * FROM gui_element WHERE e_id = 'WMS_preferences' AND fkey_gui_id = $1";
++$v = array($_SESSION["mb_user_gui"]);
++$t = array("s");
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ $vis = "";
+ $wmsid = "";
+@@ -79,8 +81,10 @@
+ echo "var mod_WMSpreferences_target2 = '".trim($target[1])."';";
+ echo "</script>";
+
+-$sql_visible = "SELECT * FROM gui_wms WHERE fkey_gui_id = '".$_SESSION["mb_user_gui"]."'";
+-$res_visible = db_query($sql_visible);
++$sql_visible = "SELECT * FROM gui_wms WHERE fkey_gui_id = $1";
++$v = array($_SESSION["mb_user_gui"]);
++$t = array("s");
++$res_visible = db_prep_query($sql_visible, $v, $t);
+ $cnt_visible = 0;
+
+ while($row = db_fetch_array($res_visible)){
+Index: http/php/mod_zoomCoords.php
+===================================================================
+--- http/php/mod_zoomCoords.php (revision 2361)
++++ http/php/mod_zoomCoords.php (working copy)
+@@ -17,11 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ import_request_variables("PG");
+
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -148,7 +146,7 @@
+
+ <?php
+ # needs intl'!
+- echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++ echo "<form name='form1' action='" . $self ."' method='post'>";
+ echo "<span class='labelx'>Länge:</span>";
+ echo "<span class='labely'>Breite:</span>";
+ echo "<input class='textx' type='text' name='X'>";
+Index: http/php/mod_zoomCoords_en.php
+===================================================================
+--- http/php/mod_zoomCoords_en.php (revision 2361)
++++ http/php/mod_zoomCoords_en.php (working copy)
+@@ -17,12 +17,9 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+-import_request_variables("PG");
+-
+ require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+
++import_request_variables("PG");
+
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+@@ -184,7 +181,7 @@
+ <body bgcolor='#ffffff' onload=''>
+
+ <?php
+-echo "<form name='form1' action='" . $PHP_SELF . "?".SID."' method='post'>";
++echo "<form name='form1' action='" . $self."' method='post'>";
+ #coordinates
+
+ #deutsche Version
+Index: http/php/nestedSets.php
+===================================================================
+--- http/php/nestedSets.php (revision 2361)
++++ http/php/nestedSets.php (working copy)
+@@ -17,12 +17,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+-session_start();
+-require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+ import_request_variables("PG");
+-require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+-$con = db_connect($DBSERVER,$OWNER,$PW);
+-db_select_db(DB,$con);
++require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
+ ?>
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+@@ -116,26 +112,31 @@
+ }
+ if(isset($action) && $action == "insert"){
+ $temp = explode("###", $layer);
+- $sql = "SELECT rgt FROM gui_treegde WHERE lft = ".$left." AND fkey_gui_id = '".$guiList."'";
+- $res = db_query($sql);
++ $sql = "SELECT rgt FROM gui_treegde WHERE lft = $1 AND fkey_gui_id = $1";
++ $v = array($left, $guiList);
++ $t = array("i", "s");
++ $res = db_prep_query($sql, $v, $t);
+ if($pos == 'in'){$left = $left + 1;}
+ else if($pos == 'hinter'){$left = db_result($res,0,"rgt") + 1;}
+ else{ $left = $left + 2;}
+- $sql = "UPDATE gui_treegde SET rgt=rgt+2 WHERE rgt >=". $left." AND fkey_gui_id = '".$guiList."'";
+- db_query($sql);
+- $sql = "UPDATE gui_treegde SET lft=lft+2 WHERE lft >=".$left." AND fkey_gui_id = '".$guiList."'";
+- db_query($sql);
+- $sql = "INSERT INTO gui_treegde(fkey_gui_id, fkey_layer_id, lft,rgt, my_layer_title, layer, wms_id) VALUES(";
+- $sql .= "'".$guiList."', ";
+- $sql .= "'".$temp[0]."', ";
+- $sql .= $left.", ";
+- $sql .= ($left+1).", ";
+- $sql .= "'".$name."', ";
+- $sql .= "'".$temp[1]."', ";
+- $sql .= "'".$wmsList."'";
+- $sql .= ")";
+- #echo $sql . "<br>";
+- db_query($sql);
++
++ $sql = "UPDATE gui_treegde SET rgt=rgt+2 WHERE rgt >= $1 AND fkey_gui_id = $2";
++ $v = array($left, $guiList);
++ $t = array("i", "s");
++ db_prep_query($sql, $v, $t);
++
++ $sql = "UPDATE gui_treegde SET lft=lft+2 WHERE lft >= $1 AND fkey_gui_id = $2";
++ $v = array($left, $guiList);
++ $t = array("i", "s");
++ db_prep_query($sql, $v, $t);
++
++ $sql = "INSERT INTO gui_treegde(fkey_gui_id, fkey_layer_id, lft,rgt, ";
++ $sql .= "my_layer_title, layer, wms_id) VALUES($1, $2, $3, $4, $5, $6, $7)";
++ #echo $sql . "<br>";
++ $v = array($guiList, $temp[0], $left, ($left+1), $name, $temp[1], $wmsList);
++ $t = array("s", "s", "i", "i", "s", "s", "s");
++ db_prep_query($sql, $v, $t);
++
+ /*
+ if($layer == ""){
+ $left = $left + 1;
+@@ -152,15 +153,26 @@
+ }
+ if(isset($action) && $action == "delete"){
+ if($left){
+- $sql = "SELECT rgt FROM gui_treegde WHERE lft =". $left." AND fkey_gui_id = '".$guiList."'";
+- $res = db_query($sql);
++ $sql = "SELECT rgt FROM gui_treegde WHERE lft = $1 AND fkey_gui_id = $2";
++ $v = array($left, $guiList);
++ $t = array("i", "s");
++ $res = db_prep_query($sql, $v, $t);
+ $right = db_result($res,0,"rgt");
+- $sql = "DELETE FROM gui_treegde WHERE lft BETWEEN ".$left." and ".$right." AND fkey_gui_id = '".$guiList."'";
+- db_query($sql);
+- $sql = "UPDATE gui_treegde SET lft=lft-((".$right."-".$left."+1)) WHERE lft>".$right." AND fkey_gui_id = '".$guiList."'";
+- db_query($sql);
+- $sql = "UPDATE gui_treegde SET rgt=rgt-((".$right."-".$left."+1)) WHERE rgt>".$right." AND fkey_gui_id = '".$guiList."'";
+- db_query($sql);
++
++ $sql = "DELETE FROM gui_treegde WHERE lft BETWEEN $1 and $2 AND fkey_gui_id = $3";
++ $v = array($left, $right, $guiList);
++ $t = array("i", "i", "s");
++ db_prep_query($sql, $v, $t);
++
++ $sql = "UPDATE gui_treegde SET lft=lft-(($1 - $2 + 1)) WHERE lft > $3 AND fkey_gui_id = $4";
++ $v = array($right, $left, $right, $guiList);
++ $t = array("i", "i", "i", "s");
++ db_prep_query($sql, $v, $t);
++
++ $sql = "UPDATE gui_treegde SET rgt=rgt-(($1 - $2 + 1)) WHERE rgt > $3 AND fkey_gui_id = $4";
++ $v = array($right, $left, $right, $guiList);
++ $t = array("i", "i", "i", "s");
++ db_prep_query($sql, $v, $t);
+ }
+ }
+ if(isset($action) && $action == "update"){
+@@ -166,12 +178,14 @@
+ if(isset($action) && $action == "update"){
+ $temp = explode("###", $layer);
+ $sql = "UPDATE gui_treegde SET ";
+- $sql .= "my_layer_title = '".$name."', ";
+- $sql .= "fkey_layer_id = '".$temp[0]."', ";
+- $sql .= "layer = '".$temp[1]."', ";
+- $sql .= "wms_id = '" . $wmsList."'";
+- $sql .= " WHERE lft = ".$left." AND fkey_gui_id = '".$guiList."'";
+- db_query($sql);
++ $sql .= "my_layer_title = $1, ";
++ $sql .= "fkey_layer_id = $2, ";
++ $sql .= "layer = $3, ";
++ $sql .= "wms_id = $4";
++ $sql .= " WHERE lft = $5 AND fkey_gui_id = $6";
++ $v = array($name, $temp[0], $temp[1], $wmsList, $left, $guiList);
++ $t = array("s", "s", "s", "s", "i", "s");
++ db_prep_query($sql, $v, $t);
+ }
+ if(isset($action) && $action == "add"){
+ $temp = explode("###", $layer);
+@@ -176,29 +190,42 @@
+ if(isset($action) && $action == "add"){
+ $temp = explode("###", $layer);
+
+- $sql_val = "SELECT * FROM gui_treegde WHERE lft =". $left." AND fkey_gui_id = '".$guiList."'";
+- $res_val = db_query($sql_val);
++ $sql_val = "SELECT * FROM gui_treegde WHERE lft = $1 AND fkey_gui_id = $2";
++ $v = array($left, $guiList);
++ $t = array("i", "s");
++ $res = db_prep_query($sql_val, $v, $t);
+
+ $sql = "UPDATE gui_treegde SET ";
++ $sql .= "fkey_layer_id = $1, layer = $2, wms_id = $3 ";
++ $sql .= "WHERE lft = $4 AND fkey_gui_id = $5";
+
+- $sql .= "fkey_layer_id = ";
+- $sql .= "'";
+- if(db_result($res_val, 0, "fkey_layer_id") != ''){ $sql .= db_result($res_val, 0, "fkey_layer_id") . ","; }
+- $sql .= $temp[0] . "', ";
++ $v = array();
++ $t = array("s", "s", "s", "i", "s");
++
++ if (db_result($res_val, 0, "fkey_layer_id") != '') {
++ array_push($v, db_result($res_val, 0, "fkey_layer_id") . "," . $temp[0]);
++ }
++ else {
++ array_push($v, $temp[0]);
++ }
+
+- $sql .= "layer = ";
+- $sql .= "'";
+- if(db_result($res_val, 0, "layer") != ''){ $sql .= db_result($res_val, 0, "layer") . ","; }
+- $sql .= $temp[1] . "', ";
+-
+- $sql .= "wms_id = ";
+- $sql .= "'";
+- if(db_result($res_val, 0, "wms_id") != ''){ $sql .= db_result($res_val, 0, "wms_id") . ","; }
+- $sql .= $wmsList . "' ";
++ if (db_result($res_val, 0, "layer") != '') {
++ array_push($v, db_result($res_val, 0, "layer") . "," . $temp[1]);
++ }
++ else {
++ array_push($v, $temp[1]);
++ }
+
+- $sql .= " WHERE lft = ".$left." AND fkey_gui_id = '".$guiList."'";
+- #echo $sql . "<br>";
+- db_query($sql);
++ if (db_result($res_val, 0, "wms_id") != '') {
++ array_push($v, db_result($res_val, 0, "wms_id") . "," . $wmsList);
++ }
++ else {
++ array_push($v, $wmsList);
++ }
++
++ array_push($v, $left);
++ array_push($v, $guiList);
++ db_prep_query($sql, $v, $t);
+ }
+ ?>
+ <br />
+@@ -219,7 +246,7 @@
+ ?>
+
+ <div style='position:absolute;top:50px;left:350px'>
+-<form action='<?php $PHP_SELF ?>' method='POST'>
++<form action='<?php echo $self; ?>' method='POST'>
+ <br><br>
+ <table >
+ <tr><td></td><td></td></tr>
+@@ -228,14 +255,19 @@
+ $admin = new administration();
+ $ownguis = $admin->getGuisByOwner($_SESSION["mb_user_id"],true);
+
+-$sql = "SELECT * FROM gui WHERE gui_id IN ("; for($i=0;
+-$i<count($ownguis); $i++){
+- if($i>0){ $sql .= ",";}
+- $sql .= "'".$ownguis[$i]."'";
+- }
++$sql = "SELECT * FROM gui WHERE gui_id IN (";
++$v = $ownguis;
++$t = array();
++for ($i = 1; $i <= count($ownguis); $i++){
++ if ($i > 1) {
++ $sql .= ",";
++ }
++ $sql .= "$" . $i;
++ array_push($t, "s");
++}
+ $sql .= ") ORDER BY gui_name";
+
+-$res = db_query($sql);
++$res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ echo "<select class='guiList' size='10' name='guiList' class='guiList' onchange='document.forms[0].submit()'>";
+ echo "<option value=''>GUI ...</option>";
+@@ -265,9 +297,11 @@
+ if(isset($guiList) && $guiList != ""){
+ $sql = "SELECT gui_wms.fkey_wms_id, wms.wms_title FROM gui_wms ";
+ $sql .= "INNER JOIN wms ON gui_wms.fkey_wms_id = wms.wms_id ";
+- $sql .= "WHERE gui_wms.fkey_gui_id = '" . $guiList . "' ";
++ $sql .= "WHERE gui_wms.fkey_gui_id = $1 ";
+ $sql .= "ORDER BY wms.wms_title";
+- $res = db_query($sql);
++ $v = array($guiList);
++ $t = array("s");
++ $res = db_prep_query($sql, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res)){
+ echo "<option value='".$row["fkey_wms_id"]."' ";
+@@ -293,9 +327,11 @@
+ if(isset($wmsList) && $wmsList != ""){
+ $sql_l = "SELECT gui_layer.fkey_layer_id, layer.layer_name, layer.layer_title FROM gui_layer ";
+ $sql_l .= "LEFT JOIN layer ON gui_layer.fkey_layer_id = layer.layer_id ";
+- $sql_l .= "WHERE gui_layer.gui_layer_wms_id = " . $wmsList . " AND layer.layer_parent = '0' AND gui_layer.fkey_gui_id = '".$guiList."'";
++ $sql_l .= "WHERE gui_layer.gui_layer_wms_id = $1 AND layer.layer_parent = '0' AND gui_layer.fkey_gui_id = $2";
+ $sql_l .= " ORDER BY layer.layer_title";
+- $res_l = db_query($sql_l);
++ $v = array($wmsList, $guiList);
++ $t = array("i", "s");
++ $res_l = db_prep_query($sql_l, $v, $t);
+ $cnt = 0;
+ while($row = db_fetch_array($res_l)){
+ echo "<option value='".$row["fkey_layer_id"]."###".$row["layer_name"]."'>";
+Index: http/print/mod_printPDF.php
+===================================================================
+--- http/print/mod_printPDF.php (revision 2361)
++++ http/print/mod_printPDF.php (working copy)
+@@ -16,7 +16,7 @@
+ # 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.
+-session_start();
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+
+ ?>
+Index: http/print/mod_printPDF_pdf.php
+===================================================================
+--- http/print/mod_printPDF_pdf.php (revision 2361)
++++ http/print/mod_printPDF_pdf.php (working copy)
+@@ -17,7 +17,7 @@
+ # 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("../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+ ob_start();
+ session_start();
+ ini_set('error_reporting', 'E_ALL & ~ E_NOTICE');
+Index: http/tools/mod_monitorCapabilities_main.php
+===================================================================
+--- http/tools/mod_monitorCapabilities_main.php (revision 0)
++++ http/tools/mod_monitorCapabilities_main.php (revision 0)
+@@ -0,0 +1,198 @@
++<?php
++# $Id: mod_monitorCapabilities.php 371 2006-05-31 12:45:24Z christoph $
++# http://www.mapbender.org/index.php/Monitor_Capabilities
++# 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("../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++//session_start();
++//import_request_variables("PG");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++$con = db_connect($DBSERVER,$OWNER,$PW);
++db_select_db(DB,$con);
++$admin = new administration();
++
++//$user = "root";
++$user = "";
++$gui = "";
++$cl = 0;
++
++
++function getConjunctionCharacter($onlineresource){
++ if(strstr($onlineresource, "?")) {
++ $lastChar = substr($onlineresource,strlen($onlineresource)-1, 1);
++ if ($lastChar == "?" || $lastChar == "&") {return "";}
++ else{return "&";}
++ }
++ else {return "?";}
++}
++
++// retrieve username and gui_id
++if ($_REQUEST['user']) {
++ $cl = 0;
++ //browser
++ echo "browser";
++ $user = $_REQUEST['user'];
++ $gui = $_REQUEST['gui'];
++}
++elseif ($_SERVER["argv"][1]) {
++ $cl = 1;
++ //command line
++ $p1 = $_SERVER["argv"][1];
++ $p2 = $_SERVER["argv"][2];
++ if (substr($p1, 0,5) == "user:") {
++ $user = substr($p1, 5);
++ if (substr($p2, 0,4) == "gui:") {
++ $gui = substr($p2, 4);
++ }
++ }
++}
++else {
++ echo "Please specify a username!\n";die();
++}
++
++$userid = $admin->getUserIdByUserName($user);
++
++if ($userid) {
++ $ownguis = $admin->getGuisByOwner($userid,true);
++ if ($gui) {
++ if (!$admin->guiExists($gui)) {
++ echo "GUI " . $gui . " doesn't exist.\n"; die();
++ }
++ elseif (in_array($gui, $ownguis)) {
++ $ownguis = array($gui);
++ }
++ else {
++ echo "User " . $user . " is not owner of GUI " . $gui . ".\n"; die();
++ }
++ }
++}
++else {
++ echo $user . " is not a valid username.\n"; die();
++}
++
++$wms_id_own = $admin->getWmsByOwnGuis($ownguis);
++
++// initialise monitoring processes
++echo "Starting monitoring cycle...\n\n";
++if ($cl == 0) echo "<br/><br/>";
++echo "WMS services are requested for availability.\n";
++if ($cl == 0) echo "<br/>";
++echo "Capabilities documents are requested and all changes synchronized with the database cache.\n\n";
++if ($cl == 0) echo "<br/><br/>";
++
++$time = strval(time()-2);
++
++for ($k=0; $k<count($wms_id_own); $k++) {
++ $sql = "SELECT wms_upload_url FROM wms WHERE wms_id = $1";
++ $v = array($wms_id_own[$k]);
++ $t = array('i');
++ $res = db_prep_query($sql,$v,$t);
++ $someArray = db_fetch_row($res);
++ $url = $someArray[0];
++
++ if (!$upload_url || $upload_url == "") {
++ $sql = "SELECT wms_version, wms_getcapabilities FROM wms WHERE wms_id = $1";
++ $v = array($wms_id_own[$k]);
++ $t = array('i');
++ $res = db_prep_query($sql,$v,$t);
++ $someArray = db_fetch_row($res);
++
++ $version = $someArray[0];
++ $capabilities = $someArray[1];
++ if ($version == "1.0.0" ) {
++ $url = $capabilities . getConjunctionCharacter($capabilities) . "REQUEST=capabilities&WMTVER=1.0.0";
++ }
++ else {
++ $url = $capabilities . getConjunctionCharacter($capabilities) . "REQUEST=GetCapabilities&SERVICE=WMS&VERSION=" . $version;
++ }
++ }
++
++ $sql = "INSERT INTO mb_monitor (upload_id, fkey_wms_id, status, status_comment, timestamp_begin, timestamp_end, upload_url, updated) ";
++ $sql .= "VALUES ($1, $2, $3, $4, $5, $6, $7, $8)";
++ $v = array($time,$wms_id_own[$k],"-2","Monitoring is still in progress...", time(),time(),$url,"0");
++ $t = array('s', 'i', 's', 's', 's', 's', 's', 's');
++ $res = db_prep_query($sql,$v,$t);
++}
++
++for ($k=0; $k<count($wms_id_own); $k++) {
++
++ if (intval(AUTO_UPDATE)) {
++ $exec = PHP_PATH . "php mod_monitorCapabilities_write.php ".$wms_id_own[$k]." ".$time." 1 > ../tmp/output_".$time."_".$wms_id_own[$k].".txt &";
++ }
++ else {
++ $exec = PHP_PATH . "php mod_monitorCapabilities_write.php ".$wms_id_own[$k]." ".$time." 0 > ../tmp/output_".$time."_".$wms_id_own[$k].".txt &";
++ }
++ exec($exec);
++}
++echo "Monitoring Cycle completed (total: " . count($wms_id_own) . " wms).\n\n";
++if ($cl == 0) echo "<br/><br/>";
++set_time_limit(2*TIME_LIMIT);
++
++// wait until all monitoring processes are finished
++echo "please wait " . TIME_LIMIT . " seconds for the monitoring to finish...\n\n";
++if ($cl == 0) echo "<br/><br/>";
++sleep(TIME_LIMIT);
++
++$sql = "SELECT fkey_wms_id, status, status_comment, timestamp_begin, timestamp_end, upload_url FROM mb_monitor WHERE upload_id = $1";
++$v = array($time);
++$t = array('i');
++$res = db_prep_query($sql,$v,$t);
++
++$cnt=0;
++while ($row = db_fetch_array($res)) {
++ $status[$cnt] = intval(db_result($res,$cnt,"status"));
++ $wms_id[$cnt] = db_result($res,$cnt,"fkey_wms_id");
++ $comment[$cnt] = db_result($res,$cnt,"status_comment");
++ $upload_url[$cnt] = db_result($res,$cnt,"upload_url");
++ $timestamp_begin[$cnt] = db_result($res,0,"timestamp_begin");
++ $timestamp_end[$cnt] = db_result($res,0,"timestamp_end");
++ $cnt++;
++}
++
++$body = "";
++for ($i=0; $i<$cnt; $i++) {
++ // if monitoring is still in progress and time limit has expired, update database
++ if ($status[$i] == -2 && intval(time())-intval($timestamp_begin[$i]) > intval(TIME_LIMIT)) {
++ $comment[$i] = "Monitoring process timed out.";
++ $status[$i] = -1;
++ $new_sql = "UPDATE mb_monitor SET status = '-1', status_comment = 'Monitoring process timed out.', timestamp_end = $1 WHERE fkey_wms_id = $2 AND upload_id = $3";
++ $new_v = array((intval($upload_id[$i])+intval(TIME_LIMIT)), $wms_id[$i], $time);
++ $new_t = array('s', 'i', 's');
++ $new_res = db_prep_query($new_sql,$new_v,$new_t);
++ }
++ // compose mail message
++ echo $wms_id[$i] . ": status " . $status[$i] . "\n";
++ if ($cl == 0) echo "<br/><br/>";
++ if ($status[$i] == -1) {
++ $body .= $admin->getWmsTitleByWmsId($wms_id[$i]) . " (" . $wms_id[$i] . "): " . $comment[$i] . "\n\n";
++ }
++}
++
++// Send an email to the user
++if ($body) {
++ $error_msg = "";
++ if ($admin->getEmailByUserId($userid)) {
++ $admin->sendEmail(MAILADMIN, MAILADMINNAME, $admin->getEmailByUserId($userid), $user, "WMS monitor report " . date("F j, Y, G:i:s", $time), utf8_decode($body), &$error_msg);
++ }
++ else {
++ $error_msg = "Email address of user '" . $admin->getUserNameByUserId($userid) . "' unknown!\n";
++ }
++ if ($error_msg) {
++ echo "\n ERROR: " . $error_msg;
++ }
++}
++?>
+Index: http/tools/mod_monitorCapabilities_read.php
+===================================================================
+--- http/tools/mod_monitorCapabilities_read.php (revision 0)
++++ http/tools/mod_monitorCapabilities_read.php (revision 0)
+@@ -0,0 +1,219 @@
++
++<?php
++# $Id: mod_monitorCapabilities_read.php 76 2006-08-15 12:25:34Z heuser $
++# http://www.mapbender.org/index.php/Monitor_Capabilities
++# 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__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++session_start();
++import_request_variables("PG");
++$con = db_connect($DBSERVER,$OWNER,$PW);
++db_select_db(DB,$con);
++?>
++<!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.'">';
++?>
++</head>
++<body>
++<?php
++$admin = new administration();
++
++// update selected wms
++for ($i=0; $i < $_POST['cbs']; $i++) {
++ $upd_wmsid = intval($_POST['cb'.$i]);
++ if ($upd_wmsid) {
++
++ $now = time();
++ $sql = "UPDATE mb_monitor SET status = '-2', status_comment = 'Monitoring is still in progress...', timestamp_begin = $1, timestamp_end = $2 WHERE upload_id = $3 AND fkey_wms_id = $4";
++ $v = array($now, $now, $_POST['upl_id'.$i], $upd_wmsid);
++ $t = array('s', 's', 's', 'i');
++ $res = db_prep_query($sql,$v,$t);
++
++ $exec = PHP_PATH . "php mod_monitorCapabilities_write.php ".$upd_wmsid." ".$_POST['upl_id'.$i]." 1 > output.txt &";
++ exec($exec);
++ }
++}
++
++$sql = "SELECT DISTINCT fkey_wms_id FROM mb_monitor";
++$res = db_prep_query($sql, array(), array());
++$cnt = 0;
++$wms = array();
++while(db_fetch_row($res)){
++ $wms[$cnt] = db_result($res,$cnt,"fkey_wms_id");
++ $cnt++;
++}
++
++$status = array();
++$upload_id = array();
++for ($i=0; $i<count($wms); $i++) {
++ $wms_id[$wms[$i]] = $wms[$i];
++ // get upload id
++ $sql = "SELECT MAX(upload_id) FROM mb_monitor WHERE fkey_wms_id = $1";
++ $v = array($wms[$i]);
++ $t = array('i');
++ $res = db_prep_query($sql,$v,$t);
++ $upload_id[$wms[$i]] = db_result($res,0,0);
++
++ $sql = "SELECT AVG(timestamp_begin), AVG(timestamp_end) FROM mb_monitor WHERE fkey_wms_id = $1 AND NOT status = '-1' AND NOT status = '-2'";
++ $v = array($wms[$i]);
++ $t = array('i');
++ $res = db_prep_query($sql,$v,$t);
++ if (db_result($res,0,1) == 0 && db_result($res,0,0) == 0) {
++ $avg_response_time[$wms[$i]] = NULL;
++ }
++ else {
++ $avg_response_time[$wms[$i]] = round(db_result($res,0,1)-db_result($res,0,0), 1);
++ }
++
++ $sql = "SELECT status, status_comment, timestamp_begin, timestamp_end, upload_url, updated FROM mb_monitor ";
++ $sql .= "WHERE upload_id = $1 AND fkey_wms_id = $2 ORDER BY status, status_comment, timestamp_end, fkey_wms_id";
++ $v = array($upload_id[$wms[$i]], $wms_id[$wms[$i]]);
++ $t = array('s', 'i');
++ $res = db_prep_query($sql,$v,$t);
++
++ $status[$wms[$i]] = intval(db_result($res,0,"status"));
++ $comment[$wms[$i]] = db_result($res,0,"status_comment");
++ $timestamp_begin[$wms[$i]] = db_result($res,0,"timestamp_begin");
++ $timestamp_end[$wms[$i]] = db_result($res,0,"timestamp_end");
++ $upload_url[$wms[$i]] = db_result($res,0,"upload_url");
++ $updated[$wms[$i]] = db_result($res,0,"updated");
++
++ if ($status[$wms[$i]] == -2 && intval(time())-intval($timestamp_begin[$wms[$i]]) > intval(TIME_LIMIT)) {
++ $comment[$wms[$i]] = "Monitoring process timed out.";
++
++ $new_sql = "UPDATE mb_monitor SET status = '-1', status_comment = 'Monitoring process timed out.', timestamp_end = $1 WHERE fkey_wms_id = $2 AND upload_id = $3";
++ $new_v = array((intval($upload_id[$wms[$i]])+intval(TIME_LIMIT)), $wms_id[$wms[$i]], $upload_id[$wms[$i]]);
++ $new_t = array('s', 'i', 's');
++ $new_res = db_prep_query($new_sql,$new_v,$new_t);
++ }
++
++ $sql = "SELECT COUNT(upload_id) FROM mb_monitor WHERE fkey_wms_id = $1 AND NOT status = '-2'";
++ $v = array($wms[$i]);
++ $t = array('i');
++ $res = db_prep_query($sql, $v, $t);
++ $total[$wms[$i]] = db_result($res, 0, 0);
++
++ $sql = "SELECT COUNT(upload_id) FROM mb_monitor WHERE fkey_wms_id = $1 AND status = '-1'";
++ $v = array($wms[$i]);
++ $t = array('i');
++ $res = db_prep_query($sql, $v, $t);
++ $fail = db_result($res, 0, 0);
++
++ $percentage[$wms[$i]] = 100 - round(100*floatval($fail)/floatval($total[$wms[$i]]), 1);
++}
++
++
++$newArray = $status;
++if ($_GET['sortby']) {
++ if ($_GET['sortby'] == "wms") {
++ $newArray = $wms_id;
++ asort($newArray);
++ }
++ elseif ($_GET['sortby'] == "status") {
++ $newArray = $status;
++ asort($newArray);
++ }
++ elseif ($_GET['sortby'] == "avgresp") {
++ $newArray = $avg_response_time;
++ asort($newArray);
++ }
++ elseif ($_GET['sortby'] == "avail") {
++ $newArray = $percentage;
++ arsort($newArray);
++ }
++ elseif ($_GET['sortby'] == "last") {
++ $newArray = $upload_id;
++ arsort($newArray);
++ }
++}
++
++
++
++$str = "<span style='font-size:30'>monitoring results</span><hr><br>\n";
++$str .= "<form name = 'form1' method='post' action='".$PHP_SELF."?sortby=".$_GET['sortby']."'>\n\t";
++$str .= "\n\t<input type=submit value='update selected WMS'>\n";
++$str .= "\n\t<input type=button onclick=\"self.location.href='".$PHP_SELF."?sortby=".$_GET['sortby']."'\" value='refresh'>\n<br/><br/>\n ";
++$str .= "<table cellpadding=10 cellspacing=0 border=0>";
++$str .= "<tr bgcolor='#dddddd'><th></th><th align='left'><a href='".$PHP_SELF."?sortby=wms'>wms</a></th>";
++$str .= "<th align='left' colspan = 2><a href='".$PHP_SELF."?sortby=status'>current status</a></th>";
++$str .= "<th align='left'><a href='".$PHP_SELF."?sortby=avgresp'>avg. response time</a></th>";
++$str .= "<th align='left'><a href='".$PHP_SELF."?sortby=avail'>overall availability</a></th><th></th></tr>";
++
++$cnt = 0;
++foreach ($newArray as $k => $value) {
++ $img = "stop.bmp";
++ if ($status[$k]==0) $img = "wait.bmp";
++ elseif ($status[$k]==1) $img = "go.bmp";
++
++ if ($updated[$k] == "0" && $status[$k] == 0) $fill = "checked"; else $fill = "disabled";
++
++ if (fmod($cnt, 2) == 1) {
++ $str .= "\n\t\t<tr bgcolor='#e6e6e6'>";
++ }
++ else {
++ $str .= "\n\t\t<tr bgcolor='#f0f0f0'>";
++ }
++ $str .= "\n\t\t\t<td><input name='cb".$cnt."' value='" . $wms_id[$k] . "' type=checkbox ".$fill." /><input type=hidden name='upl_id".$cnt."' value='".$upload_id[$k]."'></td>";
++ $str .= "\n\t\t\t<td valign='top'><b>" . $wms_id[$k] . "</b><br>" . $admin->getWmsTitleByWmsId($wms_id[$k]) . "</td>";
++ $str .= "\n\t\t\t<td valign='top'><a href='".$upload_url[$k]."' target=_blank><img title='Connect to service' border=0 src = '../img/trafficlights/". $img. "'></a></td>";
++ $str .= "\n\t\t\t<td valign='top'>" . $comment[$k] . "<br><div style='font-size:12'>".date("F j, Y, G:i:s", $upload_id[$k])."</div></td>";
++ $str .= "\n\t\t\t<td valign='top' align = 'left'>";
++ if ($avg_response_time[$k] == NULL) {
++ $str .= "n/a";
++ }
++ else {
++ $str .= $avg_response_time[$k] . " s";
++ }
++ $str .= "</td>";
++ $str .= "\n\t\t\t<td valign='top'><b>" . $percentage[$k] . " %</b> <span style='font-size:12'>(" . $total[$k] . " cycles)</span><br>";
++ $str .= "<table bgcolor='black' border=1 cellspacing=1 cellpadding=0><tr>";
++ $val = $percentage[$k];
++ for ($i=0; $i<10; $i++) {
++ if ($val>=10) {
++ $str .= "<td height=10 width='10' bgcolor='red'></td>";
++ $val-=10;
++ }
++ elseif($val>0){
++ $str .= "<td height=10 width='" . round($val) . "' bgcolor='red'></td>";
++ if (round($val) < 10) {
++ $str .= "<td height=10 width='" . (9-round($val)) . "' bgcolor='white'></td>";
++ }
++ $val=-1;
++ }
++ else {
++ $str .= "<td height=10 width='10' bgcolor='white'></td>";
++ }
++ }
++ $str .= "</tr></table></td>";
++
++# $str .= "\n\t\t\t<td><a href='output_".$wms_id[$k]."_".$max.".txt' target=_blank>log</a></td>";
++ $str .= "\n\t\t<td><input type=button value='details' onclick=\"var newWindow = window.open('../php/mod_monitorCapabilities_read_single.php?wmsid=".$wms_id[$k]."','wms','width=500,height=700,scrollbars');newWindow.href.location='test.php'\"></td></tr>";
++ $cnt++;
++}
++$str .= "\n\t</table>\n\t<br/><input type=hidden name=cbs value='".$cnt."'>\n</form>";
++echo $str;
++
++?>
++</body></html>
+\ No newline at end of file
+Index: http/tools/mod_monitorCapabilities_read_single.php
+===================================================================
+--- http/tools/mod_monitorCapabilities_read_single.php (revision 0)
++++ http/tools/mod_monitorCapabilities_read_single.php (revision 0)
+@@ -0,0 +1,102 @@
++
++<?php
++# $Id: mod_monitorCapabilities_read_single.php 76 2006-08-15 12:25:34Z heuser $
++# http://www.mapbender.org/index.php/Monitor_Capabilities
++# 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__)."/../php/mb_validateSession.php");
++require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++require_once(dirname(__FILE__)."/../classes/class_administration.php");
++session_start();
++import_request_variables("PG");
++$con = db_connect($DBSERVER,$OWNER,$PW);
++db_select_db(DB,$con);
++?>
++<!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.'">';
++?>
++</head>
++<body>
++<?php
++$admin = new administration();
++
++if ($_GET['wmsid']) {
++ $wms_id = intval($_GET['wmsid']);
++}
++else {
++ echo "Invalid WMS ID.";
++ die;
++}
++
++$sql = "SELECT upload_id, status, status_comment, timestamp_begin, timestamp_end, upload_url, updated FROM mb_monitor ";
++$sql .= "WHERE fkey_wms_id = $1 AND NOT status = '-2' ORDER BY upload_id DESC";
++$v = array($wms_id);
++$t = array('i');
++$res = db_prep_query($sql,$v,$t);
++
++$cnt=0;
++while ($row = db_fetch_array($res)) {
++ $upload_id[$cnt] = db_result($res,$cnt,"upload_id");
++ $status[$cnt] = intval(db_result($res,$cnt,"status"));
++ $comment[$cnt] = db_result($res,$cnt,"status_comment");
++ $timestamp_begin = db_result($res,$cnt,"timestamp_begin");
++ $timestamp_end = db_result($res,$cnt,"timestamp_end");
++ $upload_url[$cnt] = db_result($res,$cnt,"upload_url");
++ if ($status[$cnt] == '0' || $status[$cnt] == '1') {
++ $response_time[$cnt] = strval($timestamp_end-$timestamp_begin) . " s";
++ }
++ else {
++ $response_time[$cnt] = "n/a";
++ }
++ $cnt++;
++}
++
++
++$str = "<span style='font-size:30'>monitoring results</span><hr><br>\n";
++$str .= "<b>" . $wms_id . "</b><br>" . $admin->getWmsTitleByWmsId($wms_id) . "<br><br><br>\n";
++$str .= "<table cellpadding=10 cellspacing=0 border=0>";
++$str .= "<tr bgcolor='#dddddd'><th align='left'>date</th><th align='left' colspan = 2>status</th><th align='center'>response time</th></tr>";
++
++for ($k=0; $k<count($upload_id); $k++) {
++ $img = "stop.bmp";
++ if ($status[$k]==0) $img = "wait.bmp";
++ elseif ($status[$k]==1) $img = "go.bmp";
++
++ if (fmod($k, 2) == 1) {
++ $str .= "\n\t\t<tr bgcolor='#e6e6e6'>";
++ }
++ else {
++ $str .= "\n\t\t<tr bgcolor='#f0f0f0'>";
++ }
++ $str .= "\n\t\t\t<td>".date("F j, Y, G:i:s", $upload_id[$k])."</td>";
++ $str .= "\n\t\t\t<td><a href='".$upload_url[$k]."' target=_blank><img title='Connect to service' border=0 src = '../img/trafficlights/". $img. "'></a></td>";
++ $str .= "\n\t\t\t<td>" . $comment[$k] . "</td>";
++ $str .= "\n\t\t\t<td align='center'>" . $response_time[$k] . "</td>";
++
++# $str .= "\n\t\t\t<td><a href='output_".$wms_id[$k]."_".$max.".txt' target=_blank>log</a></td>";
++}
++$str .= "\n\t</table>\n\t";
++echo $str;
++
++?>
++</body></html>
+\ No newline at end of file
+Index: http/tools/mod_monitorCapabilities_write.php
+===================================================================
+--- http/tools/mod_monitorCapabilities_write.php (revision 0)
++++ http/tools/mod_monitorCapabilities_write.php (revision 0)
+@@ -0,0 +1,128 @@
++<?php
++# $Id: mod_monitorCapabilities_write.php 76 2006-08-15 12:25:34Z heuser $
++# http://www.mapbender.org/index.php/Monitor_Capabilities
++# 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__)."/../php/mb_validateSession.php");
++
++require_once(dirname(__FILE__)."/../classes/class_wms.php");
++require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
++session_start();
++import_request_variables("PG");
++
++$con = db_connect($DBSERVER,$OWNER,$PW);
++db_select_db(DB,$con);
++
++if ($_SERVER["argc"] != 4) {
++ echo "Insufficient arguments! Monitoring aborted.";
++ die();
++}
++
++$wmsId = $_SERVER["argv"][1];
++$upload_id = $_SERVER["argv"][2];
++$auto_update = intval($_SERVER["argv"][3]);
++
++// get the uploadURL
++$sql = "SELECT upload_url FROM mb_monitor WHERE fkey_wms_id = $1 AND upload_id = $2";
++$v = array($wmsId, $upload_id);
++$t = array('i', 's');
++$res = db_prep_query($sql,$v,$t);
++$someArray = db_fetch_row($res);
++$myURL = $someArray[0];
++
++// get the capabilities doc
++$sql = "SELECT wms_getcapabilities_doc FROM wms WHERE wms_id = $1";
++$v = array($wmsId);
++$t = array('i');
++$res = db_prep_query($sql,$v,$t);
++$someArray = db_fetch_row($res);
++$capabilities_doc = $someArray[0];
++
++$comment = "";
++$updated = "0";
++$result = -1;
++
++set_time_limit(TIME_LIMIT);
++
++if ($myURL) {
++
++ $remoteWms = new wms();
++ $remoteWms->createObjFromXML($myURL);
++ $now = time();
++ $remoteXml = $remoteWms->wms_getcapabilities_doc;
++
++ // compare the capabilities XML documents
++ $localXml = $capabilities_doc;
++
++ if (!$remoteXml) {
++ $result = -1;
++ $comment = "Connection failed.";
++ }
++ elseif (!$localXml) {
++ $result = 0;
++ }
++ else {
++
++ if ($localXml == $remoteXml) {
++ $result = 1;
++ $comment = "WMS is stable.";
++ }
++ else {
++ $result = 0;
++ }
++ }
++ if ($result == 0) {
++ $mywms = new wms();
++
++ if ($mywms->createObjFromXML($myURL)) {
++ if ($auto_update) {
++ $mywms->updateObjInDB($wmsId);
++ $updated = "1";
++ $comment = "WMS has been updated.";
++ }
++ else {
++ $comment = "WMS is not up to date.";
++ }
++ }
++ else {
++ $result = -1;
++ $comment = "Invalid getCapabilities request/document or service exception.";
++ }
++ }
++}
++else {
++ $result = -1;
++ $comment = "Invalid upload URL.";
++ $now = time();
++}
++
++echo "wmsid: " . $wmsId . "\nupload_id: " . $upload_id . "\n";
++echo "autoupdate: " . $auto_update . "\n";
++echo "result: " . $result . "\ncomment: " . $comment . "\n";
++echo "timestamp: " . $now . " (".date("F j, Y, G:i:s",$now).")\n";
++echo "getCapabilities URL: " . $myURL . "\nupdated: " . $updated . "\n\n";
++echo "-------------------------------------------------------------------\n";
++echo "remote XML:\n\n" . $remoteXml . "\n\n";
++echo "-------------------------------------------------------------------\n";
++echo "local XML:\n\n" . $localXml . "\n\n";
++echo "-------------------------------------------------------------------\n";
++
++
++$sql = "UPDATE mb_monitor SET updated = $1, status = $2, status_comment = $3, upload_url = $4, timestamp_end = $5 WHERE upload_id = $6 AND fkey_wms_id = $7";
++$v = array($updated, $result, $comment, $myURL, $now, $upload_id, $wmsId);
++$t = array('s', 's', 's', 's', 's', 's', 'i');
++$res = db_prep_query($sql,$v,$t);
++?>
+\ No newline at end of file
+Index: resources/db/mysql/mysql_schema.sql
+===================================================================
+--- resources/db/mysql/mysql_schema.sql (revision 2361)
++++ resources/db/mysql/mysql_schema.sql (working copy)
+@@ -30,7 +30,6 @@
+ e_pos tinyint(4) unsigned zerofill default NULL,
+ e_public tinyint(1) unsigned zerofill default NULL,
+ e_comment text,
+- e_title varchar(255),
+ e_element varchar(255) NOT NULL default '',
+ e_src varchar(255) default NULL,
+ e_attributes longtext,
+@@ -47,6 +46,7 @@
+ e_target varchar(50) default NULL,
+ e_requires varchar(50) default NULL,
+ e_url VARCHAR(255) NULL,
++ e_title varchar(255),
+ PRIMARY KEY (fkey_gui_id,e_id),
+ KEY idx_gui_id_e_id (fkey_gui_id,e_id)
+ ) TYPE=InnoDB;
+Index: resources/db/postgresql/pgsql_schema.sql
+===================================================================
+--- resources/db/postgresql/pgsql_schema.sql (revision 2361)
++++ resources/db/postgresql/pgsql_schema.sql (working copy)
+@@ -24,7 +24,6 @@
+ e_pos integer,
+ e_public integer,
+ e_comment text,
+- e_title character varying(255),
+ e_element character varying(255) DEFAULT ''::character varying NOT NULL,
+ e_src character varying(255),
+ e_attributes text,
+@@ -40,7 +39,8 @@
+ e_mb_mod character varying(50),
+ e_target character varying(50),
+ e_requires character varying(50),
+- e_url character varying(255)
++ e_url character varying(255),
++ e_title character varying(255)
+ );
+
+
+Index: resources/db/update/update_guis_iso.sql
+===================================================================
+--- resources/db/update/update_guis_iso.sql (revision 2361)
++++ resources/db/update/update_guis_iso.sql (working copy)
+@@ -773,7 +773,7 @@
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','editElements',2,1,'Oberfl�chenelemente editieren','a','','href = "../php/mod_editElements.php?sessionID" target = "AdminFrame" ',10,491,200,25,5,'','GUI editieren','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_Elements');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','editGUI_WMS',2,1,'WMS GUI Einstellungen','a','','href="../php/mod_editGuiWms.php?sessionID"'' target="AdminFrame"',10,218,200,20,5,'','WMS Einstellungen �ndern','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_WMS');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','exportGUI',2,1,'GUI exportieren, SQL erzeugen','a','','href = "../php/mod_exportGUI.php?sessionID" target = "AdminFrame" ',10,536,200,25,10,'x','GUI exportieren (SQL)','a','','','','AdminFrame','http://www.mapbender.org/index.php/Oberfl�che_exportieren_%28SQL%29');
+-INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','filteredWms_layer_topic',2,1,'allocate topics to layers of wms of this user','a','','href = "../php/mod_filteredWms_layer_topic.php?sessionID&e_id_css=filteredWms_layer_topic" target = "AdminFrame" ',10,295,200,20,5,'','Kategoriezuordnung','a','','','','AdminFrame','http://www.mapbender.org/index.php/Topic_/_Category');
++
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','headline_Configure_WMS_Access',3,1,'Hintergrund WMS Zuordnung','div','','',1,175,210,63,2,'','WMS Zuordnung','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','headline_GUI_Management',3,1,'Oberfl�chenverwaltung','div','','',1,428,210,153,2,'','GUI Verwaltung','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','headline_Metadata',3,1,'Metadateneditor Caption','div','','',1,252,210,63,2,'','Metadaten','div','','','','','');
+@@ -796,8 +796,8 @@
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'EditWMSMetadata', 'file_css', '../css/metadata.css', 'css-file to use for the metadata modul', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'body', 'body_file_css', '../css/admin_service.css', 'file/css', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'editGUI_WMS', 'css_file', '../css/edit_gui.css', '', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'filteredWms_layer_topic', 'file css', '../css/administration_alloc_4.css', 'css', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'filteredWms_layer_topic', 'language', 'de', '', 'php_var');
++
++
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'help', 'mod_help_color', '#cc33cc', 'color for highlighting', 'var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'help', 'mod_help_text', 'click highlighted elements for help', '', 'php_var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'help', 'mod_help_thickness', '3', 'thickness of highlighting', 'var');
+@@ -816,7 +816,7 @@
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','editElements',2,1,'Edit GUI Elements','a','','href = "../php/mod_editElements.php?sessionID" target = "AdminFrame" ',10,491,200,20,5,'','Edit GUI Elements','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_Elements');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','editGUI_WMS',2,1,'WMS GUI settings','a','','href="../php/mod_editGuiWms.php?sessionID"'' target="AdminFrame"',10,218,200,20,5,'','WMS GUI settings','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_WMS');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','exportGUI',2,1,'Export GUI (SQL), create SQL','a','','href = "../php/mod_exportGUI.php?sessionID" target = "AdminFrame" ',10,533,200,20,10,'x','Export GUI (SQL)','a','','','','AdminFrame','http://www.mapbender.org/index.php/Oberfl�che_exportieren_%28SQL%29');
+-INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','filteredWms_layer_topic',2,1,'allocate topics to layers of wms of this user','a','','href = "../php/mod_filteredWms_layer_topic.php?sessionID&e_id_css=filteredWms_layer_topic" target = "AdminFrame" ',10,295,200,20,5,'','Allocate topics','a','','','','AdminFrame','http://www.mapbender.org/index.php/Topic_/_Category');
++
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','headline_Configure_WMS_Access',3,1,'WMS Assignment','div','','',1,175,210,63,2,'','WMS Assignment','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','headline_GUI_Management',3,1,'GUI Management','div','','',1,428,210,148,2,'','GUI Management','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','headline_Metadata',3,1,'Metadata','div','','',1,252,210,63,2,'','Metadata','div','','','','','');
+@@ -839,8 +839,6 @@
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'EditWMSMetadata', 'file_css', '../css/metadata.css', 'css-file to use for the metadata modul', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'body', 'body_file_css', '../css/admin_service.css', 'file/css', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'editGUI_WMS', 'css_file', '../css/edit_gui.css', '', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'filteredWms_layer_topic', 'file css', '../css/administration_alloc_4.css', 'css', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'filteredWms_layer_topic', 'language', 'de', '', 'php_var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'help', 'mod_help_color', '#cc33cc', 'color for highlighting', 'var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'help', 'mod_help_text', 'click highlighted elements for help', '', 'php_var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'help', 'mod_help_thickness', '3', 'thickness of highlighting', 'var');
+Index: resources/db/update/update_guis_utf8.sql
+===================================================================
+--- resources/db/update/update_guis_utf8.sql (revision 2361)
++++ resources/db/update/update_guis_utf8.sql (working copy)
+@@ -773,7 +773,7 @@
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','editElements',2,1,'Oberfl�chenelemente editieren','a','','href = "../php/mod_editElements.php?sessionID" target = "AdminFrame" ',10,491,200,25,5,'','GUI editieren','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_Elements');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','editGUI_WMS',2,1,'WMS GUI Einstellungen','a','','href="../php/mod_editGuiWms.php?sessionID"'' target="AdminFrame"',10,218,200,20,5,'','WMS Einstellungen �ndern','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_WMS');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','exportGUI',2,1,'GUI exportieren, SQL erzeugen','a','','href = "../php/mod_exportGUI.php?sessionID" target = "AdminFrame" ',10,536,200,25,10,'x','GUI exportieren (SQL)','a','','','','AdminFrame','http://www.mapbender.org/index.php/Oberfl%C3%A4che_exportieren_%28SQL%29');
+-INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','filteredWms_layer_topic',2,1,'allocate topics to layers of wms of this user','a','','href = "../php/mod_filteredWms_layer_topic.php?sessionID&e_id_css=filteredWms_layer_topic" target = "AdminFrame" ',10,295,200,20,5,'','Kategoriezuordnung','a','','','','AdminFrame','http://www.mapbender.org/index.php/Topic_/_Category');
++
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','headline_Configure_WMS_Access',3,1,'Hintergrund WMS Zuordnung','div','','',1,175,210,63,2,'','WMS Zuordnung','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','headline_GUI_Management',3,1,'Oberfl�chenverwaltung','div','','',1,428,210,153,2,'','GUI Verwaltung','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_de_services','headline_Metadata',3,1,'Metadateneditor Caption','div','','',1,252,210,63,2,'','Metadaten','div','','','','','');
+@@ -796,8 +796,7 @@
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'EditWMSMetadata', 'file_css', '../css/metadata.css', 'css-file to use for the metadata modul', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'body', 'body_file_css', '../css/admin_service.css', 'file/css', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'editGUI_WMS', 'css_file', '../css/edit_gui.css', '', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'filteredWms_layer_topic', 'file css', '../css/administration_alloc_4.css', 'css', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'filteredWms_layer_topic', 'language', 'de', '', 'php_var');
++
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'help', 'mod_help_color', '#cc33cc', 'color for highlighting', 'var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'help', 'mod_help_text', 'click highlighted elements for help', '', 'php_var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_de_services', 'help', 'mod_help_thickness', '3', 'thickness of highlighting', 'var');
+@@ -816,7 +815,7 @@
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','editElements',2,1,'Edit GUI Elements','a','','href = "../php/mod_editElements.php?sessionID" target = "AdminFrame" ',10,491,200,20,5,'','Edit GUI Elements','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_Elements');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','editGUI_WMS',2,1,'WMS GUI settings','a','','href="../php/mod_editGuiWms.php?sessionID"'' target="AdminFrame"',10,218,200,20,5,'','WMS GUI settings','a','','','','AdminFrame','http://www.mapbender.org/index.php/Edit_GUI_WMS');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','exportGUI',2,1,'Export GUI (SQL), create SQL','a','','href = "../php/mod_exportGUI.php?sessionID" target = "AdminFrame" ',10,533,200,20,10,'x','Export GUI (SQL)','a','','','','AdminFrame','http://www.mapbender.org/index.php/Oberfl%C3%A4che_exportieren_%28SQL%29');
+-INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','filteredWms_layer_topic',2,1,'allocate topics to layers of wms of this user','a','','href = "../php/mod_filteredWms_layer_topic.php?sessionID&e_id_css=filteredWms_layer_topic" target = "AdminFrame" ',10,295,200,20,5,'','Allocate topics','a','','','','AdminFrame','http://www.mapbender.org/index.php/Topic_/_Category');
++
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','headline_Configure_WMS_Access',3,1,'WMS Assignment','div','','',1,175,210,63,2,'','WMS Assignment','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','headline_GUI_Management',3,1,'GUI Management','div','','',1,428,210,148,2,'','GUI Management','div','','','','','');
+ INSERT INTO gui_element (fkey_gui_id, e_id, e_pos, e_public, e_comment, 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 ('admin_en_services','headline_Metadata',3,1,'Metadata','div','','',1,252,210,63,2,'','Metadata','div','','','','','');
+@@ -839,8 +838,7 @@
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'EditWMSMetadata', 'file_css', '../css/metadata.css', 'css-file to use for the metadata modul', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'body', 'body_file_css', '../css/admin_service.css', 'file/css', 'file/css');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'editGUI_WMS', 'css_file', '../css/edit_gui.css', '', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'filteredWms_layer_topic', 'file css', '../css/administration_alloc_4.css', 'css', 'file/css');
+-INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'filteredWms_layer_topic', 'language', 'de', '', 'php_var');
++
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'help', 'mod_help_color', '#cc33cc', 'color for highlighting', 'var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'help', 'mod_help_text', 'click highlighted elements for help', '', 'php_var');
+ INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES ('admin_en_services', 'help', 'mod_help_thickness', '3', 'thickness of highlighting', 'var');
+Index: resources/db/update/update_mysql_db.sql
+===================================================================
+--- resources/db/update/update_mysql_db.sql (revision 2361)
++++ resources/db/update/update_mysql_db.sql (working copy)
+@@ -1,9 +1,12 @@
+ --
+--- database changes in version 2.4.3
++-- database changes in version 2.4.5
+ --
+
+ --
+--- table wms_format: http://trac.osgeo.org/mapbender/ticket/53
++-- table gui_element: new column for translation
++--
++-- NOTICE:
++-- you may already have this column if you used the
++-- update SQL in Mapbender 2.4.4
+ --
+-ALTER TABLE wms_format CHANGE data_format data_format VARCHAR(100);
+-
++ALTER TABLE gui_element ADD COLUMN e_title VARCHAR(255);
+Index: resources/db/update/update_postgresql_db.sql
+===================================================================
+--- resources/db/update/update_postgresql_db.sql (revision 2361)
++++ resources/db/update/update_postgresql_db.sql (working copy)
+@@ -1,9 +1,13 @@
+ --
+--- database changes in version 2.4.3
++-- database changes in version 2.4.5
+ --
+
+ --
+--- table wms_format: http://trac.osgeo.org/mapbender/ticket/53
++-- table gui_element: new column for translation
+ --
+-ALTER TABLE wms_format ALTER COLUMN data_format TYPE varchar(100);
++-- NOTICE:
++-- you may already have this column if you used the
++-- update SQL in Mapbender 2.4.4
++--
++ALTER TABLE gui_element ADD COLUMN e_title VARCHAR(255);
+
More information about the Mapbender_commits
mailing list