2009-03-06 03:20:46 +00:00
/ *
OpenLayers . js -- OpenLayers Map Viewer Library
2013-04-14 03:23:43 +00:00
Copyright ( c ) 2006 - 2012 by OpenLayers Contributors
Published under the 2 - clause BSD license .
See http : //openlayers.org/dev/license.txt for the full text of the license, and http://openlayers.org/dev/authors.txt for full list of contributors.
2009-03-06 03:20:46 +00:00
Includes compressed code under the following licenses :
2013-04-14 03:23:43 +00:00
( For uncompressed versions of the code used , please see the
OpenLayers Github repository : < https : //github.com/openlayers/openlayers>)
2009-03-06 03:20:46 +00:00
* /
/ * *
* Contains XMLHttpRequest . js < http : //code.google.com/p/xmlhttprequest/>
* Copyright 2007 Sergey Ilinsky ( http : //www.ilinsky.com)
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
* http : //www.apache.org/licenses/LICENSE-2.0
* /
/ * *
2013-04-14 03:23:43 +00:00
* OpenLayers . Util . pagePosition is based on Yahoo ' s getXY method , which is
* Copyright ( c ) 2006 , Yahoo ! Inc .
* All rights reserved .
*
* Redistribution and use of this software in source and binary forms , with or
* without modification , are permitted provided that the following conditions
* are met :
*
* * Redistributions of source code must retain the above copyright notice ,
* this list of conditions and the following disclaimer .
*
* * Redistributions in binary form must reproduce the above copyright notice ,
* this list of conditions and the following disclaimer in the documentation
* and / or other materials provided with the distribution .
*
* * Neither the name of Yahoo ! Inc . nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission of Yahoo ! Inc .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR
* CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
* INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
* CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE .
2009-03-06 03:20:46 +00:00
* /
2013-04-14 03:23:43 +00:00
var OpenLayers = { VERSION _NUMBER : "Release 2.12" , singleFile : ! 0 , _getScriptLocation : function ( ) { for ( var a = /(^|(.*?\/))(OpenLayers[^\/]*?\.js)(\?|$)/ , b = document . getElementsByTagName ( "script" ) , c , d = "" , e = 0 , f = b . length ; e < f ; e ++ ) if ( c = b [ e ] . getAttribute ( "src" ) ) if ( c = c . match ( a ) ) { d = c [ 1 ] ; break } return function ( ) { return d } } ( ) , ImgPath : "" } ; OpenLayers . Class = function ( ) { var a = arguments . length , b = arguments [ 0 ] , c = arguments [ a - 1 ] , d = "function" == typeof c . initialize ? c . initialize : function ( ) { b . prototype . initialize . apply ( this , arguments ) } ; 1 < a ? ( a = [ d , b ] . concat ( Array . prototype . slice . call ( arguments ) . slice ( 1 , a - 1 ) , c ) , OpenLayers . inherit . apply ( null , a ) ) : d . prototype = c ; return d } ;
OpenLayers . inherit = function ( a , b ) { var c = function ( ) { } ; c . prototype = b . prototype ; a . prototype = new c ; var d , e , c = 2 ; for ( d = arguments . length ; c < d ; c ++ ) e = arguments [ c ] , "function" === typeof e && ( e = e . prototype ) , OpenLayers . Util . extend ( a . prototype , e ) } ; OpenLayers . Util = OpenLayers . Util || { } ; OpenLayers . Util . extend = function ( a , b ) { a = a || { } ; if ( b ) { for ( var c in b ) { var d = b [ c ] ; void 0 !== d && ( a [ c ] = d ) } ! ( "function" == typeof window . Event && b instanceof window . Event ) && ( b . hasOwnProperty && b . hasOwnProperty ( "toString" ) ) && ( a . toString = b . toString ) } return a } ; OpenLayers . String = { startsWith : function ( a , b ) { return 0 == a . indexOf ( b ) } , contains : function ( a , b ) { return - 1 != a . indexOf ( b ) } , trim : function ( a ) { return a . replace ( /^\s\s*/ , "" ) . replace ( /\s\s*$/ , "" ) } , camelize : function ( a ) { for ( var a = a . split ( "-" ) , b = a [ 0 ] , c = 1 , d = a . length ; c < d ; c ++ ) var e = a [ c ] , b = b + ( e . charAt ( 0 ) . toUpperCase ( ) + e . substring ( 1 ) ) ; return b } , format : function ( a , b , c ) { b || ( b = window ) ; return a . replace ( OpenLayers . String . tokenRegEx , function ( a , e ) { for ( var f , g = e . split ( /\.+/ ) , h = 0 ; h < g . length ; h ++ ) 0 == h && ( f = b ) , f = f [ g [ h ] ] ; "function" ==
typeof f && ( f = c ? f . apply ( null , c ) : f ( ) ) ; return "undefined" == typeof f ? "undefined" : f } ) } , tokenRegEx : /\$\{([\w.]+?)\}/g , numberRegEx : /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/ , isNumeric : function ( a ) { return OpenLayers . String . numberRegEx . test ( a ) } , numericIf : function ( a ) { return OpenLayers . String . isNumeric ( a ) ? parseFloat ( a ) : a } } ;
OpenLayers . Number = { decimalSeparator : "." , thousandsSeparator : "," , limitSigDigs : function ( a , b ) { var c = 0 ; 0 < b && ( c = parseFloat ( a . toPrecision ( b ) ) ) ; return c } , format : function ( a , b , c , d ) { b = "undefined" != typeof b ? b : 0 ; c = "undefined" != typeof c ? c : OpenLayers . Number . thousandsSeparator ; d = "undefined" != typeof d ? d : OpenLayers . Number . decimalSeparator ; null != b && ( a = parseFloat ( a . toFixed ( b ) ) ) ; var e = a . toString ( ) . split ( "." ) ; 1 == e . length && null == b && ( b = 0 ) ; a = e [ 0 ] ; if ( c ) for ( var f = /(-?[0-9]+)([0-9]{3})/ ; f . test ( a ) ; ) a = a . replace ( f , "$1" + c + "$2" ) ;
0 == b ? b = a : ( c = 1 < e . length ? e [ 1 ] : "0" , null != b && ( c += Array ( b - c . length + 1 ) . join ( "0" ) ) , b = a + d + c ) ; return b } } ; OpenLayers . Function = { bind : function ( a , b ) { var c = Array . prototype . slice . apply ( arguments , [ 2 ] ) ; return function ( ) { var d = c . concat ( Array . prototype . slice . apply ( arguments , [ 0 ] ) ) ; return a . apply ( b , d ) } } , bindAsEventListener : function ( a , b ) { return function ( c ) { return a . call ( b , c || window . event ) } } , False : function ( ) { return ! 1 } , True : function ( ) { return ! 0 } , Void : function ( ) { } } ;
OpenLayers . Array = { filter : function ( a , b , c ) { var d = [ ] ; if ( Array . prototype . filter ) d = a . filter ( b , c ) ; else { var e = a . length ; if ( "function" != typeof b ) throw new TypeError ; for ( var f = 0 ; f < e ; f ++ ) if ( f in a ) { var g = a [ f ] ; b . call ( c , g , f , a ) && d . push ( g ) } } return d } } ; OpenLayers . Bounds = OpenLayers . Class ( { left : null , bottom : null , right : null , top : null , centerLonLat : null , initialize : function ( a , b , c , d ) { OpenLayers . Util . isArray ( a ) && ( d = a [ 3 ] , c = a [ 2 ] , b = a [ 1 ] , a = a [ 0 ] ) ; null != a && ( this . left = OpenLayers . Util . toFloat ( a ) ) ; null != b && ( this . bottom = OpenLayers . Util . toFloat ( b ) ) ; null != c && ( this . right = OpenLayers . Util . toFloat ( c ) ) ; null != d && ( this . top = OpenLayers . Util . toFloat ( d ) ) } , clone : function ( ) { return new OpenLayers . Bounds ( this . left , this . bottom , this . right , this . top ) } , equals : function ( a ) { var b = ! 1 ; null !=
a && ( b = this . left == a . left && this . right == a . right && this . top == a . top && this . bottom == a . bottom ) ; return b } , toString : function ( ) { return [ this . left , this . bottom , this . right , this . top ] . join ( ) } , toArray : function ( a ) { return ! 0 === a ? [ this . bottom , this . left , this . top , this . right ] : [ this . left , this . bottom , this . right , this . top ] } , toBBOX : function ( a , b ) { null == a && ( a = 6 ) ; var c = Math . pow ( 10 , a ) , d = Math . round ( this . left * c ) / c , e = Math . round ( this . bottom * c ) / c , f = Math . round ( this . right * c ) / c , c = Math . round ( this . top * c ) / c ; return ! 0 === b ? e + "," + d + "," + c + "," + f : d +
"," + e + "," + f + "," + c } , toGeometry : function ( ) { return new OpenLayers . Geometry . Polygon ( [ new OpenLayers . Geometry . LinearRing ( [ new OpenLayers . Geometry . Point ( this . left , this . bottom ) , new OpenLayers . Geometry . Point ( this . right , this . bottom ) , new OpenLayers . Geometry . Point ( this . right , this . top ) , new OpenLayers . Geometry . Point ( this . left , this . top ) ] ) ] ) } , getWidth : function ( ) { return this . right - this . left } , getHeight : function ( ) { return this . top - this . bottom } , getSize : function ( ) { return new OpenLayers . Size ( this . getWidth ( ) , this . getHeight ( ) ) } ,
getCenterPixel : function ( ) { return new OpenLayers . Pixel ( ( this . left + this . right ) / 2 , ( this . bottom + this . top ) / 2 ) } , getCenterLonLat : function ( ) { this . centerLonLat || ( this . centerLonLat = new OpenLayers . LonLat ( ( this . left + this . right ) / 2 , ( this . bottom + this . top ) / 2 ) ) ; return this . centerLonLat } , scale : function ( a , b ) { null == b && ( b = this . getCenterLonLat ( ) ) ; var c , d ; "OpenLayers.LonLat" == b . CLASS _NAME ? ( c = b . lon , d = b . lat ) : ( c = b . x , d = b . y ) ; return new OpenLayers . Bounds ( ( this . left - c ) * a + c , ( this . bottom - d ) * a + d , ( this . right - c ) * a + c , ( this . top - d ) * a +
d ) } , add : function ( a , b ) { if ( null == a || null == b ) throw new TypeError ( "Bounds.add cannot receive null values" ) ; return new OpenLayers . Bounds ( this . left + a , this . bottom + b , this . right + a , this . top + b ) } , extend : function ( a ) { var b = null ; if ( a ) { switch ( a . CLASS _NAME ) { case "OpenLayers.LonLat" : b = new OpenLayers . Bounds ( a . lon , a . lat , a . lon , a . lat ) ; break ; case "OpenLayers.Geometry.Point" : b = new OpenLayers . Bounds ( a . x , a . y , a . x , a . y ) ; break ; case "OpenLayers.Bounds" : b = a } if ( b ) { this . centerLonLat = null ; if ( null == this . left || b . left < this . left ) this . left =
b . left ; if ( null == this . bottom || b . bottom < this . bottom ) this . bottom = b . bottom ; if ( null == this . right || b . right > this . right ) this . right = b . right ; if ( null == this . top || b . top > this . top ) this . top = b . top } } } , containsLonLat : function ( a , b ) { "boolean" === typeof b && ( b = { inclusive : b } ) ; var b = b || { } , c = this . contains ( a . lon , a . lat , b . inclusive ) , d = b . worldBounds ; d && ! c && ( c = d . getWidth ( ) , d = Math . round ( ( a . lon - ( d . left + d . right ) / 2 ) / c ) , c = this . containsLonLat ( { lon : a . lon - d * c , lat : a . lat } , { inclusive : b . inclusive } ) ) ; return c } , containsPixel : function ( a , b ) { return this . contains ( a . x ,
a . y , b ) } , contains : function ( a , b , c ) { null == c && ( c = ! 0 ) ; if ( null == a || null == b ) return ! 1 ; var a = OpenLayers . Util . toFloat ( a ) , b = OpenLayers . Util . toFloat ( b ) , d = ! 1 ; return d = c ? a >= this . left && a <= this . right && b >= this . bottom && b <= this . top : a > this . left && a < this . right && b > this . bottom && b < this . top } , intersectsBounds : function ( a , b ) { "boolean" === typeof b && ( b = { inclusive : b } ) ; b = b || { } ; if ( b . worldBounds ) var c = this . wrapDateLine ( b . worldBounds ) , a = a . wrapDateLine ( b . worldBounds ) ; else c = this ; null == b . inclusive && ( b . inclusive = ! 0 ) ; var d = ! 1 , e = c . left ==
a . right || c . right == a . left || c . top == a . bottom || c . bottom == a . top ; if ( b . inclusive || ! e ) var d = a . top >= c . bottom && a . top <= c . top || c . top > a . bottom && c . top < a . top , e = a . left >= c . left && a . left <= c . right || c . left >= a . left && c . left <= a . right , f = a . right >= c . left && a . right <= c . right || c . right >= a . left && c . right <= a . right , d = ( a . bottom >= c . bottom && a . bottom <= c . top || c . bottom >= a . bottom && c . bottom <= a . top || d ) && ( e || f ) ; if ( b . worldBounds && ! d ) { var g = b . worldBounds , e = g . getWidth ( ) , f = ! g . containsBounds ( c ) , g = ! g . containsBounds ( a ) ; f && ! g ? ( a = a . add ( - e , 0 ) , d = c . intersectsBounds ( a ,
{ inclusive : b . inclusive } ) ) : g && ! f && ( c = c . add ( - e , 0 ) , d = a . intersectsBounds ( c , { inclusive : b . inclusive } ) ) } return d } , containsBounds : function ( a , b , c ) { null == b && ( b = ! 1 ) ; null == c && ( c = ! 0 ) ; var d = this . contains ( a . left , a . bottom , c ) , e = this . contains ( a . right , a . bottom , c ) , f = this . contains ( a . left , a . top , c ) , a = this . contains ( a . right , a . top , c ) ; return b ? d || e || f || a : d && e && f && a } , determineQuadrant : function ( a ) { var b = "" , c = this . getCenterLonLat ( ) , b = b + ( a . lat < c . lat ? "b" : "t" ) ; return b += a . lon < c . lon ? "l" : "r" } , transform : function ( a , b ) { this . centerLonLat =
null ; var c = OpenLayers . Projection . transform ( { x : this . left , y : this . bottom } , a , b ) , d = OpenLayers . Projection . transform ( { x : this . right , y : this . bottom } , a , b ) , e = OpenLayers . Projection . transform ( { x : this . left , y : this . top } , a , b ) , f = OpenLayers . Projection . transform ( { x : this . right , y : this . top } , a , b ) ; this . left = Math . min ( c . x , e . x ) ; this . bottom = Math . min ( c . y , d . y ) ; this . right = Math . max ( d . x , f . x ) ; this . top = Math . max ( e . y , f . y ) ; return this } , wrapDateLine : function ( a , b ) { var b = b || { } , c = b . leftTolerance || 0 , d = b . rightTolerance || 0 , e = this . clone ( ) ; if ( a ) { for ( var f =
a . getWidth ( ) ; e . left < a . left && e . right - d <= a . left ; ) e = e . add ( f , 0 ) ; for ( ; e . left + c >= a . right && e . right > a . right ; ) e = e . add ( - f , 0 ) ; c = e . left + c ; c < a . right && ( c > a . left && e . right - d > a . right ) && ( e = e . add ( - f , 0 ) ) } return e } , CLASS _NAME : "OpenLayers.Bounds" } ) ; OpenLayers . Bounds . fromString = function ( a , b ) { var c = a . split ( "," ) ; return OpenLayers . Bounds . fromArray ( c , b ) } ; OpenLayers . Bounds . fromArray = function ( a , b ) { return ! 0 === b ? new OpenLayers . Bounds ( a [ 1 ] , a [ 0 ] , a [ 3 ] , a [ 2 ] ) : new OpenLayers . Bounds ( a [ 0 ] , a [ 1 ] , a [ 2 ] , a [ 3 ] ) } ;
OpenLayers . Bounds . fromSize = function ( a ) { return new OpenLayers . Bounds ( 0 , a . h , a . w , 0 ) } ; OpenLayers . Bounds . oppositeQuadrant = function ( a ) { var b ; b = "" + ( "t" == a . charAt ( 0 ) ? "b" : "t" ) ; return b += "l" == a . charAt ( 1 ) ? "r" : "l" } ; OpenLayers . Element = { visible : function ( a ) { return "none" != OpenLayers . Util . getElement ( a ) . style . display } , toggle : function ( ) { for ( var a = 0 , b = arguments . length ; a < b ; a ++ ) { var c = OpenLayers . Util . getElement ( arguments [ a ] ) , d = OpenLayers . Element . visible ( c ) ? "none" : "" ; c . style . display = d } } , remove : function ( a ) { a = OpenLayers . Util . getElement ( a ) ; a . parentNode . removeChild ( a ) } , getHeight : function ( a ) { a = OpenLayers . Util . getElement ( a ) ; return a . offsetHeight } , hasClass : function ( a , b ) { var c = a . className ; return ! ! c && RegExp ( "(^|\\s)" + b + "(\\s|$)" ) . test ( c ) } ,
addClass : function ( a , b ) { OpenLayers . Element . hasClass ( a , b ) || ( a . className += ( a . className ? " " : "" ) + b ) ; return a } , removeClass : function ( a , b ) { var c = a . className ; c && ( a . className = OpenLayers . String . trim ( c . replace ( RegExp ( "(^|\\s+)" + b + "(\\s+|$)" ) , " " ) ) ) ; return a } , toggleClass : function ( a , b ) { OpenLayers . Element . hasClass ( a , b ) ? OpenLayers . Element . removeClass ( a , b ) : OpenLayers . Element . addClass ( a , b ) ; return a } , getStyle : function ( a , b ) { var a = OpenLayers . Util . getElement ( a ) , c = null ; if ( a && a . style ) { c = a . style [ OpenLayers . String . camelize ( b ) ] ;
c || ( document . defaultView && document . defaultView . getComputedStyle ? c = ( c = document . defaultView . getComputedStyle ( a , null ) ) ? c . getPropertyValue ( b ) : null : a . currentStyle && ( c = a . currentStyle [ OpenLayers . String . camelize ( b ) ] ) ) ; var d = [ "left" , "top" , "right" , "bottom" ] ; window . opera && ( - 1 != OpenLayers . Util . indexOf ( d , b ) && "static" == OpenLayers . Element . getStyle ( a , "position" ) ) && ( c = "auto" ) } return "auto" == c ? null : c } } ; OpenLayers . LonLat = OpenLayers . Class ( { lon : 0 , lat : 0 , initialize : function ( a , b ) { OpenLayers . Util . isArray ( a ) && ( b = a [ 1 ] , a = a [ 0 ] ) ; this . lon = OpenLayers . Util . toFloat ( a ) ; this . lat = OpenLayers . Util . toFloat ( b ) } , toString : function ( ) { return "lon=" + this . lon + ",lat=" + this . lat } , toShortString : function ( ) { return this . lon + ", " + this . lat } , clone : function ( ) { return new OpenLayers . LonLat ( this . lon , this . lat ) } , add : function ( a , b ) { if ( null == a || null == b ) throw new TypeError ( "LonLat.add cannot receive null values" ) ; return new OpenLayers . LonLat ( this . lon +
OpenLayers . Util . toFloat ( a ) , this . lat + OpenLayers . Util . toFloat ( b ) ) } , equals : function ( a ) { var b = ! 1 ; null != a && ( b = this . lon == a . lon && this . lat == a . lat || isNaN ( this . lon ) && isNaN ( this . lat ) && isNaN ( a . lon ) && isNaN ( a . lat ) ) ; return b } , transform : function ( a , b ) { var c = OpenLayers . Projection . transform ( { x : this . lon , y : this . lat } , a , b ) ; this . lon = c . x ; this . lat = c . y ; return this } , wrapDateLine : function ( a ) { var b = this . clone ( ) ; if ( a ) { for ( ; b . lon < a . left ; ) b . lon += a . getWidth ( ) ; for ( ; b . lon > a . right ; ) b . lon -= a . getWidth ( ) } return b } , CLASS _NAME : "OpenLayers.LonLat" } ) ;
OpenLayers . LonLat . fromString = function ( a ) { a = a . split ( "," ) ; return new OpenLayers . LonLat ( a [ 0 ] , a [ 1 ] ) } ; OpenLayers . LonLat . fromArray = function ( a ) { var b = OpenLayers . Util . isArray ( a ) ; return new OpenLayers . LonLat ( b && a [ 0 ] , b && a [ 1 ] ) } ; OpenLayers . Pixel = OpenLayers . Class ( { x : 0 , y : 0 , initialize : function ( a , b ) { this . x = parseFloat ( a ) ; this . y = parseFloat ( b ) } , toString : function ( ) { return "x=" + this . x + ",y=" + this . y } , clone : function ( ) { return new OpenLayers . Pixel ( this . x , this . y ) } , equals : function ( a ) { var b = ! 1 ; null != a && ( b = this . x == a . x && this . y == a . y || isNaN ( this . x ) && isNaN ( this . y ) && isNaN ( a . x ) && isNaN ( a . y ) ) ; return b } , distanceTo : function ( a ) { return Math . sqrt ( Math . pow ( this . x - a . x , 2 ) + Math . pow ( this . y - a . y , 2 ) ) } , add : function ( a , b ) { if ( null == a || null == b ) throw new TypeError ( "Pixel.add cannot receive null values" ) ;
return new OpenLayers . Pixel ( this . x + a , this . y + b ) } , offset : function ( a ) { var b = this . clone ( ) ; a && ( b = this . add ( a . x , a . y ) ) ; return b } , CLASS _NAME : "OpenLayers.Pixel" } ) ; OpenLayers . Size = OpenLayers . Class ( { w : 0 , h : 0 , initialize : function ( a , b ) { this . w = parseFloat ( a ) ; this . h = parseFloat ( b ) } , toString : function ( ) { return "w=" + this . w + ",h=" + this . h } , clone : function ( ) { return new OpenLayers . Size ( this . w , this . h ) } , equals : function ( a ) { var b = ! 1 ; null != a && ( b = this . w == a . w && this . h == a . h || isNaN ( this . w ) && isNaN ( this . h ) && isNaN ( a . w ) && isNaN ( a . h ) ) ; return b } , CLASS _NAME : "OpenLayers.Size" } ) ; OpenLayers . Console = { log : function ( ) { } , debug : function ( ) { } , info : function ( ) { } , warn : function ( ) { } , error : function ( ) { } , userError : function ( a ) { alert ( a ) } , assert : function ( ) { } , dir : function ( ) { } , dirxml : function ( ) { } , trace : function ( ) { } , group : function ( ) { } , groupEnd : function ( ) { } , time : function ( ) { } , timeEnd : function ( ) { } , profile : function ( ) { } , profileEnd : function ( ) { } , count : function ( ) { } , CLASS _NAME : "OpenLayers.Console" } ;
( function ( ) { for ( var a = document . getElementsByTagName ( "script" ) , b = 0 , c = a . length ; b < c ; ++ b ) if ( - 1 != a [ b ] . src . indexOf ( "firebug.js" ) && console ) { OpenLayers . Util . extend ( OpenLayers . Console , console ) ; break } } ) ( ) ; OpenLayers . Lang = { code : null , defaultCode : "en" , getCode : function ( ) { OpenLayers . Lang . code || OpenLayers . Lang . setCode ( ) ; return OpenLayers . Lang . code } , setCode : function ( a ) { var b ; a || ( a = "msie" == OpenLayers . BROWSER _NAME ? navigator . userLanguage : navigator . language ) ; a = a . split ( "-" ) ; a [ 0 ] = a [ 0 ] . toLowerCase ( ) ; "object" == typeof OpenLayers . Lang [ a [ 0 ] ] && ( b = a [ 0 ] ) ; if ( a [ 1 ] ) { var c = a [ 0 ] + "-" + a [ 1 ] . toUpperCase ( ) ; "object" == typeof OpenLayers . Lang [ c ] && ( b = c ) } b || ( OpenLayers . Console . warn ( "Failed to find OpenLayers.Lang." + a . join ( "-" ) + " dictionary, falling back to default language" ) ,
b = OpenLayers . Lang . defaultCode ) ; OpenLayers . Lang . code = b } , translate : function ( a , b ) { var c = OpenLayers . Lang [ OpenLayers . Lang . getCode ( ) ] ; ( c = c && c [ a ] ) || ( c = a ) ; b && ( c = OpenLayers . String . format ( c , b ) ) ; return c } } ; OpenLayers . i18n = OpenLayers . Lang . translate ; OpenLayers . Util = OpenLayers . Util || { } ; OpenLayers . Util . getElement = function ( ) { for ( var a = [ ] , b = 0 , c = arguments . length ; b < c ; b ++ ) { var d = arguments [ b ] ; "string" == typeof d && ( d = document . getElementById ( d ) ) ; if ( 1 == arguments . length ) return d ; a . push ( d ) } return a } ; OpenLayers . Util . isElement = function ( a ) { return ! ! ( a && 1 === a . nodeType ) } ; OpenLayers . Util . isArray = function ( a ) { return "[object Array]" === Object . prototype . toString . call ( a ) } ; "undefined" === typeof window . $ && ( window . $ = OpenLayers . Util . getElement ) ;
OpenLayers . Util . removeItem = function ( a , b ) { for ( var c = a . length - 1 ; c >= 0 ; c -- ) a [ c ] == b && a . splice ( c , 1 ) ; return a } ; OpenLayers . Util . indexOf = function ( a , b ) { if ( typeof a . indexOf == "function" ) return a . indexOf ( b ) ; for ( var c = 0 , d = a . length ; c < d ; c ++ ) if ( a [ c ] == b ) return c ; return - 1 } ;
OpenLayers . Util . modifyDOMElement = function ( a , b , c , d , e , f , g , h ) { if ( b ) a . id = b ; if ( c ) { a . style . left = c . x + "px" ; a . style . top = c . y + "px" } if ( d ) { a . style . width = d . w + "px" ; a . style . height = d . h + "px" } if ( e ) a . style . position = e ; if ( f ) a . style . border = f ; if ( g ) a . style . overflow = g ; if ( parseFloat ( h ) >= 0 && parseFloat ( h ) < 1 ) { a . style . filter = "alpha(opacity=" + h * 100 + ")" ; a . style . opacity = h } else if ( parseFloat ( h ) == 1 ) { a . style . filter = "" ; a . style . opacity = "" } } ;
OpenLayers . Util . createDiv = function ( a , b , c , d , e , f , g , h ) { var i = document . createElement ( "div" ) ; if ( d ) i . style . backgroundImage = "url(" + d + ")" ; a || ( a = OpenLayers . Util . createUniqueID ( "OpenLayersDiv" ) ) ; e || ( e = "absolute" ) ; OpenLayers . Util . modifyDOMElement ( i , a , b , c , e , f , g , h ) ; return i } ;
OpenLayers . Util . createImage = function ( a , b , c , d , e , f , g , h ) { var i = document . createElement ( "img" ) ; a || ( a = OpenLayers . Util . createUniqueID ( "OpenLayersDiv" ) ) ; e || ( e = "relative" ) ; OpenLayers . Util . modifyDOMElement ( i , a , b , c , e , f , null , g ) ; if ( h ) { i . style . display = "none" ; b = function ( ) { i . style . display = "" ; OpenLayers . Event . stopObservingElement ( i ) } ; OpenLayers . Event . observe ( i , "load" , b ) ; OpenLayers . Event . observe ( i , "error" , b ) } i . style . alt = a ; i . galleryImg = "no" ; if ( d ) i . src = d ; return i } ; OpenLayers . IMAGE _RELOAD _ATTEMPTS = 0 ;
OpenLayers . Util . alphaHackNeeded = null ; OpenLayers . Util . alphaHack = function ( ) { if ( OpenLayers . Util . alphaHackNeeded == null ) { var a = navigator . appVersion . split ( "MSIE" ) , a = parseFloat ( a [ 1 ] ) , b = false ; try { b = ! ! document . body . filters } catch ( c ) { } OpenLayers . Util . alphaHackNeeded = b && a >= 5.5 && a < 7 } return OpenLayers . Util . alphaHackNeeded } ;
OpenLayers . Util . modifyAlphaImageDiv = function ( a , b , c , d , e , f , g , h , i ) { OpenLayers . Util . modifyDOMElement ( a , b , c , d , f , null , null , i ) ; b = a . childNodes [ 0 ] ; if ( e ) b . src = e ; OpenLayers . Util . modifyDOMElement ( b , a . id + "_innerImage" , null , d , "relative" , g ) ; if ( OpenLayers . Util . alphaHack ( ) ) { if ( a . style . display != "none" ) a . style . display = "inline-block" ; h == null && ( h = "scale" ) ; a . style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + b . src + "', sizingMethod='" + h + "')" ; if ( parseFloat ( a . style . opacity ) >= 0 && parseFloat ( a . style . opacity ) <
1 ) a . style . filter = a . style . filter + ( " alpha(opacity=" + a . style . opacity * 100 + ")" ) ; b . style . filter = "alpha(opacity=0)" } } ; OpenLayers . Util . createAlphaImageDiv = function ( a , b , c , d , e , f , g , h , i ) { var j = OpenLayers . Util . createDiv ( ) , i = OpenLayers . Util . createImage ( null , null , null , null , null , null , null , i ) ; i . className = "olAlphaImg" ; j . appendChild ( i ) ; OpenLayers . Util . modifyAlphaImageDiv ( j , a , b , c , d , e , f , g , h ) ; return j } ; OpenLayers . Util . upperCaseObject = function ( a ) { var b = { } , c ; for ( c in a ) b [ c . toUpperCase ( ) ] = a [ c ] ; return b } ;
OpenLayers . Util . applyDefaults = function ( a , b ) { var a = a || { } , c = typeof window . Event == "function" && b instanceof window . Event , d ; for ( d in b ) if ( a [ d ] === void 0 || ! c && b . hasOwnProperty && b . hasOwnProperty ( d ) && ! a . hasOwnProperty ( d ) ) a [ d ] = b [ d ] ; if ( ! c && b && b . hasOwnProperty && b . hasOwnProperty ( "toString" ) && ! a . hasOwnProperty ( "toString" ) ) a . toString = b . toString ; return a } ;
OpenLayers . Util . getParameterString = function ( a ) { var b = [ ] , c ; for ( c in a ) { var d = a [ c ] ; if ( d != null && typeof d != "function" ) { if ( typeof d == "object" && d . constructor == Array ) { for ( var e = [ ] , f , g = 0 , h = d . length ; g < h ; g ++ ) { f = d [ g ] ; e . push ( encodeURIComponent ( f === null || f === void 0 ? "" : f ) ) } d = e . join ( "," ) } else d = encodeURIComponent ( d ) ; b . push ( encodeURIComponent ( c ) + "=" + d ) } } return b . join ( "&" ) } ; OpenLayers . Util . urlAppend = function ( a , b ) { var c = a ; if ( b ) var d = ( a + " " ) . split ( /[?&]/ ) , c = c + ( d . pop ( ) === " " ? b : d . length ? "&" + b : "?" + b ) ; return c } ;
OpenLayers . Util . getImagesLocation = function ( ) { return OpenLayers . ImgPath || OpenLayers . _getScriptLocation ( ) + "img/" } ; OpenLayers . Util . getImageLocation = function ( a ) { return OpenLayers . Util . getImagesLocation ( ) + a } ; OpenLayers . Util . Try = function ( ) { for ( var a = null , b = 0 , c = arguments . length ; b < c ; b ++ ) { var d = arguments [ b ] ; try { a = d ( ) ; break } catch ( e ) { } } return a } ;
OpenLayers . Util . getXmlNodeValue = function ( a ) { var b = null ; OpenLayers . Util . Try ( function ( ) { b = a . text ; if ( ! b ) b = a . textContent ; if ( ! b ) b = a . firstChild . nodeValue } , function ( ) { b = a . textContent } ) ; return b } ; OpenLayers . Util . mouseLeft = function ( a , b ) { for ( var c = a . relatedTarget ? a . relatedTarget : a . toElement ; c != b && c != null ; ) c = c . parentNode ; return c != b } ; OpenLayers . Util . DEFAULT _PRECISION = 14 ;
OpenLayers . Util . toFloat = function ( a , b ) { if ( b == null ) b = OpenLayers . Util . DEFAULT _PRECISION ; typeof a !== "number" && ( a = parseFloat ( a ) ) ; return b === 0 ? a : parseFloat ( a . toPrecision ( b ) ) } ; OpenLayers . Util . rad = function ( a ) { return a * Math . PI / 180 } ; OpenLayers . Util . deg = function ( a ) { return a * 180 / Math . PI } ; OpenLayers . Util . VincentyConstants = { a : 6378137 , b : 6356752.3142 , f : 1 / 298.257223563 } ;
OpenLayers . Util . distVincenty = function ( a , b ) { for ( var c = OpenLayers . Util . VincentyConstants , d = c . a , e = c . b , c = c . f , f = OpenLayers . Util . rad ( b . lon - a . lon ) , g = Math . atan ( ( 1 - c ) * Math . tan ( OpenLayers . Util . rad ( a . lat ) ) ) , h = Math . atan ( ( 1 - c ) * Math . tan ( OpenLayers . Util . rad ( b . lat ) ) ) , i = Math . sin ( g ) , g = Math . cos ( g ) , j = Math . sin ( h ) , h = Math . cos ( h ) , k = f , l = 2 * Math . PI , m = 20 ; Math . abs ( k - l ) > 1.0 E - 12 && -- m > 0 ; ) { var n = Math . sin ( k ) , o = Math . cos ( k ) , p = Math . sqrt ( h * n * h * n + ( g * j - i * h * o ) * ( g * j - i * h * o ) ) ; if ( p == 0 ) return 0 ; var o = i * j + g * h * o , q = Math . atan2 ( p , o ) , r = Math . asin ( g *
h * n / p ) , s = Math . cos ( r ) * Math . cos ( r ) , n = o - 2 * i * j / s , t = c / 16 * s * ( 4 + c * ( 4 - 3 * s ) ) , l = k , k = f + ( 1 - t ) * c * Math . sin ( r ) * ( q + t * p * ( n + t * o * ( - 1 + 2 * n * n ) ) ) } if ( m == 0 ) return NaN ; d = s * ( d * d - e * e ) / ( e * e ) ; c = d / 1024 * ( 256 + d * ( - 128 + d * ( 74 - 47 * d ) ) ) ; return ( e * ( 1 + d / 16384 * ( 4096 + d * ( - 768 + d * ( 320 - 175 * d ) ) ) ) * ( q - c * p * ( n + c / 4 * ( o * ( - 1 + 2 * n * n ) - c / 6 * n * ( - 3 + 4 * p * p ) * ( - 3 + 4 * n * n ) ) ) ) ) . toFixed ( 3 ) / 1E3 } ;
OpenLayers . Util . destinationVincenty = function ( a , b , c ) { for ( var d = OpenLayers . Util , e = d . VincentyConstants , f = e . a , g = e . b , h = e . f , e = a . lon , a = a . lat , i = d . rad ( b ) , b = Math . sin ( i ) , i = Math . cos ( i ) , a = ( 1 - h ) * Math . tan ( d . rad ( a ) ) , j = 1 / Math . sqrt ( 1 + a * a ) , k = a * j , l = Math . atan2 ( a , i ) , a = j * b , m = 1 - a * a , f = m * ( f * f - g * g ) / ( g * g ) , n = 1 + f / 16384 * ( 4096 + f * ( - 768 + f * ( 320 - 175 * f ) ) ) , o = f / 1024 * ( 256 + f * ( - 128 + f * ( 74 - 47 * f ) ) ) , f = c / ( g * n ) , p = 2 * Math . PI ; Math . abs ( f - p ) > 1.0 E - 12 ; ) var q = Math . cos ( 2 * l + f ) , r = Math . sin ( f ) , s = Math . cos ( f ) , t = o * r * ( q + o / 4 * ( s * ( - 1 + 2 * q * q ) - o / 6 * q * ( - 3 + 4 * r * r ) * ( - 3 + 4 *
q * q ) ) ) , p = f , f = c / ( g * n ) + t ; c = k * r - j * s * i ; g = Math . atan2 ( k * s + j * r * i , ( 1 - h ) * Math . sqrt ( a * a + c * c ) ) ; b = Math . atan2 ( r * b , j * s - k * r * i ) ; i = h / 16 * m * ( 4 + h * ( 4 - 3 * m ) ) ; q = b - ( 1 - i ) * h * a * ( f + i * r * ( q + i * s * ( - 1 + 2 * q * q ) ) ) ; Math . atan2 ( a , - c ) ; return new OpenLayers . LonLat ( e + d . deg ( q ) , d . deg ( g ) ) } ;
OpenLayers . Util . getParameters = function ( a ) { var a = a === null || a === void 0 ? window . location . href : a , b = "" ; if ( OpenLayers . String . contains ( a , "?" ) ) var b = a . indexOf ( "?" ) + 1 , c = OpenLayers . String . contains ( a , "#" ) ? a . indexOf ( "#" ) : a . length , b = a . substring ( b , c ) ; for ( var a = { } , b = b . split ( /[&;]/ ) , c = 0 , d = b . length ; c < d ; ++ c ) { var e = b [ c ] . split ( "=" ) ; if ( e [ 0 ] ) { var f = e [ 0 ] ; try { f = decodeURIComponent ( f ) } catch ( g ) { f = unescape ( f ) } e = ( e [ 1 ] || "" ) . replace ( /\+/g , " " ) ; try { e = decodeURIComponent ( e ) } catch ( h ) { e = unescape ( e ) } e = e . split ( "," ) ; e . length == 1 && ( e = e [ 0 ] ) ;
a [ f ] = e } } return a } ; OpenLayers . Util . lastSeqID = 0 ; OpenLayers . Util . createUniqueID = function ( a ) { a == null && ( a = "id_" ) ; OpenLayers . Util . lastSeqID = OpenLayers . Util . lastSeqID + 1 ; return a + OpenLayers . Util . lastSeqID } ; OpenLayers . INCHES _PER _UNIT = { inches : 1 , ft : 12 , mi : 63360 , m : 39.3701 , km : 39370.1 , dd : 4374754 , yd : 36 } ; OpenLayers . INCHES _PER _UNIT [ "in" ] = OpenLayers . INCHES _PER _UNIT . inches ; OpenLayers . INCHES _PER _UNIT . degrees = OpenLayers . INCHES _PER _UNIT . dd ; OpenLayers . INCHES _PER _UNIT . nmi = 1852 * OpenLayers . INCHES _PER _UNIT . m ;
OpenLayers . METERS _PER _INCH = 0.0254000508001016 ;
OpenLayers . Util . extend ( OpenLayers . INCHES _PER _UNIT , { Inch : OpenLayers . INCHES _PER _UNIT . inches , Meter : 1 / OpenLayers . METERS _PER _INCH , Foot : 0.3048006096012192 / OpenLayers . METERS _PER _INCH , IFoot : 0.3048 / OpenLayers . METERS _PER _INCH , ClarkeFoot : 0.3047972651151 / OpenLayers . METERS _PER _INCH , SearsFoot : 0.30479947153867626 / OpenLayers . METERS _PER _INCH , GoldCoastFoot : 0.3047997101815088 / OpenLayers . METERS _PER _INCH , IInch : 0.0254 / OpenLayers . METERS _PER _INCH , MicroInch : 2.54 E - 5 / OpenLayers . METERS _PER _INCH , Mil : 2.54 E - 8 / OpenLayers . METERS _PER _INCH ,
Centimeter : 0.01 / OpenLayers . METERS _PER _INCH , Kilometer : 1E3 / OpenLayers . METERS _PER _INCH , Yard : 0.9144018288036576 / OpenLayers . METERS _PER _INCH , SearsYard : 0.914398414616029 / OpenLayers . METERS _PER _INCH , IndianYard : 0.9143985307444408 / OpenLayers . METERS _PER _INCH , IndianYd37 : 0.91439523 / OpenLayers . METERS _PER _INCH , IndianYd62 : 0.9143988 / OpenLayers . METERS _PER _INCH , IndianYd75 : 0.9143985 / OpenLayers . METERS _PER _INCH , IndianFoot : 0.30479951 / OpenLayers . METERS _PER _INCH , IndianFt37 : 0.30479841 / OpenLayers . METERS _PER _INCH , IndianFt62 : 0.3047996 /
OpenLayers . METERS _PER _INCH , IndianFt75 : 0.3047995 / OpenLayers . METERS _PER _INCH , Mile : 1609.3472186944373 / OpenLayers . METERS _PER _INCH , IYard : 0.9144 / OpenLayers . METERS _PER _INCH , IMile : 1609.344 / OpenLayers . METERS _PER _INCH , NautM : 1852 / OpenLayers . METERS _PER _INCH , "Lat-66" : 110943.31648893273 / OpenLayers . METERS _PER _INCH , "Lat-83" : 110946.25736872235 / OpenLayers . METERS _PER _INCH , Decimeter : 0.1 / OpenLayers . METERS _PER _INCH , Millimeter : 0.001 / OpenLayers . METERS _PER _INCH , Dekameter : 10 / OpenLayers . METERS _PER _INCH , Decameter : 10 / OpenLayers . METERS _PER _INCH ,
Hectometer : 100 / OpenLayers . METERS _PER _INCH , GermanMeter : 1.0000135965 / OpenLayers . METERS _PER _INCH , CaGrid : 0.999738 / OpenLayers . METERS _PER _INCH , ClarkeChain : 20.1166194976 / OpenLayers . METERS _PER _INCH , GunterChain : 20.11684023368047 / OpenLayers . METERS _PER _INCH , BenoitChain : 20.116782494375872 / OpenLayers . METERS _PER _INCH , SearsChain : 20.11676512155 / OpenLayers . METERS _PER _INCH , ClarkeLink : 0.201166194976 / OpenLayers . METERS _PER _INCH , GunterLink : 0.2011684023368047 / OpenLayers . METERS _PER _INCH , BenoitLink : 0.20116782494375873 / OpenLayers . METERS _PER _INCH ,
SearsLink : 0.2011676512155 / OpenLayers . METERS _PER _INCH , Rod : 5.02921005842012 / OpenLayers . METERS _PER _INCH , IntnlChain : 20.1168 / OpenLayers . METERS _PER _INCH , IntnlLink : 0.201168 / OpenLayers . METERS _PER _INCH , Perch : 5.02921005842012 / OpenLayers . METERS _PER _INCH , Pole : 5.02921005842012 / OpenLayers . METERS _PER _INCH , Furlong : 201.1684023368046 / OpenLayers . METERS _PER _INCH , Rood : 3.778266898 / OpenLayers . METERS _PER _INCH , CapeFoot : 0.3047972615 / OpenLayers . METERS _PER _INCH , Brealey : 375 / OpenLayers . METERS _PER _INCH , ModAmFt : 0.304812252984506 /
OpenLayers . METERS _PER _INCH , Fathom : 1.8288 / OpenLayers . METERS _PER _INCH , "NautM-UK" : 1853.184 / OpenLayers . METERS _PER _INCH , "50kilometers" : 5E4 / OpenLayers . METERS _PER _INCH , "150kilometers" : 15E4 / OpenLayers . METERS _PER _INCH } ) ;
OpenLayers . Util . extend ( OpenLayers . INCHES _PER _UNIT , { mm : OpenLayers . INCHES _PER _UNIT . Meter / 1E3 , cm : OpenLayers . INCHES _PER _UNIT . Meter / 100 , dm : 100 * OpenLayers . INCHES _PER _UNIT . Meter , km : 1E3 * OpenLayers . INCHES _PER _UNIT . Meter , kmi : OpenLayers . INCHES _PER _UNIT . nmi , fath : OpenLayers . INCHES _PER _UNIT . Fathom , ch : OpenLayers . INCHES _PER _UNIT . IntnlChain , link : OpenLayers . INCHES _PER _UNIT . IntnlLink , "us-in" : OpenLayers . INCHES _PER _UNIT . inches , "us-ft" : OpenLayers . INCHES _PER _UNIT . Foot , "us-yd" : OpenLayers . INCHES _PER _UNIT . Yard , "us-ch" : OpenLayers . INCHES _PER _UNIT . GunterChain ,
"us-mi" : OpenLayers . INCHES _PER _UNIT . Mile , "ind-yd" : OpenLayers . INCHES _PER _UNIT . IndianYd37 , "ind-ft" : OpenLayers . INCHES _PER _UNIT . IndianFt37 , "ind-ch" : 20.11669506 / OpenLayers . METERS _PER _INCH } ) ; OpenLayers . DOTS _PER _INCH = 72 ; OpenLayers . Util . normalizeScale = function ( a ) { return a > 1 ? 1 / a : a } ; OpenLayers . Util . getResolutionFromScale = function ( a , b ) { var c ; if ( a ) { b == null && ( b = "degrees" ) ; c = 1 / ( OpenLayers . Util . normalizeScale ( a ) * OpenLayers . INCHES _PER _UNIT [ b ] * OpenLayers . DOTS _PER _INCH ) } return c } ;
OpenLayers . Util . getScaleFromResolution = function ( a , b ) { b == null && ( b = "degrees" ) ; return a * OpenLayers . INCHES _PER _UNIT [ b ] * OpenLayers . DOTS _PER _INCH } ;
OpenLayers . Util . pagePosition = function ( a ) { var b = [ 0 , 0 ] , c = OpenLayers . Util . getViewportElement ( ) ; if ( ! a || a == window || a == c ) return b ; var d = OpenLayers . IS _GECKO && document . getBoxObjectFor && OpenLayers . Element . getStyle ( a , "position" ) == "absolute" && ( a . style . top == "" || a . style . left == "" ) , e = null ; if ( a . getBoundingClientRect ) { a = a . getBoundingClientRect ( ) ; e = c . scrollTop ; b [ 0 ] = a . left + c . scrollLeft ; b [ 1 ] = a . top + e } else if ( document . getBoxObjectFor && ! d ) { a = document . getBoxObjectFor ( a ) ; c = document . getBoxObjectFor ( c ) ; b [ 0 ] = a . screenX - c . screenX ;
b [ 1 ] = a . screenY - c . screenY } else { b [ 0 ] = a . offsetLeft ; b [ 1 ] = a . offsetTop ; e = a . offsetParent ; if ( e != a ) for ( ; e ; ) { b [ 0 ] = b [ 0 ] + e . offsetLeft ; b [ 1 ] = b [ 1 ] + e . offsetTop ; e = e . offsetParent } c = OpenLayers . BROWSER _NAME ; if ( c == "opera" || c == "safari" && OpenLayers . Element . getStyle ( a , "position" ) == "absolute" ) b [ 1 ] = b [ 1 ] - document . body . offsetTop ; for ( e = a . offsetParent ; e && e != document . body ; ) { b [ 0 ] = b [ 0 ] - e . scrollLeft ; if ( c != "opera" || e . tagName != "TR" ) b [ 1 ] = b [ 1 ] - e . scrollTop ; e = e . offsetParent } } return b } ;
OpenLayers . Util . getViewportElement = function ( ) { var a = arguments . callee . viewportElement ; if ( a == void 0 ) { a = OpenLayers . BROWSER _NAME == "msie" && document . compatMode != "CSS1Compat" ? document . body : document . documentElement ; arguments . callee . viewportElement = a } return a } ;
OpenLayers . Util . isEquivalentUrl = function ( a , b , c ) { c = c || { } ; OpenLayers . Util . applyDefaults ( c , { ignoreCase : true , ignorePort80 : true , ignoreHash : true } ) ; var a = OpenLayers . Util . createUrlObject ( a , c ) , b = OpenLayers . Util . createUrlObject ( b , c ) , d ; for ( d in a ) if ( d !== "args" && a [ d ] != b [ d ] ) return false ; for ( d in a . args ) { if ( a . args [ d ] != b . args [ d ] ) return false ; delete b . args [ d ] } for ( d in b . args ) return false ; return true } ;
OpenLayers . Util . createUrlObject = function ( a , b ) { b = b || { } ; if ( ! /^\w+:\/\// . test ( a ) ) { var c = window . location , d = c . port ? ":" + c . port : "" , d = c . protocol + "//" + c . host . split ( ":" ) . shift ( ) + d ; if ( a . indexOf ( "/" ) === 0 ) a = d + a ; else { c = c . pathname . split ( "/" ) ; c . pop ( ) ; a = d + c . join ( "/" ) + "/" + a } } b . ignoreCase && ( a = a . toLowerCase ( ) ) ; c = document . createElement ( "a" ) ; c . href = a ; d = { } ; d . host = c . host . split ( ":" ) . shift ( ) ; d . protocol = c . protocol ; d . port = b . ignorePort80 ? c . port == "80" || c . port == "0" ? "" : c . port : c . port == "" || c . port == "0" ? "80" : c . port ; d . hash = b . ignoreHash ||
c . hash === "#" ? "" : c . hash ; var e = c . search ; if ( ! e ) { e = a . indexOf ( "?" ) ; e = e != - 1 ? a . substr ( e ) : "" } d . args = OpenLayers . Util . getParameters ( e ) ; d . pathname = c . pathname . charAt ( 0 ) == "/" ? c . pathname : "/" + c . pathname ; return d } ; OpenLayers . Util . removeTail = function ( a ) { var b = null , b = a . indexOf ( "?" ) , c = a . indexOf ( "#" ) ; return b = b == - 1 ? c != - 1 ? a . substr ( 0 , c ) : a : c != - 1 ? a . substr ( 0 , Math . min ( b , c ) ) : a . substr ( 0 , b ) } ; OpenLayers . IS _GECKO = function ( ) { var a = navigator . userAgent . toLowerCase ( ) ; return a . indexOf ( "webkit" ) == - 1 && a . indexOf ( "gecko" ) != - 1 } ( ) ;
OpenLayers . CANVAS _SUPPORTED = function ( ) { var a = document . createElement ( "canvas" ) ; return ! ( ! a . getContext || ! a . getContext ( "2d" ) ) } ( ) ; OpenLayers . BROWSER _NAME = function ( ) { var a = "" , b = navigator . userAgent . toLowerCase ( ) ; b . indexOf ( "opera" ) != - 1 ? a = "opera" : b . indexOf ( "msie" ) != - 1 ? a = "msie" : b . indexOf ( "safari" ) != - 1 ? a = "safari" : b . indexOf ( "mozilla" ) != - 1 && ( a = b . indexOf ( "firefox" ) != - 1 ? "firefox" : "mozilla" ) ; return a } ( ) ; OpenLayers . Util . getBrowserName = function ( ) { return OpenLayers . BROWSER _NAME } ;
OpenLayers . Util . getRenderedDimensions = function ( a , b , c ) { var d , e , f = document . createElement ( "div" ) ; f . style . visibility = "hidden" ; for ( var g = c && c . containerElement ? c . containerElement : document . body , h = false , i = null , j = g ; j && j . tagName . toLowerCase ( ) != "body" ; ) { var k = OpenLayers . Element . getStyle ( j , "position" ) ; if ( k == "absolute" ) { h = true ; break } else if ( k && k != "static" ) break ; j = j . parentNode } if ( h && ( g . clientHeight === 0 || g . clientWidth === 0 ) ) { i = document . createElement ( "div" ) ; i . style . visibility = "hidden" ; i . style . position = "absolute" ;
i . style . overflow = "visible" ; i . style . width = document . body . clientWidth + "px" ; i . style . height = document . body . clientHeight + "px" ; i . appendChild ( f ) } f . style . position = "absolute" ; if ( b ) if ( b . w ) { d = b . w ; f . style . width = d + "px" } else if ( b . h ) { e = b . h ; f . style . height = e + "px" } if ( c && c . displayClass ) f . className = c . displayClass ; b = document . createElement ( "div" ) ; b . innerHTML = a ; b . style . overflow = "visible" ; if ( b . childNodes ) { a = 0 ; for ( c = b . childNodes . length ; a < c ; a ++ ) if ( b . childNodes [ a ] . style ) b . childNodes [ a ] . style . overflow = "visible" } f . appendChild ( b ) ;
i ? g . appendChild ( i ) : g . appendChild ( f ) ; if ( ! d ) { d = parseInt ( b . scrollWidth ) ; f . style . width = d + "px" } e || ( e = parseInt ( b . scrollHeight ) ) ; f . removeChild ( b ) ; if ( i ) { i . removeChild ( f ) ; g . removeChild ( i ) } else g . removeChild ( f ) ; return new OpenLayers . Size ( d , e ) } ;
OpenLayers . Util . getScrollbarWidth = function ( ) { var a = OpenLayers . Util . _scrollbarWidth ; if ( a == null ) { var b = null , c = null , b = a = 0 , b = document . createElement ( "div" ) ; b . style . position = "absolute" ; b . style . top = "-1000px" ; b . style . left = "-1000px" ; b . style . width = "100px" ; b . style . height = "50px" ; b . style . overflow = "hidden" ; c = document . createElement ( "div" ) ; c . style . width = "100%" ; c . style . height = "200px" ; b . appendChild ( c ) ; document . body . appendChild ( b ) ; a = c . offsetWidth ; b . style . overflow = "scroll" ; b = c . offsetWidth ; document . body . removeChild ( document . body . lastChild ) ;
OpenLayers . Util . _scrollbarWidth = a - b ; a = OpenLayers . Util . _scrollbarWidth } return a } ;
OpenLayers . Util . getFormattedLonLat = function ( a , b , c ) { c || ( c = "dms" ) ; var a = ( a + 540 ) % 360 - 180 , d = Math . abs ( a ) , e = Math . floor ( d ) , f = d = ( d - e ) / ( 1 / 60 ) , d = Math . floor ( d ) , f = Math . round ( ( f - d ) / ( 1 / 60 ) * 10 ) , f = f / 10 ; if ( f >= 60 ) { f = f - 60 ; d = d + 1 ; if ( d >= 60 ) { d = d - 60 ; e = e + 1 } } e < 10 && ( e = "0" + e ) ; e = e + "\u00b0" ; if ( c . indexOf ( "dm" ) >= 0 ) { d < 10 && ( d = "0" + d ) ; e = e + ( d + "'" ) ; if ( c . indexOf ( "dms" ) >= 0 ) { f < 10 && ( f = "0" + f ) ; e = e + ( f + '"' ) } } return e = b == "lon" ? e + ( a < 0 ? OpenLayers . i18n ( "W" ) : OpenLayers . i18n ( "E" ) ) : e + ( a < 0 ? OpenLayers . i18n ( "S" ) : OpenLayers . i18n ( "N" ) ) } ; OpenLayers . Format = OpenLayers . Class ( { options : null , externalProjection : null , internalProjection : null , data : null , keepData : ! 1 , initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) ; this . options = a } , destroy : function ( ) { } , read : function ( ) { throw Error ( "Read not implemented." ) ; } , write : function ( ) { throw Error ( "Write not implemented." ) ; } , CLASS _NAME : "OpenLayers.Format" } ) ; OpenLayers . Format . CSWGetRecords = function ( a ) { var a = OpenLayers . Util . applyDefaults ( a , OpenLayers . Format . CSWGetRecords . DEFAULTS ) , b = OpenLayers . Format . CSWGetRecords [ "v" + a . version . replace ( /\./g , "_" ) ] ; if ( ! b ) throw "Unsupported CSWGetRecords version: " + a . version ; return new b ( a ) } ; OpenLayers . Format . CSWGetRecords . DEFAULTS = { version : "2.0.2" } ; OpenLayers . Control = OpenLayers . Class ( { id : null , map : null , div : null , type : null , allowSelection : ! 1 , displayClass : "" , title : "" , autoActivate : ! 1 , active : null , handler : null , eventListeners : null , events : null , initialize : function ( a ) { this . displayClass = this . CLASS _NAME . replace ( "OpenLayers." , "ol" ) . replace ( /\./g , "" ) ; OpenLayers . Util . extend ( this , a ) ; this . events = new OpenLayers . Events ( this ) ; if ( this . eventListeners instanceof Object ) this . events . on ( this . eventListeners ) ; null == this . id && ( this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME +
"_" ) ) } , destroy : function ( ) { this . events && ( this . eventListeners && this . events . un ( this . eventListeners ) , this . events . destroy ( ) , this . events = null ) ; this . eventListeners = null ; this . handler && ( this . handler . destroy ( ) , this . handler = null ) ; if ( this . handlers ) { for ( var a in this . handlers ) this . handlers . hasOwnProperty ( a ) && "function" == typeof this . handlers [ a ] . destroy && this . handlers [ a ] . destroy ( ) ; this . handlers = null } this . map && ( this . map . removeControl ( this ) , this . map = null ) ; this . div = null } , setMap : function ( a ) { this . map = a ; this . handler &&
this . handler . setMap ( a ) } , draw : function ( a ) { if ( null == this . div && ( this . div = OpenLayers . Util . createDiv ( this . id ) , this . div . className = this . displayClass , this . allowSelection || ( this . div . className += " olControlNoSelect" , this . div . setAttribute ( "unselectable" , "on" , 0 ) , this . div . onselectstart = OpenLayers . Function . False ) , "" != this . title ) ) this . div . title = this . title ; null != a && ( this . position = a . clone ( ) ) ; this . moveTo ( this . position ) ; return this . div } , moveTo : function ( a ) { null != a && null != this . div && ( this . div . style . left = a . x + "px" , this . div . style . top =
a . y + "px" ) } , activate : function ( ) { if ( this . active ) return ! 1 ; this . handler && this . handler . activate ( ) ; this . active = ! 0 ; this . map && OpenLayers . Element . addClass ( this . map . viewPortDiv , this . displayClass . replace ( / /g , "" ) + "Active" ) ; this . events . triggerEvent ( "activate" ) ; return ! 0 } , deactivate : function ( ) { return this . active ? ( this . handler && this . handler . deactivate ( ) , this . active = ! 1 , this . map && OpenLayers . Element . removeClass ( this . map . viewPortDiv , this . displayClass . replace ( / /g , "" ) + "Active" ) , this . events . triggerEvent ( "deactivate" ) ,
! 0 ) : ! 1 } , CLASS _NAME : "OpenLayers.Control" } ) ; OpenLayers . Control . TYPE _BUTTON = 1 ; OpenLayers . Control . TYPE _TOGGLE = 2 ; OpenLayers . Control . TYPE _TOOL = 3 ; OpenLayers . Event = { observers : ! 1 , KEY _SPACE : 32 , KEY _BACKSPACE : 8 , KEY _TAB : 9 , KEY _RETURN : 13 , KEY _ESC : 27 , KEY _LEFT : 37 , KEY _UP : 38 , KEY _RIGHT : 39 , KEY _DOWN : 40 , KEY _DELETE : 46 , element : function ( a ) { return a . target || a . srcElement } , isSingleTouch : function ( a ) { return a . touches && 1 == a . touches . length } , isMultiTouch : function ( a ) { return a . touches && 1 < a . touches . length } , isLeftClick : function ( a ) { return a . which && 1 == a . which || a . button && 1 == a . button } , isRightClick : function ( a ) { return a . which && 3 == a . which || a . button && 2 == a . button } , stop : function ( a ,
b ) { b || ( a . preventDefault ? a . preventDefault ( ) : a . returnValue = ! 1 ) ; a . stopPropagation ? a . stopPropagation ( ) : a . cancelBubble = ! 0 } , findElement : function ( a , b ) { for ( var c = OpenLayers . Event . element ( a ) ; c . parentNode && ( ! c . tagName || c . tagName . toUpperCase ( ) != b . toUpperCase ( ) ) ; ) c = c . parentNode ; return c } , observe : function ( a , b , c , d ) { a = OpenLayers . Util . getElement ( a ) ; d = d || ! 1 ; if ( "keypress" == b && ( navigator . appVersion . match ( /Konqueror|Safari|KHTML/ ) || a . attachEvent ) ) b = "keydown" ; this . observers || ( this . observers = { } ) ; if ( ! a . _eventCacheID ) { var e =
"eventCacheID_" ; a . id && ( e = a . id + "_" + e ) ; a . _eventCacheID = OpenLayers . Util . createUniqueID ( e ) } e = a . _eventCacheID ; this . observers [ e ] || ( this . observers [ e ] = [ ] ) ; this . observers [ e ] . push ( { element : a , name : b , observer : c , useCapture : d } ) ; a . addEventListener ? a . addEventListener ( b , c , d ) : a . attachEvent && a . attachEvent ( "on" + b , c ) } , stopObservingElement : function ( a ) { a = OpenLayers . Util . getElement ( a ) . _eventCacheID ; this . _removeElementObservers ( OpenLayers . Event . observers [ a ] ) } , _removeElementObservers : function ( a ) { if ( a ) for ( var b = a . length - 1 ; 0 <=
b ; b -- ) { var c = a [ b ] ; OpenLayers . Event . stopObserving . apply ( this , [ c . element , c . name , c . observer , c . useCapture ] ) } } , stopObserving : function ( a , b , c , d ) { var d = d || ! 1 , a = OpenLayers . Util . getElement ( a ) , e = a . _eventCacheID ; if ( "keypress" == b && ( navigator . appVersion . match ( /Konqueror|Safari|KHTML/ ) || a . detachEvent ) ) b = "keydown" ; var f = ! 1 , g = OpenLayers . Event . observers [ e ] ; if ( g ) for ( var h = 0 ; ! f && h < g . length ; ) { var i = g [ h ] ; if ( i . name == b && i . observer == c && i . useCapture == d ) { g . splice ( h , 1 ) ; 0 == g . length && delete OpenLayers . Event . observers [ e ] ; f = ! 0 ;
break } h ++ } f && ( a . removeEventListener ? a . removeEventListener ( b , c , d ) : a && a . detachEvent && a . detachEvent ( "on" + b , c ) ) ; return f } , unloadCache : function ( ) { if ( OpenLayers . Event && OpenLayers . Event . observers ) { for ( var a in OpenLayers . Event . observers ) OpenLayers . Event . _removeElementObservers . apply ( this , [ OpenLayers . Event . observers [ a ] ] ) ; OpenLayers . Event . observers = ! 1 } } , CLASS _NAME : "OpenLayers.Event" } ; OpenLayers . Event . observe ( window , "unload" , OpenLayers . Event . unloadCache , ! 1 ) ;
OpenLayers . Events = OpenLayers . Class ( { BROWSER _EVENTS : "mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown" . split ( " " ) , listeners : null , object : null , element : null , eventHandler : null , fallThrough : null , includeXY : ! 1 , extensions : null , extensionCount : null , clearMouseListener : null , initialize : function ( a , b , c , d , e ) { OpenLayers . Util . extend ( this , e ) ; this . object = a ; this . fallThrough = d ; this . listeners = { } ; this . extensions = { } ; this . extensionCount =
{ } ; null != b && this . attachToElement ( b ) } , destroy : function ( ) { for ( var a in this . extensions ) "boolean" !== typeof this . extensions [ a ] && this . extensions [ a ] . destroy ( ) ; this . extensions = null ; this . element && ( OpenLayers . Event . stopObservingElement ( this . element ) , this . element . hasScrollEvent && OpenLayers . Event . stopObserving ( window , "scroll" , this . clearMouseListener ) ) ; this . eventHandler = this . fallThrough = this . object = this . listeners = this . element = null } , addEventType : function ( ) { } , attachToElement : function ( a ) { this . element ? OpenLayers . Event . stopObservingElement ( this . element ) :
( this . eventHandler = OpenLayers . Function . bindAsEventListener ( this . handleBrowserEvent , this ) , this . clearMouseListener = OpenLayers . Function . bind ( this . clearMouseCache , this ) ) ; this . element = a ; for ( var b = 0 , c = this . BROWSER _EVENTS . length ; b < c ; b ++ ) OpenLayers . Event . observe ( a , this . BROWSER _EVENTS [ b ] , this . eventHandler ) ; OpenLayers . Event . observe ( a , "dragstart" , OpenLayers . Event . stop ) } , on : function ( a ) { for ( var b in a ) "scope" != b && a . hasOwnProperty ( b ) && this . register ( b , a . scope , a [ b ] ) } , register : function ( a , b , c , d ) { a in OpenLayers . Events &&
! this . extensions [ a ] && ( this . extensions [ a ] = new OpenLayers . Events [ a ] ( this ) ) ; if ( null != c ) { null == b && ( b = this . object ) ; var e = this . listeners [ a ] ; e || ( e = [ ] , this . listeners [ a ] = e , this . extensionCount [ a ] = 0 ) ; b = { obj : b , func : c } ; d ? ( e . splice ( this . extensionCount [ a ] , 0 , b ) , "object" === typeof d && d . extension && this . extensionCount [ a ] ++ ) : e . push ( b ) } } , registerPriority : function ( a , b , c ) { this . register ( a , b , c , ! 0 ) } , un : function ( a ) { for ( var b in a ) "scope" != b && a . hasOwnProperty ( b ) && this . unregister ( b , a . scope , a [ b ] ) } , unregister : function ( a , b , c ) { null ==
b && ( b = this . object ) ; a = this . listeners [ a ] ; if ( null != a ) for ( var d = 0 , e = a . length ; d < e ; d ++ ) if ( a [ d ] . obj == b && a [ d ] . func == c ) { a . splice ( d , 1 ) ; break } } , remove : function ( a ) { null != this . listeners [ a ] && ( this . listeners [ a ] = [ ] ) } , triggerEvent : function ( a , b ) { var c = this . listeners [ a ] ; if ( c && 0 != c . length ) { null == b && ( b = { } ) ; b . object = this . object ; b . element = this . element ; b . type || ( b . type = a ) ; for ( var c = c . slice ( ) , d , e = 0 , f = c . length ; e < f && ! ( d = c [ e ] , d = d . func . apply ( d . obj , [ b ] ) , void 0 != d && ! 1 == d ) ; e ++ ) ; this . fallThrough || OpenLayers . Event . stop ( b , ! 0 ) ; return d } } ,
handleBrowserEvent : function ( a ) { var b = a . type , c = this . listeners [ b ] ; if ( c && 0 != c . length ) { if ( ( c = a . touches ) && c [ 0 ] ) { for ( var d = 0 , e = 0 , f = c . length , g , h = 0 ; h < f ; ++ h ) g = c [ h ] , d += g . clientX , e += g . clientY ; a . clientX = d / f ; a . clientY = e / f } this . includeXY && ( a . xy = this . getMousePosition ( a ) ) ; this . triggerEvent ( b , a ) } } , clearMouseCache : function ( ) { this . element . scrolls = null ; this . element . lefttop = null ; var a = document . body ; if ( a && ( ! ( 0 != a . scrollTop || 0 != a . scrollLeft ) || ! navigator . userAgent . match ( /iPhone/i ) ) ) this . element . offsets = null } , getMousePosition : function ( a ) { this . includeXY ?
this . element . hasScrollEvent || ( OpenLayers . Event . observe ( window , "scroll" , this . clearMouseListener ) , this . element . hasScrollEvent = ! 0 ) : this . clearMouseCache ( ) ; if ( ! this . element . scrolls ) { var b = OpenLayers . Util . getViewportElement ( ) ; this . element . scrolls = [ b . scrollLeft , b . scrollTop ] } this . element . lefttop || ( this . element . lefttop = [ document . documentElement . clientLeft || 0 , document . documentElement . clientTop || 0 ] ) ; this . element . offsets || ( this . element . offsets = OpenLayers . Util . pagePosition ( this . element ) ) ; return new OpenLayers . Pixel ( a . clientX +
this . element . scrolls [ 0 ] - this . element . offsets [ 0 ] - this . element . lefttop [ 0 ] , a . clientY + this . element . scrolls [ 1 ] - this . element . offsets [ 1 ] - this . element . lefttop [ 1 ] ) } , CLASS _NAME : "OpenLayers.Events" } ) ; OpenLayers . Events . buttonclick = OpenLayers . Class ( { target : null , events : "mousedown mouseup click dblclick touchstart touchmove touchend keydown" . split ( " " ) , startRegEx : /^mousedown|touchstart$/ , cancelRegEx : /^touchmove$/ , completeRegEx : /^mouseup|touchend$/ , initialize : function ( a ) { this . target = a ; for ( a = this . events . length - 1 ; 0 <= a ; -- a ) this . target . register ( this . events [ a ] , this , this . buttonClick , { extension : ! 0 } ) } , destroy : function ( ) { for ( var a = this . events . length - 1 ; 0 <= a ; -- a ) this . target . unregister ( this . events [ a ] , this , this . buttonClick ) ;
delete this . target } , getPressedButton : function ( a ) { var b = 3 , c ; do { if ( OpenLayers . Element . hasClass ( a , "olButton" ) ) { c = a ; break } a = a . parentNode } while ( 0 < -- b && a ) ; return c } , buttonClick : function ( a ) { var b = ! 0 , c = OpenLayers . Event . element ( a ) ; if ( c && ( OpenLayers . Event . isLeftClick ( a ) || ! ~ a . type . indexOf ( "mouse" ) ) ) if ( c = this . getPressedButton ( c ) ) { if ( "keydown" === a . type ) switch ( a . keyCode ) { case OpenLayers . Event . KEY _RETURN : case OpenLayers . Event . KEY _SPACE : this . target . triggerEvent ( "buttonclick" , { buttonElement : c } ) , OpenLayers . Event . stop ( a ) ,
b = ! 1 } else this . startEvt && ( this . completeRegEx . test ( a . type ) && ( b = OpenLayers . Util . pagePosition ( c ) , this . target . triggerEvent ( "buttonclick" , { buttonElement : c , buttonXY : { x : this . startEvt . clientX - b [ 0 ] , y : this . startEvt . clientY - b [ 1 ] } } ) ) , this . cancelRegEx . test ( a . type ) && delete this . startEvt , OpenLayers . Event . stop ( a ) , b = ! 1 ) ; this . startRegEx . test ( a . type ) && ( this . startEvt = a , OpenLayers . Event . stop ( a ) , b = ! 1 ) } else delete this . startEvt ; return b } } ) ; OpenLayers . Control . OverviewMap = OpenLayers . Class ( OpenLayers . Control , { element : null , ovmap : null , size : { w : 180 , h : 90 } , layers : null , minRectSize : 15 , minRectDisplayClass : "RectReplacement" , minRatio : 8 , maxRatio : 32 , mapOptions : null , autoPan : ! 1 , handlers : null , resolutionFactor : 1 , maximized : ! 1 , initialize : function ( a ) { this . layers = [ ] ; this . handlers = { } ; OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) } , destroy : function ( ) { this . mapDiv && ( this . handlers . click && this . handlers . click . destroy ( ) , this . handlers . drag && this . handlers . drag . destroy ( ) ,
this . ovmap && this . ovmap . viewPortDiv . removeChild ( this . extentRectangle ) , this . extentRectangle = null , this . rectEvents && ( this . rectEvents . destroy ( ) , this . rectEvents = null ) , this . ovmap && ( this . ovmap . destroy ( ) , this . ovmap = null ) , this . element . removeChild ( this . mapDiv ) , this . mapDiv = null , this . div . removeChild ( this . element ) , this . element = null , this . maximizeDiv && ( this . div . removeChild ( this . maximizeDiv ) , this . maximizeDiv = null ) , this . minimizeDiv && ( this . div . removeChild ( this . minimizeDiv ) , this . minimizeDiv = null ) , this . map . events . un ( { buttonclick : this . onButtonClick ,
moveend : this . update , changebaselayer : this . baseLayerDraw , scope : this } ) , OpenLayers . Control . prototype . destroy . apply ( this , arguments ) ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; if ( 0 === this . layers . length ) if ( this . map . baseLayer ) this . layers = [ this . map . baseLayer . clone ( ) ] ; else return this . map . events . register ( "changebaselayer" , this , this . baseLayerDraw ) , this . div ; this . element = document . createElement ( "div" ) ; this . element . className = this . displayClass + "Element" ; this . element . style . display = "none" ;
this . mapDiv = document . createElement ( "div" ) ; this . mapDiv . style . width = this . size . w + "px" ; this . mapDiv . style . height = this . size . h + "px" ; this . mapDiv . style . position = "relative" ; this . mapDiv . style . overflow = "hidden" ; this . mapDiv . id = OpenLayers . Util . createUniqueID ( "overviewMap" ) ; this . extentRectangle = document . createElement ( "div" ) ; this . extentRectangle . style . position = "absolute" ; this . extentRectangle . style . zIndex = 1E3 ; this . extentRectangle . className = this . displayClass + "ExtentRectangle" ; this . element . appendChild ( this . mapDiv ) ;
this . div . appendChild ( this . element ) ; if ( this . outsideViewport ) this . element . style . display = "" ; else { this . div . className += " " + this . displayClass + "Container" ; var a = OpenLayers . Util . getImageLocation ( "layer-switcher-maximize.png" ) ; this . maximizeDiv = OpenLayers . Util . createAlphaImageDiv ( this . displayClass + "MaximizeButton" , null , null , a , "absolute" ) ; this . maximizeDiv . style . display = "none" ; this . maximizeDiv . className = this . displayClass + "MaximizeButton olButton" ; this . div . appendChild ( this . maximizeDiv ) ; a = OpenLayers . Util . getImageLocation ( "layer-switcher-minimize.png" ) ;
this . minimizeDiv = OpenLayers . Util . createAlphaImageDiv ( "OpenLayers_Control_minimizeDiv" , null , null , a , "absolute" ) ; this . minimizeDiv . style . display = "none" ; this . minimizeDiv . className = this . displayClass + "MinimizeButton olButton" ; this . div . appendChild ( this . minimizeDiv ) ; this . minimizeControl ( ) } this . map . getExtent ( ) && this . update ( ) ; this . map . events . on ( { buttonclick : this . onButtonClick , moveend : this . update , scope : this } ) ; this . maximized && this . maximizeControl ( ) ; return this . div } , baseLayerDraw : function ( ) { this . draw ( ) ; this . map . events . unregister ( "changebaselayer" ,
this , this . baseLayerDraw ) } , rectDrag : function ( a ) { var b = this . handlers . drag . last . x - a . x , c = this . handlers . drag . last . y - a . y ; if ( 0 != b || 0 != c ) { var d = this . rectPxBounds . top , e = this . rectPxBounds . left , a = Math . abs ( this . rectPxBounds . getHeight ( ) ) , f = this . rectPxBounds . getWidth ( ) , c = Math . max ( 0 , d - c ) , c = Math . min ( c , this . ovmap . size . h - this . hComp - a ) , b = Math . max ( 0 , e - b ) , b = Math . min ( b , this . ovmap . size . w - this . wComp - f ) ; this . setRectPxBounds ( new OpenLayers . Bounds ( b , c + a , b + f , c ) ) } } , mapDivClick : function ( a ) { var b = this . rectPxBounds . getCenterPixel ( ) ,
c = a . xy . x - b . x , d = a . xy . y - b . y , e = this . rectPxBounds . top , f = this . rectPxBounds . left , a = Math . abs ( this . rectPxBounds . getHeight ( ) ) , b = this . rectPxBounds . getWidth ( ) , d = Math . max ( 0 , e + d ) , d = Math . min ( d , this . ovmap . size . h - a ) , c = Math . max ( 0 , f + c ) , c = Math . min ( c , this . ovmap . size . w - b ) ; this . setRectPxBounds ( new OpenLayers . Bounds ( c , d + a , c + b , d ) ) ; this . updateMapToRect ( ) } , onButtonClick : function ( a ) { a . buttonElement === this . minimizeDiv ? this . minimizeControl ( ) : a . buttonElement === this . maximizeDiv && this . maximizeControl ( ) } , maximizeControl : function ( a ) { this . element . style . display =
"" ; this . showToggle ( ! 1 ) ; null != a && OpenLayers . Event . stop ( a ) } , minimizeControl : function ( a ) { this . element . style . display = "none" ; this . showToggle ( ! 0 ) ; null != a && OpenLayers . Event . stop ( a ) } , showToggle : function ( a ) { this . maximizeDiv . style . display = a ? "" : "none" ; this . minimizeDiv . style . display = a ? "none" : "" } , update : function ( ) { null == this . ovmap && this . createMap ( ) ; ( this . autoPan || ! this . isSuitableOverview ( ) ) && this . updateOverview ( ) ; this . updateRectToMap ( ) } , isSuitableOverview : function ( ) { var a = this . map . getExtent ( ) , b = this . map . maxExtent ,
a = new OpenLayers . Bounds ( Math . max ( a . left , b . left ) , Math . max ( a . bottom , b . bottom ) , Math . min ( a . right , b . right ) , Math . min ( a . top , b . top ) ) ; this . ovmap . getProjection ( ) != this . map . getProjection ( ) && ( a = a . transform ( this . map . getProjectionObject ( ) , this . ovmap . getProjectionObject ( ) ) ) ; b = this . ovmap . getResolution ( ) / this . map . getResolution ( ) ; return b > this . minRatio && b <= this . maxRatio && this . ovmap . getExtent ( ) . containsBounds ( a ) } , updateOverview : function ( ) { var a = this . map . getResolution ( ) , b = this . ovmap . getResolution ( ) , c = b / a ; c > this . maxRatio ?
b = this . minRatio * a : c <= this . minRatio && ( b = this . maxRatio * a ) ; this . ovmap . getProjection ( ) != this . map . getProjection ( ) ? ( a = this . map . center . clone ( ) , a . transform ( this . map . getProjectionObject ( ) , this . ovmap . getProjectionObject ( ) ) ) : a = this . map . center ; this . ovmap . setCenter ( a , this . ovmap . getZoomForResolution ( b * this . resolutionFactor ) ) ; this . updateRectToMap ( ) } , createMap : function ( ) { var a = OpenLayers . Util . extend ( { controls : [ ] , maxResolution : "auto" , fallThrough : ! 1 } , this . mapOptions ) ; this . ovmap = new OpenLayers . Map ( this . mapDiv , a ) ; this . ovmap . viewPortDiv . appendChild ( this . extentRectangle ) ;
OpenLayers . Event . stopObserving ( window , "unload" , this . ovmap . unloadDestroy ) ; this . ovmap . addLayers ( this . layers ) ; this . ovmap . zoomToMaxExtent ( ) ; this . wComp = ( this . wComp = parseInt ( OpenLayers . Element . getStyle ( this . extentRectangle , "border-left-width" ) ) + parseInt ( OpenLayers . Element . getStyle ( this . extentRectangle , "border-right-width" ) ) ) ? this . wComp : 2 ; this . hComp = ( this . hComp = parseInt ( OpenLayers . Element . getStyle ( this . extentRectangle , "border-top-width" ) ) + parseInt ( OpenLayers . Element . getStyle ( this . extentRectangle , "border-bottom-width" ) ) ) ?
this . hComp : 2 ; this . handlers . drag = new OpenLayers . Handler . Drag ( this , { move : this . rectDrag , done : this . updateMapToRect } , { map : this . ovmap } ) ; this . handlers . click = new OpenLayers . Handler . Click ( this , { click : this . mapDivClick } , { single : ! 0 , "double" : ! 1 , stopSingle : ! 0 , stopDouble : ! 0 , pixelTolerance : 1 , map : this . ovmap } ) ; this . handlers . click . activate ( ) ; this . rectEvents = new OpenLayers . Events ( this , this . extentRectangle , null , ! 0 ) ; this . rectEvents . register ( "mouseover" , this , function ( ) { ! this . handlers . drag . active && ! this . map . dragging && this . handlers . drag . activate ( ) } ) ;
this . rectEvents . register ( "mouseout" , this , function ( ) { this . handlers . drag . dragging || this . handlers . drag . deactivate ( ) } ) ; if ( this . ovmap . getProjection ( ) != this . map . getProjection ( ) ) { var a = this . map . getProjectionObject ( ) . getUnits ( ) || this . map . units || this . map . baseLayer . units , b = this . ovmap . getProjectionObject ( ) . getUnits ( ) || this . ovmap . units || this . ovmap . baseLayer . units ; this . resolutionFactor = a && b ? OpenLayers . INCHES _PER _UNIT [ a ] / OpenLayers . INCHES _PER _UNIT [ b ] : 1 } } , updateRectToMap : function ( ) { var a = this . getRectBoundsFromMapBounds ( this . ovmap . getProjection ( ) !=
this . map . getProjection ( ) ? this . map . getExtent ( ) . transform ( this . map . getProjectionObject ( ) , this . ovmap . getProjectionObject ( ) ) : this . map . getExtent ( ) ) ; a && this . setRectPxBounds ( a ) } , updateMapToRect : function ( ) { var a = this . getMapBoundsFromRectBounds ( this . rectPxBounds ) ; this . ovmap . getProjection ( ) != this . map . getProjection ( ) && ( a = a . transform ( this . ovmap . getProjectionObject ( ) , this . map . getProjectionObject ( ) ) ) ; this . map . panTo ( a . getCenterLonLat ( ) ) } , setRectPxBounds : function ( a ) { var b = Math . max ( a . top , 0 ) , c = Math . max ( a . left , 0 ) , d =
Math . min ( a . top + Math . abs ( a . getHeight ( ) ) , this . ovmap . size . h - this . hComp ) , a = Math . min ( a . left + a . getWidth ( ) , this . ovmap . size . w - this . wComp ) , e = Math . max ( a - c , 0 ) , f = Math . max ( d - b , 0 ) ; e < this . minRectSize || f < this . minRectSize ? ( this . extentRectangle . className = this . displayClass + this . minRectDisplayClass , e = c + e / 2 - this . minRectSize / 2 , this . extentRectangle . style . top = Math . round ( b + f / 2 - this . minRectSize / 2 ) + "px" , this . extentRectangle . style . left = Math . round ( e ) + "px" , this . extentRectangle . style . height = this . minRectSize + "px" , this . extentRectangle . style . width =
this . minRectSize + "px" ) : ( this . extentRectangle . className = this . displayClass + "ExtentRectangle" , this . extentRectangle . style . top = Math . round ( b ) + "px" , this . extentRectangle . style . left = Math . round ( c ) + "px" , this . extentRectangle . style . height = Math . round ( f ) + "px" , this . extentRectangle . style . width = Math . round ( e ) + "px" ) ; this . rectPxBounds = new OpenLayers . Bounds ( Math . round ( c ) , Math . round ( d ) , Math . round ( a ) , Math . round ( b ) ) } , getRectBoundsFromMapBounds : function ( a ) { var b = this . getOverviewPxFromLonLat ( { lon : a . left , lat : a . bottom } ) , a = this . getOverviewPxFromLonLat ( { lon : a . right ,
lat : a . top } ) , c = null ; b && a && ( c = new OpenLayers . Bounds ( b . x , b . y , a . x , a . y ) ) ; return c } , getMapBoundsFromRectBounds : function ( a ) { var b = this . getLonLatFromOverviewPx ( { x : a . left , y : a . bottom } ) , a = this . getLonLatFromOverviewPx ( { x : a . right , y : a . top } ) ; return new OpenLayers . Bounds ( b . lon , b . lat , a . lon , a . lat ) } , getLonLatFromOverviewPx : function ( a ) { var b = this . ovmap . size , c = this . ovmap . getResolution ( ) , d = this . ovmap . getExtent ( ) . getCenterLonLat ( ) ; return { lon : d . lon + ( a . x - b . w / 2 ) * c , lat : d . lat - ( a . y - b . h / 2 ) * c } } , getOverviewPxFromLonLat : function ( a ) { var b =
this . ovmap . getResolution ( ) , c = this . ovmap . getExtent ( ) ; if ( c ) return { x : Math . round ( 1 / b * ( a . lon - c . left ) ) , y : Math . round ( 1 / b * ( c . top - a . lat ) ) } } , CLASS _NAME : "OpenLayers.Control.OverviewMap" } ) ; OpenLayers . Animation = function ( a ) { var b = ! ( ! a . requestAnimationFrame && ! a . webkitRequestAnimationFrame && ! a . mozRequestAnimationFrame && ! a . oRequestAnimationFrame && ! a . msRequestAnimationFrame ) , c = function ( ) { var b = a . requestAnimationFrame || a . webkitRequestAnimationFrame || a . mozRequestAnimationFrame || a . oRequestAnimationFrame || a . msRequestAnimationFrame || function ( b ) { a . setTimeout ( b , 16 ) } ; return function ( c , d ) { b . apply ( a , [ c , d ] ) } } ( ) , d = 0 , e = { } ; return { isNative : b , requestFrame : c , start : function ( a , b , h ) { var b = 0 < b ? b : Number . POSITIVE _INFINITY ,
i = ++ d , j = + new Date ; e [ i ] = function ( ) { e [ i ] && + new Date - j <= b ? ( a ( ) , e [ i ] && c ( e [ i ] , h ) ) : delete e [ i ] } ; c ( e [ i ] , h ) ; return i } , stop : function ( a ) { delete e [ a ] } } } ( window ) ; OpenLayers . Tween = OpenLayers . Class ( { easing : null , begin : null , finish : null , duration : null , callbacks : null , time : null , animationId : null , playing : ! 1 , initialize : function ( a ) { this . easing = a ? a : OpenLayers . Easing . Expo . easeOut } , start : function ( a , b , c , d ) { this . playing = ! 0 ; this . begin = a ; this . finish = b ; this . duration = c ; this . callbacks = d . callbacks ; this . time = 0 ; OpenLayers . Animation . stop ( this . animationId ) ; this . animationId = null ; this . callbacks && this . callbacks . start && this . callbacks . start . call ( this , this . begin ) ; this . animationId = OpenLayers . Animation . start ( OpenLayers . Function . bind ( this . play ,
this ) ) } , stop : function ( ) { this . playing && ( this . callbacks && this . callbacks . done && this . callbacks . done . call ( this , this . finish ) , OpenLayers . Animation . stop ( this . animationId ) , this . animationId = null , this . playing = ! 1 ) } , play : function ( ) { var a = { } , b ; for ( b in this . begin ) { var c = this . begin [ b ] , d = this . finish [ b ] ; if ( null == c || null == d || isNaN ( c ) || isNaN ( d ) ) throw new TypeError ( "invalid value for Tween" ) ; a [ b ] = this . easing . apply ( this , [ this . time , c , d - c , this . duration ] ) } this . time ++ ; this . callbacks && this . callbacks . eachStep && this . callbacks . eachStep . call ( this ,
a ) ; this . time > this . duration && this . stop ( ) } , CLASS _NAME : "OpenLayers.Tween" } ) ; OpenLayers . Easing = { CLASS _NAME : "OpenLayers.Easing" } ; OpenLayers . Easing . Linear = { easeIn : function ( a , b , c , d ) { return c * a / d + b } , easeOut : function ( a , b , c , d ) { return c * a / d + b } , easeInOut : function ( a , b , c , d ) { return c * a / d + b } , CLASS _NAME : "OpenLayers.Easing.Linear" } ;
OpenLayers . Easing . Expo = { easeIn : function ( a , b , c , d ) { return 0 == a ? b : c * Math . pow ( 2 , 10 * ( a / d - 1 ) ) + b } , easeOut : function ( a , b , c , d ) { return a == d ? b + c : c * ( - Math . pow ( 2 , - 10 * a / d ) + 1 ) + b } , easeInOut : function ( a , b , c , d ) { return 0 == a ? b : a == d ? b + c : 1 > ( a /= d / 2 ) ? c / 2 * Math . pow ( 2 , 10 * ( a - 1 ) ) + b : c / 2 * ( - Math . pow ( 2 , - 10 * -- a ) + 2 ) + b } , CLASS _NAME : "OpenLayers.Easing.Expo" } ;
OpenLayers . Easing . Quad = { easeIn : function ( a , b , c , d ) { return c * ( a /= d ) * a + b } , easeOut : function ( a , b , c , d ) { return - c * ( a /= d ) * ( a - 2 ) + b } , easeInOut : function ( a , b , c , d ) { return 1 > ( a /= d / 2 ) ? c / 2 * a * a + b : - c / 2 * ( -- a * ( a - 2 ) - 1 ) + b } , CLASS _NAME : "OpenLayers.Easing.Quad" } ; OpenLayers . Projection = OpenLayers . Class ( { proj : null , projCode : null , titleRegEx : /\+title=[^\+]*/ , initialize : function ( a , b ) { OpenLayers . Util . extend ( this , b ) ; this . projCode = a ; window . Proj4js && ( this . proj = new Proj4js . Proj ( a ) ) } , getCode : function ( ) { return this . proj ? this . proj . srsCode : this . projCode } , getUnits : function ( ) { return this . proj ? this . proj . units : null } , toString : function ( ) { return this . getCode ( ) } , equals : function ( a ) { var b = ! 1 ; a && ( a instanceof OpenLayers . Projection || ( a = new OpenLayers . Projection ( a ) ) , window . Proj4js &&
this . proj . defData && a . proj . defData ? b = this . proj . defData . replace ( this . titleRegEx , "" ) == a . proj . defData . replace ( this . titleRegEx , "" ) : a . getCode && ( b = this . getCode ( ) , a = a . getCode ( ) , b = b == a || ! ! OpenLayers . Projection . transforms [ b ] && OpenLayers . Projection . transforms [ b ] [ a ] === OpenLayers . Projection . nullTransform ) ) ; return b } , destroy : function ( ) { delete this . proj ; delete this . projCode } , CLASS _NAME : "OpenLayers.Projection" } ) ; OpenLayers . Projection . transforms = { } ;
OpenLayers . Projection . defaults = { "EPSG:4326" : { units : "degrees" , maxExtent : [ - 180 , - 90 , 180 , 90 ] , yx : ! 0 } , "CRS:84" : { units : "degrees" , maxExtent : [ - 180 , - 90 , 180 , 90 ] } , "EPSG:900913" : { units : "m" , maxExtent : [ - 2.003750834 E7 , - 2.003750834 E7 , 2.003750834 E7 , 2.003750834 E7 ] } } ;
OpenLayers . Projection . addTransform = function ( a , b , c ) { if ( c === OpenLayers . Projection . nullTransform ) { var d = OpenLayers . Projection . defaults [ a ] ; d && ! OpenLayers . Projection . defaults [ b ] && ( OpenLayers . Projection . defaults [ b ] = d ) } OpenLayers . Projection . transforms [ a ] || ( OpenLayers . Projection . transforms [ a ] = { } ) ; OpenLayers . Projection . transforms [ a ] [ b ] = c } ;
OpenLayers . Projection . transform = function ( a , b , c ) { if ( b && c ) if ( b instanceof OpenLayers . Projection || ( b = new OpenLayers . Projection ( b ) ) , c instanceof OpenLayers . Projection || ( c = new OpenLayers . Projection ( c ) ) , b . proj && c . proj ) a = Proj4js . transform ( b . proj , c . proj , a ) ; else { var b = b . getCode ( ) , c = c . getCode ( ) , d = OpenLayers . Projection . transforms ; if ( d [ b ] && d [ b ] [ c ] ) d [ b ] [ c ] ( a ) } return a } ; OpenLayers . Projection . nullTransform = function ( a ) { return a } ;
( function ( ) { function a ( a ) { a . x = 180 * a . x / d ; a . y = 180 / Math . PI * ( 2 * Math . atan ( Math . exp ( a . y / d * Math . PI ) ) - Math . PI / 2 ) ; return a } function b ( a ) { a . x = a . x * d / 180 ; a . y = Math . log ( Math . tan ( ( 90 + a . y ) * Math . PI / 360 ) ) / Math . PI * d ; return a } function c ( c , d ) { var e = OpenLayers . Projection . addTransform , f = OpenLayers . Projection . nullTransform , g , m , n , o , p ; g = 0 ; for ( m = d . length ; g < m ; ++ g ) { n = d [ g ] ; e ( c , n , b ) ; e ( n , c , a ) ; for ( p = g + 1 ; p < m ; ++ p ) o = d [ p ] , e ( n , o , f ) , e ( o , n , f ) } } var d = 2.003750834 E7 , e = [ "EPSG:900913" , "EPSG:3857" , "EPSG:102113" , "EPSG:102100" ] , f = [ "CRS:84" , "urn:ogc:def:crs:EPSG:6.6:4326" ,
"EPSG:4326" ] , g ; for ( g = e . length - 1 ; 0 <= g ; -- g ) c ( e [ g ] , f ) ; for ( g = f . length - 1 ; 0 <= g ; -- g ) c ( f [ g ] , e ) } ) ( ) ; OpenLayers . Map = OpenLayers . Class ( { Z _INDEX _BASE : { BaseLayer : 100 , Overlay : 325 , Feature : 725 , Popup : 750 , Control : 1E3 } , id : null , fractionalZoom : ! 1 , events : null , allOverlays : ! 1 , div : null , dragging : ! 1 , size : null , viewPortDiv : null , layerContainerOrigin : null , layerContainerDiv : null , layers : null , controls : null , popups : null , baseLayer : null , center : null , resolution : null , zoom : 0 , panRatio : 1.5 , options : null , tileSize : null , projection : "EPSG:4326" , units : null , resolutions : null , maxResolution : null , minResolution : null , maxScale : null , minScale : null ,
maxExtent : null , minExtent : null , restrictedExtent : null , numZoomLevels : 16 , theme : null , displayProjection : null , fallThrough : ! 0 , panTween : null , eventListeners : null , panMethod : OpenLayers . Easing . Expo . easeOut , panDuration : 50 , paddingForPopups : null , minPx : null , maxPx : null , initialize : function ( a , b ) { 1 === arguments . length && "object" === typeof a && ( a = ( b = a ) && b . div ) ; this . tileSize = new OpenLayers . Size ( OpenLayers . Map . TILE _WIDTH , OpenLayers . Map . TILE _HEIGHT ) ; this . paddingForPopups = new OpenLayers . Bounds ( 15 , 15 , 15 , 15 ) ; this . theme = OpenLayers . _getScriptLocation ( ) +
"theme/default/style.css" ; this . options = OpenLayers . Util . extend ( { } , b ) ; OpenLayers . Util . extend ( this , b ) ; OpenLayers . Util . applyDefaults ( this , OpenLayers . Projection . defaults [ this . projection instanceof OpenLayers . Projection ? this . projection . projCode : this . projection ] ) ; this . maxExtent && ! ( this . maxExtent instanceof OpenLayers . Bounds ) && ( this . maxExtent = new OpenLayers . Bounds ( this . maxExtent ) ) ; this . minExtent && ! ( this . minExtent instanceof OpenLayers . Bounds ) && ( this . minExtent = new OpenLayers . Bounds ( this . minExtent ) ) ; this . restrictedExtent &&
! ( this . restrictedExtent instanceof OpenLayers . Bounds ) && ( this . restrictedExtent = new OpenLayers . Bounds ( this . restrictedExtent ) ) ; this . center && ! ( this . center instanceof OpenLayers . LonLat ) && ( this . center = new OpenLayers . LonLat ( this . center ) ) ; this . layers = [ ] ; this . id = OpenLayers . Util . createUniqueID ( "OpenLayers.Map_" ) ; this . div = OpenLayers . Util . getElement ( a ) ; this . div || ( this . div = document . createElement ( "div" ) , this . div . style . height = "1px" , this . div . style . width = "1px" ) ; OpenLayers . Element . addClass ( this . div , "olMap" ) ; var c =
this . id + "_OpenLayers_ViewPort" ; this . viewPortDiv = OpenLayers . Util . createDiv ( c , null , null , null , "relative" , null , "hidden" ) ; this . viewPortDiv . style . width = "100%" ; this . viewPortDiv . style . height = "100%" ; this . viewPortDiv . className = "olMapViewport" ; this . div . appendChild ( this . viewPortDiv ) ; this . events = new OpenLayers . Events ( this , this . viewPortDiv , null , this . fallThrough , { includeXY : ! 0 } ) ; c = this . id + "_OpenLayers_Container" ; this . layerContainerDiv = OpenLayers . Util . createDiv ( c ) ; this . layerContainerDiv . style . width = "100px" ; this . layerContainerDiv . style . height =
"100px" ; this . layerContainerDiv . style . zIndex = this . Z _INDEX _BASE . Popup - 1 ; this . viewPortDiv . appendChild ( this . layerContainerDiv ) ; this . updateSize ( ) ; if ( this . eventListeners instanceof Object ) this . events . on ( this . eventListeners ) ; 9 > parseFloat ( navigator . appVersion . split ( "MSIE" ) [ 1 ] ) ? this . events . register ( "resize" , this , this . updateSize ) : ( this . updateSizeDestroy = OpenLayers . Function . bind ( this . updateSize , this ) , OpenLayers . Event . observe ( window , "resize" , this . updateSizeDestroy ) ) ; if ( this . theme ) { for ( var c = ! 0 , d = document . getElementsByTagName ( "link" ) ,
e = 0 , f = d . length ; e < f ; ++ e ) if ( OpenLayers . Util . isEquivalentUrl ( d . item ( e ) . href , this . theme ) ) { c = ! 1 ; break } c && ( c = document . createElement ( "link" ) , c . setAttribute ( "rel" , "stylesheet" ) , c . setAttribute ( "type" , "text/css" ) , c . setAttribute ( "href" , this . theme ) , document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( c ) ) } null == this . controls && ( this . controls = [ ] , null != OpenLayers . Control && ( OpenLayers . Control . Navigation ? this . controls . push ( new OpenLayers . Control . Navigation ) : OpenLayers . Control . TouchNavigation && this . controls . push ( new OpenLayers . Control . TouchNavigation ) ,
OpenLayers . Control . Zoom ? this . controls . push ( new OpenLayers . Control . Zoom ) : OpenLayers . Control . PanZoom && this . controls . push ( new OpenLayers . Control . PanZoom ) , OpenLayers . Control . ArgParser && this . controls . push ( new OpenLayers . Control . ArgParser ) , OpenLayers . Control . Attribution && this . controls . push ( new OpenLayers . Control . Attribution ) ) ) ; e = 0 ; for ( f = this . controls . length ; e < f ; e ++ ) this . addControlToMap ( this . controls [ e ] ) ; this . popups = [ ] ; this . unloadDestroy = OpenLayers . Function . bind ( this . destroy , this ) ; OpenLayers . Event . observe ( window ,
"unload" , this . unloadDestroy ) ; b && b . layers && ( delete this . center , this . addLayers ( b . layers ) , b . center && ! this . getCenter ( ) && this . setCenter ( b . center , b . zoom ) ) } , getViewport : function ( ) { return this . viewPortDiv } , render : function ( a ) { this . div = OpenLayers . Util . getElement ( a ) ; OpenLayers . Element . addClass ( this . div , "olMap" ) ; this . viewPortDiv . parentNode . removeChild ( this . viewPortDiv ) ; this . div . appendChild ( this . viewPortDiv ) ; this . updateSize ( ) } , unloadDestroy : null , updateSizeDestroy : null , destroy : function ( ) { if ( ! this . unloadDestroy ) return ! 1 ;
this . panTween && ( this . panTween . stop ( ) , this . panTween = null ) ; OpenLayers . Event . stopObserving ( window , "unload" , this . unloadDestroy ) ; this . unloadDestroy = null ; this . updateSizeDestroy ? OpenLayers . Event . stopObserving ( window , "resize" , this . updateSizeDestroy ) : this . events . unregister ( "resize" , this , this . updateSize ) ; this . paddingForPopups = null ; if ( null != this . controls ) { for ( var a = this . controls . length - 1 ; 0 <= a ; -- a ) this . controls [ a ] . destroy ( ) ; this . controls = null } if ( null != this . layers ) { for ( a = this . layers . length - 1 ; 0 <= a ; -- a ) this . layers [ a ] . destroy ( ! 1 ) ;
this . layers = null } this . viewPortDiv && this . div . removeChild ( this . viewPortDiv ) ; this . viewPortDiv = null ; this . eventListeners && ( this . events . un ( this . eventListeners ) , this . eventListeners = null ) ; this . events . destroy ( ) ; this . options = this . events = null } , setOptions : function ( a ) { var b = this . minPx && a . restrictedExtent != this . restrictedExtent ; OpenLayers . Util . extend ( this , a ) ; b && this . moveTo ( this . getCachedCenter ( ) , this . zoom , { forceZoomChange : ! 0 } ) } , getTileSize : function ( ) { return this . tileSize } , getBy : function ( a , b , c ) { var d = "function" ==
typeof c . test ; return OpenLayers . Array . filter ( this [ a ] , function ( a ) { return a [ b ] == c || d && c . test ( a [ b ] ) } ) } , getLayersBy : function ( a , b ) { return this . getBy ( "layers" , a , b ) } , getLayersByName : function ( a ) { return this . getLayersBy ( "name" , a ) } , getLayersByClass : function ( a ) { return this . getLayersBy ( "CLASS_NAME" , a ) } , getControlsBy : function ( a , b ) { return this . getBy ( "controls" , a , b ) } , getControlsByClass : function ( a ) { return this . getControlsBy ( "CLASS_NAME" , a ) } , getLayer : function ( a ) { for ( var b = null , c = 0 , d = this . layers . length ; c < d ; c ++ ) { var e =
this . layers [ c ] ; if ( e . id == a ) { b = e ; break } } return b } , setLayerZIndex : function ( a , b ) { a . setZIndex ( this . Z _INDEX _BASE [ a . isBaseLayer ? "BaseLayer" : "Overlay" ] + 5 * b ) } , resetLayersZIndex : function ( ) { for ( var a = 0 , b = this . layers . length ; a < b ; a ++ ) this . setLayerZIndex ( this . layers [ a ] , a ) } , addLayer : function ( a ) { for ( var b = 0 , c = this . layers . length ; b < c ; b ++ ) if ( this . layers [ b ] == a ) return ! 1 ; if ( ! 1 === this . events . triggerEvent ( "preaddlayer" , { layer : a } ) ) return ! 1 ; this . allOverlays && ( a . isBaseLayer = ! 1 ) ; a . div . className = "olLayerDiv" ; a . div . style . overflow =
"" ; this . setLayerZIndex ( a , this . layers . length ) ; a . isFixed ? this . viewPortDiv . appendChild ( a . div ) : this . layerContainerDiv . appendChild ( a . div ) ; this . layers . push ( a ) ; a . setMap ( this ) ; a . isBaseLayer || this . allOverlays && ! this . baseLayer ? null == this . baseLayer ? this . setBaseLayer ( a ) : a . setVisibility ( ! 1 ) : a . redraw ( ) ; this . events . triggerEvent ( "addlayer" , { layer : a } ) ; a . events . triggerEvent ( "added" , { map : this , layer : a } ) ; a . afterAdd ( ) ; return ! 0 } , addLayers : function ( a ) { for ( var b = 0 , c = a . length ; b < c ; b ++ ) this . addLayer ( a [ b ] ) } , removeLayer : function ( a ,
b ) { if ( ! 1 !== this . events . triggerEvent ( "preremovelayer" , { layer : a } ) ) { null == b && ( b = ! 0 ) ; a . isFixed ? this . viewPortDiv . removeChild ( a . div ) : this . layerContainerDiv . removeChild ( a . div ) ; OpenLayers . Util . removeItem ( this . layers , a ) ; a . removeMap ( this ) ; a . map = null ; if ( this . baseLayer == a && ( this . baseLayer = null , b ) ) for ( var c = 0 , d = this . layers . length ; c < d ; c ++ ) { var e = this . layers [ c ] ; if ( e . isBaseLayer || this . allOverlays ) { this . setBaseLayer ( e ) ; break } } this . resetLayersZIndex ( ) ; this . events . triggerEvent ( "removelayer" , { layer : a } ) ; a . events . triggerEvent ( "removed" ,
{ map : this , layer : a } ) } } , getNumLayers : function ( ) { return this . layers . length } , getLayerIndex : function ( a ) { return OpenLayers . Util . indexOf ( this . layers , a ) } , setLayerIndex : function ( a , b ) { var c = this . getLayerIndex ( a ) ; 0 > b ? b = 0 : b > this . layers . length && ( b = this . layers . length ) ; if ( c != b ) { this . layers . splice ( c , 1 ) ; this . layers . splice ( b , 0 , a ) ; for ( var c = 0 , d = this . layers . length ; c < d ; c ++ ) this . setLayerZIndex ( this . layers [ c ] , c ) ; this . events . triggerEvent ( "changelayer" , { layer : a , property : "order" } ) ; this . allOverlays && ( 0 === b ? this . setBaseLayer ( a ) :
this . baseLayer !== this . layers [ 0 ] && this . setBaseLayer ( this . layers [ 0 ] ) ) } } , raiseLayer : function ( a , b ) { var c = this . getLayerIndex ( a ) + b ; this . setLayerIndex ( a , c ) } , setBaseLayer : function ( a ) { if ( a != this . baseLayer && - 1 != OpenLayers . Util . indexOf ( this . layers , a ) ) { var b = this . getCachedCenter ( ) , c = OpenLayers . Util . getResolutionFromScale ( this . getScale ( ) , a . units ) ; null != this . baseLayer && ! this . allOverlays && this . baseLayer . setVisibility ( ! 1 ) ; this . baseLayer = a ; if ( ! this . allOverlays || this . baseLayer . visibility ) this . baseLayer . setVisibility ( ! 0 ) ,
! 1 === this . baseLayer . inRange && this . baseLayer . redraw ( ) ; null != b && ( a = this . getZoomForResolution ( c || this . resolution , ! 0 ) , this . setCenter ( b , a , ! 1 , ! 0 ) ) ; this . events . triggerEvent ( "changebaselayer" , { layer : this . baseLayer } ) } } , addControl : function ( a , b ) { this . controls . push ( a ) ; this . addControlToMap ( a , b ) } , addControls : function ( a , b ) { for ( var c = 1 === arguments . length ? [ ] : b , d = 0 , e = a . length ; d < e ; d ++ ) this . addControl ( a [ d ] , c [ d ] ? c [ d ] : null ) } , addControlToMap : function ( a , b ) { a . outsideViewport = null != a . div ; this . displayProjection && ! a . displayProjection &&
( a . displayProjection = this . displayProjection ) ; a . setMap ( this ) ; var c = a . draw ( b ) ; c && ! a . outsideViewport && ( c . style . zIndex = this . Z _INDEX _BASE . Control + this . controls . length , this . viewPortDiv . appendChild ( c ) ) ; a . autoActivate && a . activate ( ) } , getControl : function ( a ) { for ( var b = null , c = 0 , d = this . controls . length ; c < d ; c ++ ) { var e = this . controls [ c ] ; if ( e . id == a ) { b = e ; break } } return b } , removeControl : function ( a ) { a && a == this . getControl ( a . id ) && ( a . div && a . div . parentNode == this . viewPortDiv && this . viewPortDiv . removeChild ( a . div ) , OpenLayers . Util . removeItem ( this . controls ,
a ) ) } , addPopup : function ( a , b ) { if ( b ) for ( var c = this . popups . length - 1 ; 0 <= c ; -- c ) this . removePopup ( this . popups [ c ] ) ; a . map = this ; this . popups . push ( a ) ; if ( c = a . draw ( ) ) c . style . zIndex = this . Z _INDEX _BASE . Popup + this . popups . length , this . layerContainerDiv . appendChild ( c ) } , removePopup : function ( a ) { OpenLayers . Util . removeItem ( this . popups , a ) ; if ( a . div ) try { this . layerContainerDiv . removeChild ( a . div ) } catch ( b ) { } a . map = null } , getSize : function ( ) { var a = null ; null != this . size && ( a = this . size . clone ( ) ) ; return a } , updateSize : function ( ) { var a = this . getCurrentSize ( ) ;
if ( a && ! isNaN ( a . h ) && ! isNaN ( a . w ) ) { this . events . clearMouseCache ( ) ; var b = this . getSize ( ) ; null == b && ( this . size = b = a ) ; if ( ! a . equals ( b ) ) { this . size = a ; a = 0 ; for ( b = this . layers . length ; a < b ; a ++ ) this . layers [ a ] . onMapResize ( ) ; a = this . getCachedCenter ( ) ; null != this . baseLayer && null != a && ( b = this . getZoom ( ) , this . zoom = null , this . setCenter ( a , b ) ) } } } , getCurrentSize : function ( ) { var a = new OpenLayers . Size ( this . div . clientWidth , this . div . clientHeight ) ; if ( 0 == a . w && 0 == a . h || isNaN ( a . w ) && isNaN ( a . h ) ) a . w = this . div . offsetWidth , a . h = this . div . offsetHeight ;
if ( 0 == a . w && 0 == a . h || isNaN ( a . w ) && isNaN ( a . h ) ) a . w = parseInt ( this . div . style . width ) , a . h = parseInt ( this . div . style . height ) ; return a } , calculateBounds : function ( a , b ) { var c = null ; null == a && ( a = this . getCachedCenter ( ) ) ; null == b && ( b = this . getResolution ( ) ) ; if ( null != a && null != b ) var c = this . size . w * b / 2 , d = this . size . h * b / 2 , c = new OpenLayers . Bounds ( a . lon - c , a . lat - d , a . lon + c , a . lat + d ) ; return c } , getCenter : function ( ) { var a = null , b = this . getCachedCenter ( ) ; b && ( a = b . clone ( ) ) ; return a } , getCachedCenter : function ( ) { ! this . center && this . size && ( this . center =
this . getLonLatFromViewPortPx ( { x : this . size . w / 2 , y : this . size . h / 2 } ) ) ; return this . center } , getZoom : function ( ) { return this . zoom } , pan : function ( a , b , c ) { c = OpenLayers . Util . applyDefaults ( c , { animate : ! 0 , dragging : ! 1 } ) ; if ( c . dragging ) ( 0 != a || 0 != b ) && this . moveByPx ( a , b ) ; else { var d = this . getViewPortPxFromLonLat ( this . getCachedCenter ( ) ) , a = d . add ( a , b ) ; if ( this . dragging || ! a . equals ( d ) ) d = this . getLonLatFromViewPortPx ( a ) , c . animate ? this . panTo ( d ) : ( this . moveTo ( d ) , this . dragging && ( this . dragging = ! 1 , this . events . triggerEvent ( "moveend" ) ) ) } } ,
panTo : function ( a ) { if ( this . panMethod && this . getExtent ( ) . scale ( this . panRatio ) . containsLonLat ( a ) ) { this . panTween || ( this . panTween = new OpenLayers . Tween ( this . panMethod ) ) ; var b = this . getCachedCenter ( ) ; if ( ! a . equals ( b ) ) { var b = this . getPixelFromLonLat ( b ) , c = this . getPixelFromLonLat ( a ) , d = 0 , e = 0 ; this . panTween . start ( { x : 0 , y : 0 } , { x : c . x - b . x , y : c . y - b . y } , this . panDuration , { callbacks : { eachStep : OpenLayers . Function . bind ( function ( a ) { this . moveByPx ( a . x - d , a . y - e ) ; d = Math . round ( a . x ) ; e = Math . round ( a . y ) } , this ) , done : OpenLayers . Function . bind ( function ( ) { this . moveTo ( a ) ;
this . dragging = false ; this . events . triggerEvent ( "moveend" ) } , this ) } } ) } } else this . setCenter ( a ) } , setCenter : function ( a , b , c , d ) { this . panTween && this . panTween . stop ( ) ; this . moveTo ( a , b , { dragging : c , forceZoomChange : d } ) } , moveByPx : function ( a , b ) { var c = this . size . w / 2 , d = this . size . h / 2 , e = c + a , f = d + b , g = this . baseLayer . wrapDateLine , h = 0 , i = 0 ; this . restrictedExtent && ( h = c , i = d , g = ! 1 ) ; a = g || e <= this . maxPx . x - h && e >= this . minPx . x + h ? Math . round ( a ) : 0 ; b = f <= this . maxPx . y - i && f >= this . minPx . y + i ? Math . round ( b ) : 0 ; if ( a || b ) { this . dragging || ( this . dragging =
! 0 , this . events . triggerEvent ( "movestart" ) ) ; this . center = null ; a && ( this . layerContainerDiv . style . left = parseInt ( this . layerContainerDiv . style . left ) - a + "px" , this . minPx . x -= a , this . maxPx . x -= a ) ; b && ( this . layerContainerDiv . style . top = parseInt ( this . layerContainerDiv . style . top ) - b + "px" , this . minPx . y -= b , this . maxPx . y -= b ) ; d = 0 ; for ( e = this . layers . length ; d < e ; ++ d ) if ( c = this . layers [ d ] , c . visibility && ( c === this . baseLayer || c . inRange ) ) c . moveByPx ( a , b ) , c . events . triggerEvent ( "move" ) ; this . events . triggerEvent ( "move" ) } } , adjustZoom : function ( a ) { var b =
this . baseLayer . resolutions , c = this . getMaxExtent ( ) . getWidth ( ) / this . size . w ; if ( this . getResolutionForZoom ( a ) > c ) for ( var d = a | 0 , e = b . length ; d < e ; ++ d ) if ( b [ d ] <= c ) { a = d ; break } return a } , moveTo : function ( a , b , c ) { null != a && ! ( a instanceof OpenLayers . LonLat ) && ( a = new OpenLayers . LonLat ( a ) ) ; c || ( c = { } ) ; null != b && ( b = parseFloat ( b ) , this . fractionalZoom || ( b = Math . round ( b ) ) ) ; if ( this . baseLayer . wrapDateLine ) { var d = b , b = this . adjustZoom ( b ) ; b !== d && ( a = this . getCenter ( ) ) } var d = c . dragging || this . dragging , e = c . forceZoomChange ; ! this . getCachedCenter ( ) &&
! this . isValidLonLat ( a ) && ( a = this . maxExtent . getCenterLonLat ( ) , this . center = a . clone ( ) ) ; if ( null != this . restrictedExtent ) { null == a && ( a = this . center ) ; null == b && ( b = this . getZoom ( ) ) ; var f = this . getResolutionForZoom ( b ) , f = this . calculateBounds ( a , f ) ; if ( ! this . restrictedExtent . containsBounds ( f ) ) { var g = this . restrictedExtent . getCenterLonLat ( ) ; f . getWidth ( ) > this . restrictedExtent . getWidth ( ) ? a = new OpenLayers . LonLat ( g . lon , a . lat ) : f . left < this . restrictedExtent . left ? a = a . add ( this . restrictedExtent . left - f . left , 0 ) : f . right > this . restrictedExtent . right &&
( a = a . add ( this . restrictedExtent . right - f . right , 0 ) ) ; f . getHeight ( ) > this . restrictedExtent . getHeight ( ) ? a = new OpenLayers . LonLat ( a . lon , g . lat ) : f . bottom < this . restrictedExtent . bottom ? a = a . add ( 0 , this . restrictedExtent . bottom - f . bottom ) : f . top > this . restrictedExtent . top && ( a = a . add ( 0 , this . restrictedExtent . top - f . top ) ) } } e = e || this . isValidZoomLevel ( b ) && b != this . getZoom ( ) ; f = this . isValidLonLat ( a ) && ! a . equals ( this . center ) ; if ( e || f || d ) { d || this . events . triggerEvent ( "movestart" ) ; f && ( ! e && this . center && this . centerLayerContainer ( a ) , this . center =
a . clone ( ) ) ; a = e ? this . getResolutionForZoom ( b ) : this . getResolution ( ) ; if ( e || null == this . layerContainerOrigin ) { this . layerContainerOrigin = this . getCachedCenter ( ) ; this . layerContainerDiv . style . left = "0px" ; this . layerContainerDiv . style . top = "0px" ; var f = this . getMaxExtent ( { restricted : ! 0 } ) , h = f . getCenterLonLat ( ) , g = this . center . lon - h . lon , h = h . lat - this . center . lat , i = Math . round ( f . getWidth ( ) / a ) , j = Math . round ( f . getHeight ( ) / a ) ; this . minPx = { x : ( this . size . w - i ) / 2 - g / a , y : ( this . size . h - j ) / 2 - h / a } ; this . maxPx = { x : this . minPx . x + Math . round ( f . getWidth ( ) /
a ) , y : this . minPx . y + Math . round ( f . getHeight ( ) / a ) } } e && ( this . zoom = b , this . resolution = a ) ; a = this . getExtent ( ) ; this . baseLayer . visibility && ( this . baseLayer . moveTo ( a , e , c . dragging ) , c . dragging || this . baseLayer . events . triggerEvent ( "moveend" , { zoomChanged : e } ) ) ; a = this . baseLayer . getExtent ( ) ; for ( b = this . layers . length - 1 ; 0 <= b ; -- b ) if ( f = this . layers [ b ] , f !== this . baseLayer && ! f . isBaseLayer && ( g = f . calculateInRange ( ) , f . inRange != g && ( ( f . inRange = g ) || f . display ( ! 1 ) , this . events . triggerEvent ( "changelayer" , { layer : f , property : "visibility" } ) ) ,
g && f . visibility ) ) f . moveTo ( a , e , c . dragging ) , c . dragging || f . events . triggerEvent ( "moveend" , { zoomChanged : e } ) ; this . events . triggerEvent ( "move" ) ; d || this . events . triggerEvent ( "moveend" ) ; if ( e ) { b = 0 ; for ( c = this . popups . length ; b < c ; b ++ ) this . popups [ b ] . updatePosition ( ) ; this . events . triggerEvent ( "zoomend" ) } } } , centerLayerContainer : function ( a ) { var b = this . getViewPortPxFromLonLat ( this . layerContainerOrigin ) , c = this . getViewPortPxFromLonLat ( a ) ; if ( null != b && null != c ) { var d = parseInt ( this . layerContainerDiv . style . left ) , a = parseInt ( this . layerContainerDiv . style . top ) ,
e = Math . round ( b . x - c . x ) , b = Math . round ( b . y - c . y ) ; this . layerContainerDiv . style . left = e + "px" ; this . layerContainerDiv . style . top = b + "px" ; d -= e ; a -= b ; this . minPx . x -= d ; this . maxPx . x -= d ; this . minPx . y -= a ; this . maxPx . y -= a } } , isValidZoomLevel : function ( a ) { return null != a && 0 <= a && a < this . getNumZoomLevels ( ) } , isValidLonLat : function ( a ) { var b = ! 1 ; null != a && ( b = this . getMaxExtent ( ) , b = b . containsLonLat ( a , { worldBounds : this . baseLayer . wrapDateLine && b } ) ) ; return b } , getProjection : function ( ) { var a = this . getProjectionObject ( ) ; return a ? a . getCode ( ) :
null } , getProjectionObject : function ( ) { var a = null ; null != this . baseLayer && ( a = this . baseLayer . projection ) ; return a } , getMaxResolution : function ( ) { var a = null ; null != this . baseLayer && ( a = this . baseLayer . maxResolution ) ; return a } , getMaxExtent : function ( a ) { var b = null ; a && a . restricted && this . restrictedExtent ? b = this . restrictedExtent : null != this . baseLayer && ( b = this . baseLayer . maxExtent ) ; return b } , getNumZoomLevels : function ( ) { var a = null ; null != this . baseLayer && ( a = this . baseLayer . numZoomLevels ) ; return a } , getExtent : function ( ) { var a =
null ; null != this . baseLayer && ( a = this . baseLayer . getExtent ( ) ) ; return a } , getResolution : function ( ) { var a = null ; null != this . baseLayer ? a = this . baseLayer . getResolution ( ) : ! 0 === this . allOverlays && 0 < this . layers . length && ( a = this . layers [ 0 ] . getResolution ( ) ) ; return a } , getUnits : function ( ) { var a = null ; null != this . baseLayer && ( a = this . baseLayer . units ) ; return a } , getScale : function ( ) { var a = null ; null != this . baseLayer && ( a = this . getResolution ( ) , a = OpenLayers . Util . getScaleFromResolution ( a , this . baseLayer . units ) ) ; return a } , getZoomForExtent : function ( a ,
b ) { var c = null ; null != this . baseLayer && ( c = this . baseLayer . getZoomForExtent ( a , b ) ) ; return c } , getResolutionForZoom : function ( a ) { var b = null ; this . baseLayer && ( b = this . baseLayer . getResolutionForZoom ( a ) ) ; return b } , getZoomForResolution : function ( a , b ) { var c = null ; null != this . baseLayer && ( c = this . baseLayer . getZoomForResolution ( a , b ) ) ; return c } , zoomTo : function ( a ) { this . isValidZoomLevel ( a ) && this . setCenter ( null , a ) } , zoomIn : function ( ) { this . zoomTo ( this . getZoom ( ) + 1 ) } , zoomOut : function ( ) { this . zoomTo ( this . getZoom ( ) - 1 ) } , zoomToExtent : function ( a ,
b ) { a instanceof OpenLayers . Bounds || ( a = new OpenLayers . Bounds ( a ) ) ; var c = a . getCenterLonLat ( ) ; if ( this . baseLayer . wrapDateLine ) { c = this . getMaxExtent ( ) ; for ( a = a . clone ( ) ; a . right < a . left ; ) a . right += c . getWidth ( ) ; c = a . getCenterLonLat ( ) . wrapDateLine ( c ) } this . setCenter ( c , this . getZoomForExtent ( a , b ) ) } , zoomToMaxExtent : function ( a ) { this . zoomToExtent ( this . getMaxExtent ( { restricted : a ? a . restricted : ! 0 } ) ) } , zoomToScale : function ( a , b ) { var c = OpenLayers . Util . getResolutionFromScale ( a , this . baseLayer . units ) , d = this . size . w * c / 2 , c = this . size . h *
c / 2 , e = this . getCachedCenter ( ) ; this . zoomToExtent ( new OpenLayers . Bounds ( e . lon - d , e . lat - c , e . lon + d , e . lat + c ) , b ) } , getLonLatFromViewPortPx : function ( a ) { var b = null ; null != this . baseLayer && ( b = this . baseLayer . getLonLatFromViewPortPx ( a ) ) ; return b } , getViewPortPxFromLonLat : function ( a ) { var b = null ; null != this . baseLayer && ( b = this . baseLayer . getViewPortPxFromLonLat ( a ) ) ; return b } , getLonLatFromPixel : function ( a ) { return this . getLonLatFromViewPortPx ( a ) } , getPixelFromLonLat : function ( a ) { a = this . getViewPortPxFromLonLat ( a ) ; a . x = Math . round ( a . x ) ;
a . y = Math . round ( a . y ) ; return a } , getGeodesicPixelSize : function ( a ) { var b = a ? this . getLonLatFromPixel ( a ) : this . getCachedCenter ( ) || new OpenLayers . LonLat ( 0 , 0 ) , c = this . getResolution ( ) , a = b . add ( - c / 2 , 0 ) , d = b . add ( c / 2 , 0 ) , e = b . add ( 0 , - c / 2 ) , b = b . add ( 0 , c / 2 ) , c = new OpenLayers . Projection ( "EPSG:4326" ) , f = this . getProjectionObject ( ) || c ; f . equals ( c ) || ( a . transform ( f , c ) , d . transform ( f , c ) , e . transform ( f , c ) , b . transform ( f , c ) ) ; return new OpenLayers . Size ( OpenLayers . Util . distVincenty ( a , d ) , OpenLayers . Util . distVincenty ( e , b ) ) } , getViewPortPxFromLayerPx : function ( a ) { var b =
null ; if ( null != a ) var b = parseInt ( this . layerContainerDiv . style . left ) , c = parseInt ( this . layerContainerDiv . style . top ) , b = a . add ( b , c ) ; return b } , getLayerPxFromViewPortPx : function ( a ) { var b = null ; if ( null != a ) { var b = - parseInt ( this . layerContainerDiv . style . left ) , c = - parseInt ( this . layerContainerDiv . style . top ) , b = a . add ( b , c ) ; if ( isNaN ( b . x ) || isNaN ( b . y ) ) b = null } return b } , getLonLatFromLayerPx : function ( a ) { a = this . getViewPortPxFromLayerPx ( a ) ; return this . getLonLatFromViewPortPx ( a ) } , getLayerPxFromLonLat : function ( a ) { return this . getLayerPxFromViewPortPx ( this . getPixelFromLonLat ( a ) ) } ,
CLASS _NAME : "OpenLayers.Map" } ) ; OpenLayers . Map . TILE _WIDTH = 256 ; OpenLayers . Map . TILE _HEIGHT = 256 ; OpenLayers . Layer = OpenLayers . Class ( { id : null , name : null , div : null , opacity : 1 , alwaysInRange : null , RESOLUTION _PROPERTIES : "scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel" . split ( " " ) , events : null , map : null , isBaseLayer : ! 1 , alpha : ! 1 , displayInLayerSwitcher : ! 0 , visibility : ! 0 , attribution : null , inRange : ! 1 , imageSize : null , options : null , eventListeners : null , gutter : 0 , projection : null , units : null , scales : null , resolutions : null , maxExtent : null , minExtent : null , maxResolution : null , minResolution : null ,
numZoomLevels : null , minScale : null , maxScale : null , displayOutsideMaxExtent : ! 1 , wrapDateLine : ! 1 , metadata : null , initialize : function ( a , b ) { this . metadata = { } ; this . addOptions ( b ) ; this . name = a ; if ( null == this . id && ( this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) , this . div = OpenLayers . Util . createDiv ( this . id ) , this . div . style . width = "100%" , this . div . style . height = "100%" , this . div . dir = "ltr" , this . events = new OpenLayers . Events ( this , this . div ) , this . eventListeners instanceof Object ) ) this . events . on ( this . eventListeners ) } ,
destroy : function ( a ) { null == a && ( a = ! 0 ) ; null != this . map && this . map . removeLayer ( this , a ) ; this . options = this . div = this . name = this . map = this . projection = null ; this . events && ( this . eventListeners && this . events . un ( this . eventListeners ) , this . events . destroy ( ) ) ; this . events = this . eventListeners = null } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer ( this . name , this . getOptions ( ) ) ) ; OpenLayers . Util . applyDefaults ( a , this ) ; a . map = null ; return a } , getOptions : function ( ) { var a = { } , b ; for ( b in this . options ) a [ b ] = this [ b ] ; return a } , setName : function ( a ) { a !=
this . name && ( this . name = a , null != this . map && this . map . events . triggerEvent ( "changelayer" , { layer : this , property : "name" } ) ) } , addOptions : function ( a , b ) { null == this . options && ( this . options = { } ) ; if ( a && ( "string" == typeof a . projection && ( a . projection = new OpenLayers . Projection ( a . projection ) ) , a . projection && OpenLayers . Util . applyDefaults ( a , OpenLayers . Projection . defaults [ a . projection . getCode ( ) ] ) , a . maxExtent && ! ( a . maxExtent instanceof OpenLayers . Bounds ) && ( a . maxExtent = new OpenLayers . Bounds ( a . maxExtent ) ) , a . minExtent && ! ( a . minExtent instanceof
OpenLayers . Bounds ) ) ) a . minExtent = new OpenLayers . Bounds ( a . minExtent ) ; OpenLayers . Util . extend ( this . options , a ) ; OpenLayers . Util . extend ( this , a ) ; this . projection && this . projection . getUnits ( ) && ( this . units = this . projection . getUnits ( ) ) ; if ( this . map ) { var c = this . map . getResolution ( ) , d = this . RESOLUTION _PROPERTIES . concat ( [ "projection" , "units" , "minExtent" , "maxExtent" ] ) , e ; for ( e in a ) if ( a . hasOwnProperty ( e ) && 0 <= OpenLayers . Util . indexOf ( d , e ) ) { this . initResolutions ( ) ; b && this . map . baseLayer === this && ( this . map . setCenter ( this . map . getCenter ( ) ,
this . map . getZoomForResolution ( c ) , ! 1 , ! 0 ) , this . map . events . triggerEvent ( "changebaselayer" , { layer : this } ) ) ; break } } } , onMapResize : function ( ) { } , redraw : function ( ) { var a = ! 1 ; if ( this . map ) { this . inRange = this . calculateInRange ( ) ; var b = this . getExtent ( ) ; b && ( this . inRange && this . visibility ) && ( this . moveTo ( b , ! 0 , ! 1 ) , this . events . triggerEvent ( "moveend" , { zoomChanged : ! 0 } ) , a = ! 0 ) } return a } , moveTo : function ( ) { var a = this . visibility ; this . isBaseLayer || ( a = a && this . inRange ) ; this . display ( a ) } , moveByPx : function ( ) { } , setMap : function ( a ) { null ==
this . map && ( this . map = a , this . maxExtent = this . maxExtent || this . map . maxExtent , this . minExtent = this . minExtent || this . map . minExtent , this . projection = this . projection || this . map . projection , "string" == typeof this . projection && ( this . projection = new OpenLayers . Projection ( this . projection ) ) , this . units = this . projection . getUnits ( ) || this . units || this . map . units , this . initResolutions ( ) , this . isBaseLayer || ( this . inRange = this . calculateInRange ( ) , this . div . style . display = this . visibility && this . inRange ? "" : "none" ) , this . setTileSize ( ) ) } , afterAdd : function ( ) { } ,
removeMap : function ( ) { } , getImageSize : function ( ) { return this . imageSize || this . tileSize } , setTileSize : function ( a ) { this . tileSize = a = a ? a : this . tileSize ? this . tileSize : this . map . getTileSize ( ) ; this . gutter && ( this . imageSize = new OpenLayers . Size ( a . w + 2 * this . gutter , a . h + 2 * this . gutter ) ) } , getVisibility : function ( ) { return this . visibility } , setVisibility : function ( a ) { a != this . visibility && ( this . visibility = a , this . display ( a ) , this . redraw ( ) , null != this . map && this . map . events . triggerEvent ( "changelayer" , { layer : this , property : "visibility" } ) ,
this . events . triggerEvent ( "visibilitychanged" ) ) } , display : function ( a ) { a != ( "none" != this . div . style . display ) && ( this . div . style . display = a && this . calculateInRange ( ) ? "block" : "none" ) } , calculateInRange : function ( ) { var a = ! 1 ; this . alwaysInRange ? a = ! 0 : this . map && ( a = this . map . getResolution ( ) , a = a >= this . minResolution && a <= this . maxResolution ) ; return a } , setIsBaseLayer : function ( a ) { a != this . isBaseLayer && ( this . isBaseLayer = a , null != this . map && this . map . events . triggerEvent ( "changebaselayer" , { layer : this } ) ) } , initResolutions : function ( ) { var a ,
b , c , d = { } , e = ! 0 ; a = 0 ; for ( b = this . RESOLUTION _PROPERTIES . length ; a < b ; a ++ ) c = this . RESOLUTION _PROPERTIES [ a ] , d [ c ] = this . options [ c ] , e && this . options [ c ] && ( e = ! 1 ) ; null == this . alwaysInRange && ( this . alwaysInRange = e ) ; null == d . resolutions && ( d . resolutions = this . resolutionsFromScales ( d . scales ) ) ; null == d . resolutions && ( d . resolutions = this . calculateResolutions ( d ) ) ; if ( null == d . resolutions ) { a = 0 ; for ( b = this . RESOLUTION _PROPERTIES . length ; a < b ; a ++ ) c = this . RESOLUTION _PROPERTIES [ a ] , d [ c ] = null != this . options [ c ] ? this . options [ c ] : this . map [ c ] ; null ==
d . resolutions && ( d . resolutions = this . resolutionsFromScales ( d . scales ) ) ; null == d . resolutions && ( d . resolutions = this . calculateResolutions ( d ) ) } var f ; this . options . maxResolution && "auto" !== this . options . maxResolution && ( f = this . options . maxResolution ) ; this . options . minScale && ( f = OpenLayers . Util . getResolutionFromScale ( this . options . minScale , this . units ) ) ; var g ; this . options . minResolution && "auto" !== this . options . minResolution && ( g = this . options . minResolution ) ; this . options . maxScale && ( g = OpenLayers . Util . getResolutionFromScale ( this . options . maxScale ,
this . units ) ) ; d . resolutions && ( d . resolutions . sort ( function ( a , b ) { return b - a } ) , f || ( f = d . resolutions [ 0 ] ) , g || ( g = d . resolutions [ d . resolutions . length - 1 ] ) ) ; if ( this . resolutions = d . resolutions ) { b = this . resolutions . length ; this . scales = Array ( b ) ; for ( a = 0 ; a < b ; a ++ ) this . scales [ a ] = OpenLayers . Util . getScaleFromResolution ( this . resolutions [ a ] , this . units ) ; this . numZoomLevels = b } if ( this . minResolution = g ) this . maxScale = OpenLayers . Util . getScaleFromResolution ( g , this . units ) ; if ( this . maxResolution = f ) this . minScale = OpenLayers . Util . getScaleFromResolution ( f ,
this . units ) } , resolutionsFromScales : function ( a ) { if ( null != a ) { var b , c , d ; d = a . length ; b = Array ( d ) ; for ( c = 0 ; c < d ; c ++ ) b [ c ] = OpenLayers . Util . getResolutionFromScale ( a [ c ] , this . units ) ; return b } } , calculateResolutions : function ( a ) { var b , c , d = a . maxResolution ; null != a . minScale ? d = OpenLayers . Util . getResolutionFromScale ( a . minScale , this . units ) : "auto" == d && null != this . maxExtent && ( b = this . map . getSize ( ) , c = this . maxExtent . getWidth ( ) / b . w , b = this . maxExtent . getHeight ( ) / b . h , d = Math . max ( c , b ) ) ; c = a . minResolution ; null != a . maxScale ? c = OpenLayers . Util . getResolutionFromScale ( a . maxScale ,
this . units ) : "auto" == a . minResolution && null != this . minExtent && ( b = this . map . getSize ( ) , c = this . minExtent . getWidth ( ) / b . w , b = this . minExtent . getHeight ( ) / b . h , c = Math . max ( c , b ) ) ; "number" !== typeof d && ( "number" !== typeof c && null != this . maxExtent ) && ( d = this . map . getTileSize ( ) , d = Math . max ( this . maxExtent . getWidth ( ) / d . w , this . maxExtent . getHeight ( ) / d . h ) ) ; b = a . maxZoomLevel ; a = a . numZoomLevels ; "number" === typeof c && "number" === typeof d && void 0 === a ? a = Math . floor ( Math . log ( d / c ) / Math . log ( 2 ) ) + 1 : void 0 === a && null != b && ( a = b + 1 ) ; if ( ! ( "number" !==
typeof a || 0 >= a || "number" !== typeof d && "number" !== typeof c ) ) { b = Array ( a ) ; var e = 2 ; "number" == typeof c && "number" == typeof d && ( e = Math . pow ( d / c , 1 / ( a - 1 ) ) ) ; var f ; if ( "number" === typeof d ) for ( f = 0 ; f < a ; f ++ ) b [ f ] = d / Math . pow ( e , f ) ; else for ( f = 0 ; f < a ; f ++ ) b [ a - 1 - f ] = c * Math . pow ( e , f ) ; return b } } , getResolution : function ( ) { return this . getResolutionForZoom ( this . map . getZoom ( ) ) } , getExtent : function ( ) { return this . map . calculateBounds ( ) } , getZoomForExtent : function ( a , b ) { var c = this . map . getSize ( ) ; return this . getZoomForResolution ( Math . max ( a . getWidth ( ) /
c . w , a . getHeight ( ) / c . h ) , b ) } , getDataExtent : function ( ) { } , getResolutionForZoom : function ( a ) { a = Math . max ( 0 , Math . min ( a , this . resolutions . length - 1 ) ) ; if ( this . map . fractionalZoom ) var b = Math . floor ( a ) , c = Math . ceil ( a ) , a = this . resolutions [ b ] - ( a - b ) * ( this . resolutions [ b ] - this . resolutions [ c ] ) ; else a = this . resolutions [ Math . round ( a ) ] ; return a } , getZoomForResolution : function ( a , b ) { var c , d ; if ( this . map . fractionalZoom ) { var e = 0 , f = this . resolutions [ e ] , g = this . resolutions [ this . resolutions . length - 1 ] , h ; c = 0 ; for ( d = this . resolutions . length ; c <
d ; ++ c ) if ( h = this . resolutions [ c ] , h >= a && ( f = h , e = c ) , h <= a ) { g = h ; break } c = f - g ; c = 0 < c ? e + ( f - a ) / c : e } else { f = Number . POSITIVE _INFINITY ; c = 0 ; for ( d = this . resolutions . length ; c < d ; c ++ ) if ( b ) { e = Math . abs ( this . resolutions [ c ] - a ) ; if ( e > f ) break ; f = e } else if ( this . resolutions [ c ] < a ) break ; c = Math . max ( 0 , c - 1 ) } return c } , getLonLatFromViewPortPx : function ( a ) { var b = null , c = this . map ; if ( null != a && c . minPx ) { var b = c . getResolution ( ) , d = c . getMaxExtent ( { restricted : ! 0 } ) , b = new OpenLayers . LonLat ( ( a . x - c . minPx . x ) * b + d . left , ( c . minPx . y - a . y ) * b + d . top ) ; this . wrapDateLine &&
( b = b . wrapDateLine ( this . maxExtent ) ) } return b } , getViewPortPxFromLonLat : function ( a , b ) { var c = null ; null != a && ( b = b || this . map . getResolution ( ) , c = this . map . calculateBounds ( null , b ) , c = new OpenLayers . Pixel ( 1 / b * ( a . lon - c . left ) , 1 / b * ( c . top - a . lat ) ) ) ; return c } , setOpacity : function ( a ) { if ( a != this . opacity ) { this . opacity = a ; for ( var b = this . div . childNodes , c = 0 , d = b . length ; c < d ; ++ c ) { var e = b [ c ] . firstChild || b [ c ] , f = b [ c ] . lastChild ; f && "iframe" === f . nodeName . toLowerCase ( ) && ( e = f . parentNode ) ; OpenLayers . Util . modifyDOMElement ( e , null , null , null ,
null , null , null , a ) } null != this . map && this . map . events . triggerEvent ( "changelayer" , { layer : this , property : "opacity" } ) } } , getZIndex : function ( ) { return this . div . style . zIndex } , setZIndex : function ( a ) { this . div . style . zIndex = a } , adjustBounds : function ( a ) { if ( this . gutter ) var b = this . gutter * this . map . getResolution ( ) , a = new OpenLayers . Bounds ( a . left - b , a . bottom - b , a . right + b , a . top + b ) ; this . wrapDateLine && ( b = { rightTolerance : this . getResolution ( ) , leftTolerance : this . getResolution ( ) } , a = a . wrapDateLine ( this . maxExtent , b ) ) ; return a } , CLASS _NAME : "OpenLayers.Layer" } ) ; OpenLayers . Layer . SphericalMercator = { getExtent : function ( ) { var a = null ; return a = this . sphericalMercator ? this . map . calculateBounds ( ) : OpenLayers . Layer . FixedZoomLevels . prototype . getExtent . apply ( this ) } , getLonLatFromViewPortPx : function ( a ) { return OpenLayers . Layer . prototype . getLonLatFromViewPortPx . apply ( this , arguments ) } , getViewPortPxFromLonLat : function ( a ) { return OpenLayers . Layer . prototype . getViewPortPxFromLonLat . apply ( this , arguments ) } , initMercatorParameters : function ( ) { this . RESOLUTIONS = [ ] ; for ( var a = 0 ; a <= this . MAX _ZOOM _LEVEL ; ++ a ) this . RESOLUTIONS [ a ] =
156543.03390625 / Math . pow ( 2 , a ) ; this . units = "m" ; this . projection = this . projection || "EPSG:900913" } , forwardMercator : function ( ) { var a = new OpenLayers . Projection ( "EPSG:4326" ) , b = new OpenLayers . Projection ( "EPSG:900913" ) ; return function ( c , d ) { var e = OpenLayers . Projection . transform ( { x : c , y : d } , a , b ) ; return new OpenLayers . LonLat ( e . x , e . y ) } } ( ) , inverseMercator : function ( ) { var a = new OpenLayers . Projection ( "EPSG:4326" ) , b = new OpenLayers . Projection ( "EPSG:900913" ) ; return function ( c , d ) { var e = OpenLayers . Projection . transform ( { x : c ,
y : d } , b , a ) ; return new OpenLayers . LonLat ( e . x , e . y ) } } ( ) } ; OpenLayers . Layer . EventPane = OpenLayers . Class ( OpenLayers . Layer , { smoothDragPan : ! 0 , isBaseLayer : ! 0 , isFixed : ! 0 , pane : null , mapObject : null , initialize : function ( a , b ) { OpenLayers . Layer . prototype . initialize . apply ( this , arguments ) ; null == this . pane && ( this . pane = OpenLayers . Util . createDiv ( this . div . id + "_EventPane" ) ) } , destroy : function ( ) { this . pane = this . mapObject = null ; OpenLayers . Layer . prototype . destroy . apply ( this , arguments ) } , setMap : function ( a ) { OpenLayers . Layer . prototype . setMap . apply ( this , arguments ) ; this . pane . style . zIndex =
parseInt ( this . div . style . zIndex ) + 1 ; this . pane . style . display = this . div . style . display ; this . pane . style . width = "100%" ; this . pane . style . height = "100%" ; "msie" == OpenLayers . BROWSER _NAME && ( this . pane . style . background = "url(" + OpenLayers . Util . getImageLocation ( "blank.gif" ) + ")" ) ; this . isFixed ? this . map . viewPortDiv . appendChild ( this . pane ) : this . map . layerContainerDiv . appendChild ( this . pane ) ; this . loadMapObject ( ) ; null == this . mapObject && this . loadWarningMessage ( ) } , removeMap : function ( a ) { this . pane && this . pane . parentNode && this . pane . parentNode . removeChild ( this . pane ) ;
OpenLayers . Layer . prototype . removeMap . apply ( this , arguments ) } , loadWarningMessage : function ( ) { this . div . style . backgroundColor = "darkblue" ; var a = this . map . getSize ( ) , b = Math . min ( a . w , 300 ) , c = Math . min ( a . h , 200 ) , b = new OpenLayers . Size ( b , c ) , a = ( new OpenLayers . Pixel ( a . w / 2 , a . h / 2 ) ) . add ( - b . w / 2 , - b . h / 2 ) , a = OpenLayers . Util . createDiv ( this . name + "_warning" , a , b , null , null , null , "auto" ) ; a . style . padding = "7px" ; a . style . backgroundColor = "yellow" ; a . innerHTML = this . getWarningHTML ( ) ; this . div . appendChild ( a ) } , getWarningHTML : function ( ) { return "" } ,
display : function ( a ) { OpenLayers . Layer . prototype . display . apply ( this , arguments ) ; this . pane . style . display = this . div . style . display } , setZIndex : function ( a ) { OpenLayers . Layer . prototype . setZIndex . apply ( this , arguments ) ; this . pane . style . zIndex = parseInt ( this . div . style . zIndex ) + 1 } , moveByPx : function ( a , b ) { OpenLayers . Layer . prototype . moveByPx . apply ( this , arguments ) ; this . dragPanMapObject ? this . dragPanMapObject ( a , - b ) : this . moveTo ( this . map . getCachedCenter ( ) ) } , moveTo : function ( a , b , c ) { OpenLayers . Layer . prototype . moveTo . apply ( this ,
arguments ) ; if ( null != this . mapObject ) { var d = this . map . getCenter ( ) , e = this . map . getZoom ( ) ; if ( null != d ) { var f = this . getOLLonLatFromMapObjectLonLat ( this . getMapObjectCenter ( ) ) , g = this . getOLZoomFromMapObjectZoom ( this . getMapObjectZoom ( ) ) ; if ( ! d . equals ( f ) || e != g ) ! b && f && this . dragPanMapObject && this . smoothDragPan ? ( e = this . map . getViewPortPxFromLonLat ( f ) , d = this . map . getViewPortPxFromLonLat ( d ) , this . dragPanMapObject ( d . x - e . x , e . y - d . y ) ) : ( d = this . getMapObjectLonLatFromOLLonLat ( d ) , e = this . getMapObjectZoomFromOLZoom ( e ) , this . setMapObjectCenter ( d ,
e , c ) ) } } } , getLonLatFromViewPortPx : function ( a ) { var b = null ; null != this . mapObject && null != this . getMapObjectCenter ( ) && ( b = this . getOLLonLatFromMapObjectLonLat ( this . getMapObjectLonLatFromMapObjectPixel ( this . getMapObjectPixelFromOLPixel ( a ) ) ) ) ; return b } , getViewPortPxFromLonLat : function ( a ) { var b = null ; null != this . mapObject && null != this . getMapObjectCenter ( ) && ( b = this . getOLPixelFromMapObjectPixel ( this . getMapObjectPixelFromMapObjectLonLat ( this . getMapObjectLonLatFromOLLonLat ( a ) ) ) ) ; return b } , getOLLonLatFromMapObjectLonLat : function ( a ) { var b =
null ; null != a && ( b = this . getLongitudeFromMapObjectLonLat ( a ) , a = this . getLatitudeFromMapObjectLonLat ( a ) , b = new OpenLayers . LonLat ( b , a ) ) ; return b } , getMapObjectLonLatFromOLLonLat : function ( a ) { var b = null ; null != a && ( b = this . getMapObjectLonLatFromLonLat ( a . lon , a . lat ) ) ; return b } , getOLPixelFromMapObjectPixel : function ( a ) { var b = null ; null != a && ( b = this . getXFromMapObjectPixel ( a ) , a = this . getYFromMapObjectPixel ( a ) , b = new OpenLayers . Pixel ( b , a ) ) ; return b } , getMapObjectPixelFromOLPixel : function ( a ) { var b = null ; null != a && ( b = this . getMapObjectPixelFromXY ( a . x ,
a . y ) ) ; return b } , CLASS _NAME : "OpenLayers.Layer.EventPane" } ) ; OpenLayers . Layer . FixedZoomLevels = OpenLayers . Class ( { initialize : function ( ) { } , initResolutions : function ( ) { for ( var a = [ "minZoomLevel" , "maxZoomLevel" , "numZoomLevels" ] , b = 0 , c = a . length ; b < c ; b ++ ) { var d = a [ b ] ; this [ d ] = null != this . options [ d ] ? this . options [ d ] : this . map [ d ] } if ( null == this . minZoomLevel || this . minZoomLevel < this . MIN _ZOOM _LEVEL ) this . minZoomLevel = this . MIN _ZOOM _LEVEL ; a = this . MAX _ZOOM _LEVEL - this . minZoomLevel + 1 ; b = null == this . options . numZoomLevels && null != this . options . maxZoomLevel || null == this . numZoomLevels && null != this . maxZoomLevel ?
this . maxZoomLevel - this . minZoomLevel + 1 : this . numZoomLevels ; this . numZoomLevels = null != b ? Math . min ( b , a ) : a ; this . maxZoomLevel = this . minZoomLevel + this . numZoomLevels - 1 ; if ( null != this . RESOLUTIONS ) { a = 0 ; this . resolutions = [ ] ; for ( b = this . minZoomLevel ; b <= this . maxZoomLevel ; b ++ ) this . resolutions [ a ++ ] = this . RESOLUTIONS [ b ] ; this . maxResolution = this . resolutions [ 0 ] ; this . minResolution = this . resolutions [ this . resolutions . length - 1 ] } } , getResolution : function ( ) { if ( null != this . resolutions ) return OpenLayers . Layer . prototype . getResolution . apply ( this ,
arguments ) ; var a = null , b = this . map . getSize ( ) , c = this . getExtent ( ) ; null != b && null != c && ( a = Math . max ( c . getWidth ( ) / b . w , c . getHeight ( ) / b . h ) ) ; return a } , getExtent : function ( ) { var a = this . map . getSize ( ) , b = this . getLonLatFromViewPortPx ( { x : 0 , y : 0 } ) , a = this . getLonLatFromViewPortPx ( { x : a . w , y : a . h } ) ; return null != b && null != a ? new OpenLayers . Bounds ( b . lon , a . lat , a . lon , b . lat ) : null } , getZoomForResolution : function ( a ) { return null != this . resolutions ? OpenLayers . Layer . prototype . getZoomForResolution . apply ( this , arguments ) : this . getZoomForExtent ( OpenLayers . Layer . prototype . getExtent . apply ( this ,
[ ] ) ) } , getOLZoomFromMapObjectZoom : function ( a ) { var b = null ; null != a && ( b = a - this . minZoomLevel , this . map . baseLayer !== this && ( b = this . map . baseLayer . getZoomForResolution ( this . getResolutionForZoom ( b ) ) ) ) ; return b } , getMapObjectZoomFromOLZoom : function ( a ) { var b = null ; null != a && ( b = a + this . minZoomLevel , this . map . baseLayer !== this && ( b = this . getZoomForResolution ( this . map . baseLayer . getResolutionForZoom ( b ) ) ) ) ; return b } , CLASS _NAME : "OpenLayers.Layer.FixedZoomLevels" } ) ; OpenLayers . Layer . Google = OpenLayers . Class ( OpenLayers . Layer . EventPane , OpenLayers . Layer . FixedZoomLevels , { MIN _ZOOM _LEVEL : 0 , MAX _ZOOM _LEVEL : 21 , RESOLUTIONS : [ 1.40625 , 0.703125 , 0.3515625 , 0.17578125 , 0.087890625 , 0.0439453125 , 0.02197265625 , 0.010986328125 , 0.0054931640625 , 0.00274658203125 , 0.001373291015625 , 6.866455078125 E - 4 , 3.4332275390625 E - 4 , 1.71661376953125 E - 4 , 8.58306884765625 E - 5 , 4.291534423828125 E - 5 , 2.145767211914062 E - 5 , 1.072883605957031 E - 5 , 5.36441802978515 E - 6 , 2.68220901489257 E - 6 , 1.341104507446289 E - 6 , 6.705522537231445 E - 7 ] ,
type : null , wrapDateLine : ! 0 , sphericalMercator : ! 1 , version : null , initialize : function ( a , b ) { b = b || { } ; b . version || ( b . version = "function" === typeof GMap2 ? "2" : "3" ) ; var c = OpenLayers . Layer . Google [ "v" + b . version . replace ( /\./g , "_" ) ] ; if ( c ) OpenLayers . Util . applyDefaults ( b , c ) ; else throw "Unsupported Google Maps API version: " + b . version ; OpenLayers . Util . applyDefaults ( b , c . DEFAULTS ) ; b . maxExtent && ( b . maxExtent = b . maxExtent . clone ( ) ) ; OpenLayers . Layer . EventPane . prototype . initialize . apply ( this , [ a , b ] ) ; OpenLayers . Layer . FixedZoomLevels . prototype . initialize . apply ( this ,
[ a , b ] ) ; this . sphericalMercator && ( OpenLayers . Util . extend ( this , OpenLayers . Layer . SphericalMercator ) , this . initMercatorParameters ( ) ) } , clone : function ( ) { return new OpenLayers . Layer . Google ( this . name , this . getOptions ( ) ) } , setVisibility : function ( a ) { var b = null == this . opacity ? 1 : this . opacity ; OpenLayers . Layer . EventPane . prototype . setVisibility . apply ( this , arguments ) ; this . setOpacity ( b ) } , display : function ( a ) { this . _dragging || this . setGMapVisibility ( a ) ; OpenLayers . Layer . EventPane . prototype . display . apply ( this , arguments ) } , moveTo : function ( a ,
b , c ) { this . _dragging = c ; OpenLayers . Layer . EventPane . prototype . moveTo . apply ( this , arguments ) ; delete this . _dragging } , setOpacity : function ( a ) { a !== this . opacity && ( null != this . map && this . map . events . triggerEvent ( "changelayer" , { layer : this , property : "opacity" } ) , this . opacity = a ) ; if ( this . getVisibility ( ) ) { var b = this . getMapContainer ( ) ; OpenLayers . Util . modifyDOMElement ( b , null , null , null , null , null , null , a ) } } , destroy : function ( ) { if ( this . map ) { this . setGMapVisibility ( ! 1 ) ; var a = OpenLayers . Layer . Google . cache [ this . map . id ] ; a && 1 >= a . count &&
this . removeGMapElements ( ) } OpenLayers . Layer . EventPane . prototype . destroy . apply ( this , arguments ) } , removeGMapElements : function ( ) { var a = OpenLayers . Layer . Google . cache [ this . map . id ] ; if ( a ) { var b = this . mapObject && this . getMapContainer ( ) ; b && b . parentNode && b . parentNode . removeChild ( b ) ; ( b = a . termsOfUse ) && b . parentNode && b . parentNode . removeChild ( b ) ; ( a = a . poweredBy ) && a . parentNode && a . parentNode . removeChild ( a ) } } , removeMap : function ( a ) { this . visibility && this . mapObject && this . setGMapVisibility ( ! 1 ) ; var b = OpenLayers . Layer . Google . cache [ a . id ] ;
b && ( 1 >= b . count ? ( this . removeGMapElements ( ) , delete OpenLayers . Layer . Google . cache [ a . id ] ) : -- b . count ) ; delete this . termsOfUse ; delete this . poweredBy ; delete this . mapObject ; delete this . dragObject ; OpenLayers . Layer . EventPane . prototype . removeMap . apply ( this , arguments ) } , getOLBoundsFromMapObjectBounds : function ( a ) { var b = null ; null != a && ( b = a . getSouthWest ( ) , a = a . getNorthEast ( ) , this . sphericalMercator ? ( b = this . forwardMercator ( b . lng ( ) , b . lat ( ) ) , a = this . forwardMercator ( a . lng ( ) , a . lat ( ) ) ) : ( b = new OpenLayers . LonLat ( b . lng ( ) , b . lat ( ) ) ,
a = new OpenLayers . LonLat ( a . lng ( ) , a . lat ( ) ) ) , b = new OpenLayers . Bounds ( b . lon , b . lat , a . lon , a . lat ) ) ; return b } , getWarningHTML : function ( ) { return OpenLayers . i18n ( "googleWarning" ) } , getMapObjectCenter : function ( ) { return this . mapObject . getCenter ( ) } , getMapObjectZoom : function ( ) { return this . mapObject . getZoom ( ) } , getLongitudeFromMapObjectLonLat : function ( a ) { return this . sphericalMercator ? this . forwardMercator ( a . lng ( ) , a . lat ( ) ) . lon : a . lng ( ) } , getLatitudeFromMapObjectLonLat : function ( a ) { return this . sphericalMercator ? this . forwardMercator ( a . lng ( ) ,
a . lat ( ) ) . lat : a . lat ( ) } , getXFromMapObjectPixel : function ( a ) { return a . x } , getYFromMapObjectPixel : function ( a ) { return a . y } , CLASS _NAME : "OpenLayers.Layer.Google" } ) ; OpenLayers . Layer . Google . cache = { } ;
OpenLayers . Layer . Google . v2 = { termsOfUse : null , poweredBy : null , dragObject : null , loadMapObject : function ( ) { this . type || ( this . type = G _NORMAL _MAP ) ; var a , b , c , d = OpenLayers . Layer . Google . cache [ this . map . id ] ; if ( d ) a = d . mapObject , b = d . termsOfUse , c = d . poweredBy , ++ d . count ; else { var d = this . map . viewPortDiv , e = document . createElement ( "div" ) ; e . id = this . map . id + "_GMap2Container" ; e . style . position = "absolute" ; e . style . width = "100%" ; e . style . height = "100%" ; d . appendChild ( e ) ; try { a = new GMap2 ( e ) , b = e . lastChild , d . appendChild ( b ) , b . style . zIndex =
"1100" , b . style . right = "" , b . style . bottom = "" , b . className = "olLayerGoogleCopyright" , c = e . lastChild , d . appendChild ( c ) , c . style . zIndex = "1100" , c . style . right = "" , c . style . bottom = "" , c . className = "olLayerGooglePoweredBy gmnoprint" } catch ( f ) { throw f ; } OpenLayers . Layer . Google . cache [ this . map . id ] = { mapObject : a , termsOfUse : b , poweredBy : c , count : 1 } } this . mapObject = a ; this . termsOfUse = b ; this . poweredBy = c ; - 1 === OpenLayers . Util . indexOf ( this . mapObject . getMapTypes ( ) , this . type ) && this . mapObject . addMapType ( this . type ) ; "function" == typeof a . getDragObject ?
this . dragObject = a . getDragObject ( ) : this . dragPanMapObject = null ; ! 1 === this . isBaseLayer && this . setGMapVisibility ( "none" !== this . div . style . display ) } , onMapResize : function ( ) { if ( this . visibility && this . mapObject . isLoaded ( ) ) this . mapObject . checkResize ( ) ; else { if ( ! this . _resized ) var a = this , b = GEvent . addListener ( this . mapObject , "load" , function ( ) { GEvent . removeListener ( b ) ; delete a . _resized ; a . mapObject . checkResize ( ) ; a . moveTo ( a . map . getCenter ( ) , a . map . getZoom ( ) ) } ) ; this . _resized = ! 0 } } , setGMapVisibility : function ( a ) { var b = OpenLayers . Layer . Google . cache [ this . map . id ] ;
if ( b ) { var c = this . mapObject . getContainer ( ) ; ! 0 === a ? ( this . mapObject . setMapType ( this . type ) , c . style . display = "" , this . termsOfUse . style . left = "" , this . termsOfUse . style . display = "" , this . poweredBy . style . display = "" , b . displayed = this . id ) : ( b . displayed === this . id && delete b . displayed , b . displayed || ( c . style . display = "none" , this . termsOfUse . style . display = "none" , this . termsOfUse . style . left = "-9999px" , this . poweredBy . style . display = "none" ) ) } } , getMapContainer : function ( ) { return this . mapObject . getContainer ( ) } , getMapObjectBoundsFromOLBounds : function ( a ) { var b =
null ; null != a && ( b = this . sphericalMercator ? this . inverseMercator ( a . bottom , a . left ) : new OpenLayers . LonLat ( a . bottom , a . left ) , a = this . sphericalMercator ? this . inverseMercator ( a . top , a . right ) : new OpenLayers . LonLat ( a . top , a . right ) , b = new GLatLngBounds ( new GLatLng ( b . lat , b . lon ) , new GLatLng ( a . lat , a . lon ) ) ) ; return b } , setMapObjectCenter : function ( a , b ) { this . mapObject . setCenter ( a , b ) } , dragPanMapObject : function ( a , b ) { this . dragObject . moveBy ( new GSize ( - a , b ) ) } , getMapObjectLonLatFromMapObjectPixel : function ( a ) { return this . mapObject . fromContainerPixelToLatLng ( a ) } ,
getMapObjectPixelFromMapObjectLonLat : function ( a ) { return this . mapObject . fromLatLngToContainerPixel ( a ) } , getMapObjectZoomFromMapObjectBounds : function ( a ) { return this . mapObject . getBoundsZoomLevel ( a ) } , getMapObjectLonLatFromLonLat : function ( a , b ) { var c ; this . sphericalMercator ? ( c = this . inverseMercator ( a , b ) , c = new GLatLng ( c . lat , c . lon ) ) : c = new GLatLng ( b , a ) ; return c } , getMapObjectPixelFromXY : function ( a , b ) { return new GPoint ( a , b ) } } ; OpenLayers . Format . XML = OpenLayers . Class ( OpenLayers . Format , { namespaces : null , namespaceAlias : null , defaultPrefix : null , readers : { } , writers : { } , xmldom : null , initialize : function ( a ) { window . ActiveXObject && ( this . xmldom = new ActiveXObject ( "Microsoft.XMLDOM" ) ) ; OpenLayers . Format . prototype . initialize . apply ( this , [ a ] ) ; this . namespaces = OpenLayers . Util . extend ( { } , this . namespaces ) ; this . namespaceAlias = { } ; for ( var b in this . namespaces ) this . namespaceAlias [ this . namespaces [ b ] ] = b } , destroy : function ( ) { this . xmldom = null ; OpenLayers . Format . prototype . destroy . apply ( this ,
arguments ) } , setNamespace : function ( a , b ) { this . namespaces [ a ] = b ; this . namespaceAlias [ b ] = a } , read : function ( a ) { var b = a . indexOf ( "<" ) ; 0 < b && ( a = a . substring ( b ) ) ; b = OpenLayers . Util . Try ( OpenLayers . Function . bind ( function ( ) { var b ; b = window . ActiveXObject && ! this . xmldom ? new ActiveXObject ( "Microsoft.XMLDOM" ) : this . xmldom ; b . loadXML ( a ) ; return b } , this ) , function ( ) { return ( new DOMParser ) . parseFromString ( a , "text/xml" ) } , function ( ) { var b = new XMLHttpRequest ; b . open ( "GET" , "data:text/xml;charset=utf-8," + encodeURIComponent ( a ) , ! 1 ) ; b . overrideMimeType &&
b . overrideMimeType ( "text/xml" ) ; b . send ( null ) ; return b . responseXML } ) ; this . keepData && ( this . data = b ) ; return b } , write : function ( a ) { if ( this . xmldom ) a = a . xml ; else { var b = new XMLSerializer ; if ( 1 == a . nodeType ) { var c = document . implementation . createDocument ( "" , "" , null ) ; c . importNode && ( a = c . importNode ( a , ! 0 ) ) ; c . appendChild ( a ) ; a = b . serializeToString ( c ) } else a = b . serializeToString ( a ) } return a } , createElementNS : function ( a , b ) { return this . xmldom ? "string" == typeof a ? this . xmldom . createNode ( 1 , b , a ) : this . xmldom . createNode ( 1 , b , "" ) : document . createElementNS ( a ,
b ) } , createTextNode : function ( a ) { "string" !== typeof a && ( a = "" + a ) ; return this . xmldom ? this . xmldom . createTextNode ( a ) : document . createTextNode ( a ) } , getElementsByTagNameNS : function ( a , b , c ) { var d = [ ] ; if ( a . getElementsByTagNameNS ) d = a . getElementsByTagNameNS ( b , c ) ; else for ( var a = a . getElementsByTagName ( "*" ) , e , f , g = 0 , h = a . length ; g < h ; ++ g ) if ( e = a [ g ] , f = e . prefix ? e . prefix + ":" + c : c , "*" == c || f == e . nodeName ) ( "*" == b || b == e . namespaceURI ) && d . push ( e ) ; return d } , getAttributeNodeNS : function ( a , b , c ) { var d = null ; if ( a . getAttributeNodeNS ) d = a . getAttributeNodeNS ( b ,
c ) ; else for ( var a = a . attributes , e , f , g = 0 , h = a . length ; g < h ; ++ g ) if ( e = a [ g ] , e . namespaceURI == b && ( f = e . prefix ? e . prefix + ":" + c : c , f == e . nodeName ) ) { d = e ; break } return d } , getAttributeNS : function ( a , b , c ) { var d = "" ; if ( a . getAttributeNS ) d = a . getAttributeNS ( b , c ) || "" ; else if ( a = this . getAttributeNodeNS ( a , b , c ) ) d = a . nodeValue ; return d } , getChildValue : function ( a , b ) { var c = b || "" ; if ( a ) for ( var d = a . firstChild ; d ; d = d . nextSibling ) switch ( d . nodeType ) { case 3 : case 4 : c += d . nodeValue } return c } , isSimpleContent : function ( a ) { for ( var b = ! 0 , a = a . firstChild ; a ; a =
a . nextSibling ) if ( 1 === a . nodeType ) { b = ! 1 ; break } return b } , contentType : function ( a ) { for ( var b = ! 1 , c = ! 1 , d = OpenLayers . Format . XML . CONTENT _TYPE . EMPTY , a = a . firstChild ; a ; a = a . nextSibling ) { switch ( a . nodeType ) { case 1 : c = ! 0 ; break ; case 8 : break ; default : b = ! 0 } if ( c && b ) break } if ( c && b ) d = OpenLayers . Format . XML . CONTENT _TYPE . MIXED ; else { if ( c ) return OpenLayers . Format . XML . CONTENT _TYPE . COMPLEX ; if ( b ) return OpenLayers . Format . XML . CONTENT _TYPE . SIMPLE } return d } , hasAttributeNS : function ( a , b , c ) { var d = ! 1 ; return d = a . hasAttributeNS ? a . hasAttributeNS ( b ,
c ) : ! ! this . getAttributeNodeNS ( a , b , c ) } , setAttributeNS : function ( a , b , c , d ) { if ( a . setAttributeNS ) a . setAttributeNS ( b , c , d ) ; else if ( this . xmldom ) b ? ( b = a . ownerDocument . createNode ( 2 , c , b ) , b . nodeValue = d , a . setAttributeNode ( b ) ) : a . setAttribute ( c , d ) ; else throw "setAttributeNS not implemented" ; } , createElementNSPlus : function ( a , b ) { var b = b || { } , c = b . uri || this . namespaces [ b . prefix ] ; c || ( c = a . indexOf ( ":" ) , c = this . namespaces [ a . substring ( 0 , c ) ] ) ; c || ( c = this . namespaces [ this . defaultPrefix ] ) ; c = this . createElementNS ( c , a ) ; b . attributes && this . setAttributes ( c ,
b . attributes ) ; var d = b . value ; null != d && c . appendChild ( this . createTextNode ( d ) ) ; return c } , setAttributes : function ( a , b ) { var c , d , e ; for ( e in b ) null != b [ e ] && b [ e ] . toString && ( c = b [ e ] . toString ( ) , d = this . namespaces [ e . substring ( 0 , e . indexOf ( ":" ) ) ] || null , this . setAttributeNS ( a , d , e , c ) ) } , readNode : function ( a , b ) { b || ( b = { } ) ; var c = this . readers [ a . namespaceURI ? this . namespaceAlias [ a . namespaceURI ] : this . defaultPrefix ] ; if ( c ) { var d = a . localName || a . nodeName . split ( ":" ) . pop ( ) ; ( c = c [ d ] || c [ "*" ] ) && c . apply ( this , [ a , b ] ) } return b } , readChildNodes : function ( a ,
b ) { b || ( b = { } ) ; for ( var c = a . childNodes , d , e = 0 , f = c . length ; e < f ; ++ e ) d = c [ e ] , 1 == d . nodeType && this . readNode ( d , b ) ; return b } , writeNode : function ( a , b , c ) { var d , e = a . indexOf ( ":" ) ; 0 < e ? ( d = a . substring ( 0 , e ) , a = a . substring ( e + 1 ) ) : d = c ? this . namespaceAlias [ c . namespaceURI ] : this . defaultPrefix ; b = this . writers [ d ] [ a ] . apply ( this , [ b ] ) ; c && c . appendChild ( b ) ; return b } , getChildEl : function ( a , b , c ) { return a && this . getThisOrNextEl ( a . firstChild , b , c ) } , getNextEl : function ( a , b , c ) { return a && this . getThisOrNextEl ( a . nextSibling , b , c ) } , getThisOrNextEl : function ( a ,
b , c ) { a : for ( ; a ; a = a . nextSibling ) switch ( a . nodeType ) { case 1 : if ( ( ! b || b === ( a . localName || a . nodeName . split ( ":" ) . pop ( ) ) ) && ( ! c || c === a . namespaceURI ) ) break a ; a = null ; break a ; case 3 : if ( /^\s*$/ . test ( a . nodeValue ) ) break ; case 4 : case 6 : case 12 : case 10 : case 11 : a = null ; break a } return a || null } , lookupNamespaceURI : function ( a , b ) { var c = null ; if ( a ) if ( a . lookupNamespaceURI ) c = a . lookupNamespaceURI ( b ) ; else a : switch ( a . nodeType ) { case 1 : if ( null !== a . namespaceURI && a . prefix === b ) { c = a . namespaceURI ; break a } if ( c = a . attributes . length ) for ( var d ,
e = 0 ; e < c ; ++ e ) if ( d = a . attributes [ e ] , "xmlns" === d . prefix && d . name === "xmlns:" + b ) { c = d . value || null ; break a } else if ( "xmlns" === d . name && null === b ) { c = d . value || null ; break a } c = this . lookupNamespaceURI ( a . parentNode , b ) ; break a ; case 2 : c = this . lookupNamespaceURI ( a . ownerElement , b ) ; break a ; case 9 : c = this . lookupNamespaceURI ( a . documentElement , b ) ; break a ; case 6 : case 12 : case 10 : case 11 : break a ; default : c = this . lookupNamespaceURI ( a . parentNode , b ) } return c } , getXMLDoc : function ( ) { ! OpenLayers . Format . XML . document && ! this . xmldom && ( document . implementation &&
document . implementation . createDocument ? OpenLayers . Format . XML . document = document . implementation . createDocument ( "" , "" , null ) : ! this . xmldom && window . ActiveXObject && ( this . xmldom = new ActiveXObject ( "Microsoft.XMLDOM" ) ) ) ; return OpenLayers . Format . XML . document || this . xmldom } , CLASS _NAME : "OpenLayers.Format.XML" } ) ; OpenLayers . Format . XML . CONTENT _TYPE = { EMPTY : 0 , SIMPLE : 1 , COMPLEX : 2 , MIXED : 3 } ; OpenLayers . Format . XML . lookupNamespaceURI = OpenLayers . Function . bind ( OpenLayers . Format . XML . prototype . lookupNamespaceURI , OpenLayers . Format . XML . prototype ) ;
OpenLayers . Format . XML . document = null ; OpenLayers . Format . WFST = function ( a ) { var a = OpenLayers . Util . applyDefaults ( a , OpenLayers . Format . WFST . DEFAULTS ) , b = OpenLayers . Format . WFST [ "v" + a . version . replace ( /\./g , "_" ) ] ; if ( ! b ) throw "Unsupported WFST version: " + a . version ; return new b ( a ) } ; OpenLayers . Format . WFST . DEFAULTS = { version : "1.0.0" } ; OpenLayers . Format . WFST . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" , wfs : "http://www.opengis.net/wfs" , gml : "http://www.opengis.net/gml" , ogc : "http://www.opengis.net/ogc" , ows : "http://www.opengis.net/ows" } , defaultPrefix : "wfs" , version : null , schemaLocations : null , srsName : null , extractAttributes : ! 0 , xy : ! 0 , stateName : null , initialize : function ( a ) { this . stateName = { } ; this . stateName [ OpenLayers . State . INSERT ] = "wfs:Insert" ; this . stateName [ OpenLayers . State . UPDATE ] =
"wfs:Update" ; this . stateName [ OpenLayers . State . DELETE ] = "wfs:Delete" ; OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , getSrsName : function ( a , b ) { var c = b && b . srsName ; c || ( c = a && a . layer ? a . layer . projection . getCode ( ) : this . srsName ) ; return c } , read : function ( a , b ) { b = b || { } ; OpenLayers . Util . applyDefaults ( b , { output : "features" } ) ; "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var c = { } ; a && this . readNode ( a , c , ! 0 ) ; c . features && "features" === b . output &&
( c = c . features ) ; return c } , readers : { wfs : { FeatureCollection : function ( a , b ) { b . features = [ ] ; this . readChildNodes ( a , b ) } } } , write : function ( a , b ) { var c = this . writeNode ( "wfs:Transaction" , { features : a , options : b } ) , d = this . schemaLocationAttr ( ) ; d && this . setAttributeNS ( c , this . namespaces . xsi , "xsi:schemaLocation" , d ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ c ] ) } , writers : { wfs : { GetFeature : function ( a ) { var b = this . createElementNSPlus ( "wfs:GetFeature" , { attributes : { service : "WFS" , version : this . version , handle : a && a . handle ,
outputFormat : a && a . outputFormat , maxFeatures : a && a . maxFeatures , "xsi:schemaLocation" : this . schemaLocationAttr ( a ) } } ) ; if ( "string" == typeof this . featureType ) this . writeNode ( "Query" , a , b ) ; else for ( var c = 0 , d = this . featureType . length ; c < d ; c ++ ) a . featureType = this . featureType [ c ] , this . writeNode ( "Query" , a , b ) ; return b } , Transaction : function ( a ) { var a = a || { } , b = a . options || { } , c = this . createElementNSPlus ( "wfs:Transaction" , { attributes : { service : "WFS" , version : this . version , handle : b . handle } } ) , d , e = a . features ; if ( e ) { ! 0 === b . multi && OpenLayers . Util . extend ( this . geometryTypes ,
{ "OpenLayers.Geometry.Point" : "MultiPoint" , "OpenLayers.Geometry.LineString" : ! 0 === this . multiCurve ? "MultiCurve" : "MultiLineString" , "OpenLayers.Geometry.Polygon" : ! 0 === this . multiSurface ? "MultiSurface" : "MultiPolygon" } ) ; var f , g , a = 0 ; for ( d = e . length ; a < d ; ++ a ) g = e [ a ] , ( f = this . stateName [ g . state ] ) && this . writeNode ( f , { feature : g , options : b } , c ) ; ! 0 === b . multi && this . setGeometryTypes ( ) } if ( b . nativeElements ) { a = 0 ; for ( d = b . nativeElements . length ; a < d ; ++ a ) this . writeNode ( "wfs:Native" , b . nativeElements [ a ] , c ) } return c } , Native : function ( a ) { return this . createElementNSPlus ( "wfs:Native" ,
{ attributes : { vendorId : a . vendorId , safeToIgnore : a . safeToIgnore } , value : a . value } ) } , Insert : function ( a ) { var b = a . feature , a = a . options , a = this . createElementNSPlus ( "wfs:Insert" , { attributes : { handle : a && a . handle } } ) ; this . srsName = this . getSrsName ( b ) ; this . writeNode ( "feature:_typeName" , b , a ) ; return a } , Update : function ( a ) { var b = a . feature , a = a . options , a = this . createElementNSPlus ( "wfs:Update" , { attributes : { handle : a && a . handle , typeName : ( this . featureNS ? this . featurePrefix + ":" : "" ) + this . featureType } } ) ; this . featureNS && a . setAttribute ( "xmlns:" +
this . featurePrefix , this . featureNS ) ; var c = b . modified ; if ( null !== this . geometryName && ( ! c || void 0 !== c . geometry ) ) this . srsName = this . getSrsName ( b ) , this . writeNode ( "Property" , { name : this . geometryName , value : b . geometry } , a ) ; for ( var d in b . attributes ) void 0 !== b . attributes [ d ] && ( ! c || ! c . attributes || c . attributes && void 0 !== c . attributes [ d ] ) && this . writeNode ( "Property" , { name : d , value : b . attributes [ d ] } , a ) ; this . writeNode ( "ogc:Filter" , new OpenLayers . Filter . FeatureId ( { fids : [ b . fid ] } ) , a ) ; return a } , Property : function ( a ) { var b = this . createElementNSPlus ( "wfs:Property" ) ;
this . writeNode ( "Name" , a . name , b ) ; null !== a . value && this . writeNode ( "Value" , a . value , b ) ; return b } , Name : function ( a ) { return this . createElementNSPlus ( "wfs:Name" , { value : a } ) } , Value : function ( a ) { var b ; a instanceof OpenLayers . Geometry ? ( b = this . createElementNSPlus ( "wfs:Value" ) , a = this . writeNode ( "feature:_geometry" , a ) . firstChild , b . appendChild ( a ) ) : b = this . createElementNSPlus ( "wfs:Value" , { value : a } ) ; return b } , Delete : function ( a ) { var b = a . feature , a = a . options , a = this . createElementNSPlus ( "wfs:Delete" , { attributes : { handle : a &&
a . handle , typeName : ( this . featureNS ? this . featurePrefix + ":" : "" ) + this . featureType } } ) ; this . featureNS && a . setAttribute ( "xmlns:" + this . featurePrefix , this . featureNS ) ; this . writeNode ( "ogc:Filter" , new OpenLayers . Filter . FeatureId ( { fids : [ b . fid ] } ) , a ) ; return a } } } , schemaLocationAttr : function ( a ) { var a = OpenLayers . Util . extend ( { featurePrefix : this . featurePrefix , schema : this . schema } , a ) , b = OpenLayers . Util . extend ( { } , this . schemaLocations ) ; a . schema && ( b [ a . featurePrefix ] = a . schema ) ; var a = [ ] , c , d ; for ( d in b ) ( c = this . namespaces [ d ] ) &&
a . push ( c + " " + b [ d ] ) ; return a . join ( " " ) || void 0 } , setFilterProperty : function ( a ) { if ( a . filters ) for ( var b = 0 , c = a . filters . length ; b < c ; ++ b ) OpenLayers . Format . WFST . v1 . prototype . setFilterProperty . call ( this , a . filters [ b ] ) ; else a instanceof OpenLayers . Filter . Spatial && ! a . property && ( a . property = this . geometryName ) } , CLASS _NAME : "OpenLayers.Format.WFST.v1" } ) ; OpenLayers . Format . OGCExceptionReport = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ogc : "http://www.opengis.net/ogc" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , defaultPrefix : "ogc" , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var b = { exceptionReport : null } ; a . documentElement && ( this . readChildNodes ( a , b ) , null === b . exceptionReport && ( b = ( new OpenLayers . Format . OWSCommon ) . read ( a ) ) ) ; return b } , readers : { ogc : { ServiceExceptionReport : function ( a ,
b ) { b . exceptionReport = { exceptions : [ ] } ; this . readChildNodes ( a , b . exceptionReport ) } , ServiceException : function ( a , b ) { var c = { code : a . getAttribute ( "code" ) , locator : a . getAttribute ( "locator" ) , text : this . getChildValue ( a ) } ; b . exceptions . push ( c ) } } } , CLASS _NAME : "OpenLayers.Format.OGCExceptionReport" } ) ; OpenLayers . Format . XML . VersionedOGC = OpenLayers . Class ( OpenLayers . Format . XML , { defaultVersion : null , version : null , profile : null , errorProperty : null , name : null , stringifyOutput : ! 1 , parser : null , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) ; a = this . CLASS _NAME ; this . name = a . substring ( a . lastIndexOf ( "." ) + 1 ) } , getVersion : function ( a , b ) { var c ; a ? ( c = this . version , c || ( c = a . getAttribute ( "version" ) , c || ( c = this . defaultVersion ) ) ) : c = b && b . version || this . version || this . defaultVersion ; return c } , getParser : function ( a ) { var a =
a || this . defaultVersion , b = this . profile ? "_" + this . profile : "" ; if ( ! this . parser || this . parser . VERSION != a ) { var c = OpenLayers . Format [ this . name ] [ "v" + a . replace ( /\./g , "_" ) + b ] ; if ( ! c ) throw "Can't find a " + this . name + " parser for version " + a + b ; this . parser = new c ( this . options ) } return this . parser } , write : function ( a , b ) { this . parser = this . getParser ( this . getVersion ( null , b ) ) ; var c = this . parser . write ( a , b ) ; return ! 1 === this . stringifyOutput ? c : OpenLayers . Format . XML . prototype . write . apply ( this , [ c ] ) } , read : function ( a , b ) { "string" == typeof a &&
( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var c = this . getVersion ( a . documentElement ) ; this . parser = this . getParser ( c ) ; var d = this . parser . read ( a , b ) ; if ( null !== this . errorProperty && void 0 === d [ this . errorProperty ] ) { var e = new OpenLayers . Format . OGCExceptionReport ; d . error = e . read ( a ) } d . version = c ; return d } , CLASS _NAME : "OpenLayers.Format.XML.VersionedOGC" } ) ; OpenLayers . Feature = OpenLayers . Class ( { layer : null , id : null , lonlat : null , data : null , marker : null , popupClass : null , popup : null , initialize : function ( a , b , c ) { this . layer = a ; this . lonlat = b ; this . data = null != c ? c : { } ; this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) } , destroy : function ( ) { null != this . layer && null != this . layer . map && null != this . popup && this . layer . map . removePopup ( this . popup ) ; null != this . layer && null != this . marker && this . layer . removeMarker ( this . marker ) ; this . data = this . lonlat = this . id = this . layer = null ; null != this . marker &&
( this . destroyMarker ( this . marker ) , this . marker = null ) ; null != this . popup && ( this . destroyPopup ( this . popup ) , this . popup = null ) } , onScreen : function ( ) { var a = ! 1 ; null != this . layer && null != this . layer . map && ( a = this . layer . map . getExtent ( ) . containsLonLat ( this . lonlat ) ) ; return a } , createMarker : function ( ) { null != this . lonlat && ( this . marker = new OpenLayers . Marker ( this . lonlat , this . data . icon ) ) ; return this . marker } , destroyMarker : function ( ) { this . marker . destroy ( ) } , createPopup : function ( a ) { null != this . lonlat && ( this . popup || ( this . popup = new ( this . popupClass ?
this . popupClass : OpenLayers . Popup . Anchored ) ( this . id + "_popup" , this . lonlat , this . data . popupSize , this . data . popupContentHTML , this . marker ? this . marker . icon : null , a ) ) , null != this . data . overflow && ( this . popup . contentDiv . style . overflow = this . data . overflow ) , this . popup . feature = this ) ; return this . popup } , destroyPopup : function ( ) { this . popup && ( this . popup . feature = null , this . popup . destroy ( ) , this . popup = null ) } , CLASS _NAME : "OpenLayers.Feature" } ) ; OpenLayers . State = { UNKNOWN : "Unknown" , INSERT : "Insert" , UPDATE : "Update" , DELETE : "Delete" } ;
OpenLayers . Feature . Vector = OpenLayers . Class ( OpenLayers . Feature , { fid : null , geometry : null , attributes : null , bounds : null , state : null , style : null , url : null , renderIntent : "default" , modified : null , initialize : function ( a , b , c ) { OpenLayers . Feature . prototype . initialize . apply ( this , [ null , null , b ] ) ; this . lonlat = null ; this . geometry = a ? a : null ; this . state = null ; this . attributes = { } ; b && ( this . attributes = OpenLayers . Util . extend ( this . attributes , b ) ) ; this . style = c ? c : null } , destroy : function ( ) { this . layer && ( this . layer . removeFeatures ( this ) , this . layer =
null ) ; this . modified = this . geometry = null ; OpenLayers . Feature . prototype . destroy . apply ( this , arguments ) } , clone : function ( ) { return new OpenLayers . Feature . Vector ( this . geometry ? this . geometry . clone ( ) : null , this . attributes , this . style ) } , onScreen : function ( a ) { var b = ! 1 ; this . layer && this . layer . map && ( b = this . layer . map . getExtent ( ) , a ? ( a = this . geometry . getBounds ( ) , b = b . intersectsBounds ( a ) ) : b = b . toGeometry ( ) . intersects ( this . geometry ) ) ; return b } , getVisibility : function ( ) { return ! ( this . style && "none" == this . style . display || ! this . layer ||
this . layer && this . layer . styleMap && "none" == this . layer . styleMap . createSymbolizer ( this , this . renderIntent ) . display || this . layer && ! this . layer . getVisibility ( ) ) } , createMarker : function ( ) { return null } , destroyMarker : function ( ) { } , createPopup : function ( ) { return null } , atPoint : function ( a , b , c ) { var d = ! 1 ; this . geometry && ( d = this . geometry . atPoint ( a , b , c ) ) ; return d } , destroyPopup : function ( ) { } , move : function ( a ) { if ( this . layer && this . geometry . move ) { var a = "OpenLayers.LonLat" == a . CLASS _NAME ? this . layer . getViewPortPxFromLonLat ( a ) : a ,
b = this . layer . getViewPortPxFromLonLat ( this . geometry . getBounds ( ) . getCenterLonLat ( ) ) , c = this . layer . map . getResolution ( ) ; this . geometry . move ( c * ( a . x - b . x ) , c * ( b . y - a . y ) ) ; this . layer . drawFeature ( this ) ; return b } } , toState : function ( a ) { if ( a == OpenLayers . State . UPDATE ) switch ( this . state ) { case OpenLayers . State . UNKNOWN : case OpenLayers . State . DELETE : this . state = a } else if ( a == OpenLayers . State . INSERT ) switch ( this . state ) { case OpenLayers . State . UNKNOWN : break ; default : this . state = a } else if ( a == OpenLayers . State . DELETE ) switch ( this . state ) { case OpenLayers . State . UNKNOWN : case OpenLayers . State . UPDATE : this . state =
a } else a == OpenLayers . State . UNKNOWN && ( this . state = a ) } , CLASS _NAME : "OpenLayers.Feature.Vector" } ) ;
OpenLayers . Feature . Vector . style = { "default" : { fillColor : "#ee9900" , fillOpacity : 0.4 , hoverFillColor : "white" , hoverFillOpacity : 0.8 , strokeColor : "#ee9900" , strokeOpacity : 1 , strokeWidth : 1 , strokeLinecap : "round" , strokeDashstyle : "solid" , hoverStrokeColor : "red" , hoverStrokeOpacity : 1 , hoverStrokeWidth : 0.2 , pointRadius : 6 , hoverPointRadius : 1 , hoverPointUnit : "%" , pointerEvents : "visiblePainted" , cursor : "inherit" , fontColor : "#000000" , labelAlign : "cm" , labelOutlineColor : "white" , labelOutlineWidth : 3 } , select : { fillColor : "blue" , fillOpacity : 0.4 ,
hoverFillColor : "white" , hoverFillOpacity : 0.8 , strokeColor : "blue" , strokeOpacity : 1 , strokeWidth : 2 , strokeLinecap : "round" , strokeDashstyle : "solid" , hoverStrokeColor : "red" , hoverStrokeOpacity : 1 , hoverStrokeWidth : 0.2 , pointRadius : 6 , hoverPointRadius : 1 , hoverPointUnit : "%" , pointerEvents : "visiblePainted" , cursor : "pointer" , fontColor : "#000000" , labelAlign : "cm" , labelOutlineColor : "white" , labelOutlineWidth : 3 } , temporary : { fillColor : "#66cccc" , fillOpacity : 0.2 , hoverFillColor : "white" , hoverFillOpacity : 0.8 , strokeColor : "#66cccc" , strokeOpacity : 1 ,
strokeLinecap : "round" , strokeWidth : 2 , strokeDashstyle : "solid" , hoverStrokeColor : "red" , hoverStrokeOpacity : 1 , hoverStrokeWidth : 0.2 , pointRadius : 6 , hoverPointRadius : 1 , hoverPointUnit : "%" , pointerEvents : "visiblePainted" , cursor : "inherit" , fontColor : "#000000" , labelAlign : "cm" , labelOutlineColor : "white" , labelOutlineWidth : 3 } , "delete" : { display : "none" } } ; OpenLayers . Style = OpenLayers . Class ( { id : null , name : null , title : null , description : null , layerName : null , isDefault : ! 1 , rules : null , context : null , defaultStyle : null , defaultsPerSymbolizer : ! 1 , propertyStyles : null , initialize : function ( a , b ) { OpenLayers . Util . extend ( this , b ) ; this . rules = [ ] ; b && b . rules && this . addRules ( b . rules ) ; this . setDefaultStyle ( a || OpenLayers . Feature . Vector . style [ "default" ] ) ; this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) } , destroy : function ( ) { for ( var a = 0 , b = this . rules . length ; a < b ; a ++ ) this . rules [ a ] . destroy ( ) ,
this . rules [ a ] = null ; this . defaultStyle = this . rules = null } , createSymbolizer : function ( a ) { for ( var b = this . defaultsPerSymbolizer ? { } : this . createLiterals ( OpenLayers . Util . extend ( { } , this . defaultStyle ) , a ) , c = this . rules , d , e = [ ] , f = ! 1 , g = 0 , h = c . length ; g < h ; g ++ ) d = c [ g ] , d . evaluate ( a ) && ( d instanceof OpenLayers . Rule && d . elseFilter ? e . push ( d ) : ( f = ! 0 , this . applySymbolizer ( d , b , a ) ) ) ; if ( ! 1 == f && 0 < e . length ) { f = ! 0 ; g = 0 ; for ( h = e . length ; g < h ; g ++ ) this . applySymbolizer ( e [ g ] , b , a ) } 0 < c . length && ! 1 == f && ( b . display = "none" ) ; null != b . label && "string" !== typeof b . label &&
( b . label = "" + b . label ) ; return b } , applySymbolizer : function ( a , b , c ) { var d = c . geometry ? this . getSymbolizerPrefix ( c . geometry ) : OpenLayers . Style . SYMBOLIZER _PREFIXES [ 0 ] , a = a . symbolizer [ d ] || a . symbolizer ; ! 0 === this . defaultsPerSymbolizer && ( d = this . defaultStyle , OpenLayers . Util . applyDefaults ( a , { pointRadius : d . pointRadius } ) , ( ! 0 === a . stroke || ! 0 === a . graphic ) && OpenLayers . Util . applyDefaults ( a , { strokeWidth : d . strokeWidth , strokeColor : d . strokeColor , strokeOpacity : d . strokeOpacity , strokeDashstyle : d . strokeDashstyle , strokeLinecap : d . strokeLinecap } ) ,
( ! 0 === a . fill || ! 0 === a . graphic ) && OpenLayers . Util . applyDefaults ( a , { fillColor : d . fillColor , fillOpacity : d . fillOpacity } ) , ! 0 === a . graphic && OpenLayers . Util . applyDefaults ( a , { pointRadius : this . defaultStyle . pointRadius , externalGraphic : this . defaultStyle . externalGraphic , graphicName : this . defaultStyle . graphicName , graphicOpacity : this . defaultStyle . graphicOpacity , graphicWidth : this . defaultStyle . graphicWidth , graphicHeight : this . defaultStyle . graphicHeight , graphicXOffset : this . defaultStyle . graphicXOffset , graphicYOffset : this . defaultStyle . graphicYOffset } ) ) ;
return this . createLiterals ( OpenLayers . Util . extend ( b , a ) , c ) } , createLiterals : function ( a , b ) { var c = OpenLayers . Util . extend ( { } , b . attributes || b . data ) ; OpenLayers . Util . extend ( c , this . context ) ; for ( var d in this . propertyStyles ) a [ d ] = OpenLayers . Style . createLiteral ( a [ d ] , c , b , d ) ; return a } , findPropertyStyles : function ( ) { var a = { } ; this . addPropertyStyles ( a , this . defaultStyle ) ; for ( var b = this . rules , c , d , e = 0 , f = b . length ; e < f ; e ++ ) { c = b [ e ] . symbolizer ; for ( var g in c ) if ( d = c [ g ] , "object" == typeof d ) this . addPropertyStyles ( a , d ) ; else { this . addPropertyStyles ( a ,
c ) ; break } } return a } , addPropertyStyles : function ( a , b ) { var c , d ; for ( d in b ) c = b [ d ] , "string" == typeof c && c . match ( /\$\{\w+\}/ ) && ( a [ d ] = ! 0 ) ; return a } , addRules : function ( a ) { Array . prototype . push . apply ( this . rules , a ) ; this . propertyStyles = this . findPropertyStyles ( ) } , setDefaultStyle : function ( a ) { this . defaultStyle = a ; this . propertyStyles = this . findPropertyStyles ( ) } , getSymbolizerPrefix : function ( a ) { for ( var b = OpenLayers . Style . SYMBOLIZER _PREFIXES , c = 0 , d = b . length ; c < d ; c ++ ) if ( - 1 != a . CLASS _NAME . indexOf ( b [ c ] ) ) return b [ c ] } , clone : function ( ) { var a =
OpenLayers . Util . extend ( { } , this ) ; if ( this . rules ) { a . rules = [ ] ; for ( var b = 0 , c = this . rules . length ; b < c ; ++ b ) a . rules . push ( this . rules [ b ] . clone ( ) ) } a . context = this . context && OpenLayers . Util . extend ( { } , this . context ) ; b = OpenLayers . Util . extend ( { } , this . defaultStyle ) ; return new OpenLayers . Style ( b , a ) } , CLASS _NAME : "OpenLayers.Style" } ) ; OpenLayers . Style . createLiteral = function ( a , b , c , d ) { "string" == typeof a && - 1 != a . indexOf ( "${" ) && ( a = OpenLayers . String . format ( a , b , [ c , d ] ) , a = isNaN ( a ) || ! a ? a : parseFloat ( a ) ) ; return a } ;
OpenLayers . Style . SYMBOLIZER _PREFIXES = [ "Point" , "Line" , "Polygon" , "Text" , "Raster" ] ; OpenLayers . Filter = OpenLayers . Class ( { initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) } , destroy : function ( ) { } , evaluate : function ( ) { return ! 0 } , clone : function ( ) { return null } , toString : function ( ) { return OpenLayers . Format && OpenLayers . Format . CQL ? OpenLayers . Format . CQL . prototype . write ( this ) : Object . prototype . toString . call ( this ) } , CLASS _NAME : "OpenLayers.Filter" } ) ; OpenLayers . Filter . FeatureId = OpenLayers . Class ( OpenLayers . Filter , { fids : null , type : "FID" , initialize : function ( a ) { this . fids = [ ] ; OpenLayers . Filter . prototype . initialize . apply ( this , [ a ] ) } , evaluate : function ( a ) { for ( var b = 0 , c = this . fids . length ; b < c ; b ++ ) if ( ( a . fid || a . id ) == this . fids [ b ] ) return ! 0 ; return ! 1 } , clone : function ( ) { var a = new OpenLayers . Filter . FeatureId ; OpenLayers . Util . extend ( a , this ) ; a . fids = this . fids . slice ( ) ; return a } , CLASS _NAME : "OpenLayers.Filter.FeatureId" } ) ; OpenLayers . Filter . Logical = OpenLayers . Class ( OpenLayers . Filter , { filters : null , type : null , initialize : function ( a ) { this . filters = [ ] ; OpenLayers . Filter . prototype . initialize . apply ( this , [ a ] ) } , destroy : function ( ) { this . filters = null ; OpenLayers . Filter . prototype . destroy . apply ( this ) } , evaluate : function ( a ) { var b , c ; switch ( this . type ) { case OpenLayers . Filter . Logical . AND : b = 0 ; for ( c = this . filters . length ; b < c ; b ++ ) if ( ! 1 == this . filters [ b ] . evaluate ( a ) ) return ! 1 ; return ! 0 ; case OpenLayers . Filter . Logical . OR : b = 0 ; for ( c = this . filters . length ; b <
c ; b ++ ) if ( ! 0 == this . filters [ b ] . evaluate ( a ) ) return ! 0 ; return ! 1 ; case OpenLayers . Filter . Logical . NOT : return ! this . filters [ 0 ] . evaluate ( a ) } } , clone : function ( ) { for ( var a = [ ] , b = 0 , c = this . filters . length ; b < c ; ++ b ) a . push ( this . filters [ b ] . clone ( ) ) ; return new OpenLayers . Filter . Logical ( { type : this . type , filters : a } ) } , CLASS _NAME : "OpenLayers.Filter.Logical" } ) ; OpenLayers . Filter . Logical . AND = "&&" ; OpenLayers . Filter . Logical . OR = "||" ; OpenLayers . Filter . Logical . NOT = "!" ; OpenLayers . Filter . Comparison = OpenLayers . Class ( OpenLayers . Filter , { type : null , property : null , value : null , matchCase : ! 0 , lowerBoundary : null , upperBoundary : null , initialize : function ( a ) { OpenLayers . Filter . prototype . initialize . apply ( this , [ a ] ) ; this . type === OpenLayers . Filter . Comparison . LIKE && void 0 === a . matchCase && ( this . matchCase = null ) } , evaluate : function ( a ) { a instanceof OpenLayers . Feature . Vector && ( a = a . attributes ) ; var b = ! 1 , a = a [ this . property ] ; switch ( this . type ) { case OpenLayers . Filter . Comparison . EQUAL _TO : b = this . value ;
b = ! this . matchCase && "string" == typeof a && "string" == typeof b ? a . toUpperCase ( ) == b . toUpperCase ( ) : a == b ; break ; case OpenLayers . Filter . Comparison . NOT _EQUAL _TO : b = this . value ; b = ! this . matchCase && "string" == typeof a && "string" == typeof b ? a . toUpperCase ( ) != b . toUpperCase ( ) : a != b ; break ; case OpenLayers . Filter . Comparison . LESS _THAN : b = a < this . value ; break ; case OpenLayers . Filter . Comparison . GREATER _THAN : b = a > this . value ; break ; case OpenLayers . Filter . Comparison . LESS _THAN _OR _EQUAL _TO : b = a <= this . value ; break ; case OpenLayers . Filter . Comparison . GREATER _THAN _OR _EQUAL _TO : b =
a >= this . value ; break ; case OpenLayers . Filter . Comparison . BETWEEN : b = a >= this . lowerBoundary && a <= this . upperBoundary ; break ; case OpenLayers . Filter . Comparison . LIKE : b = RegExp ( this . value , "gi" ) . test ( a ) } return b } , value2regex : function ( a , b , c ) { if ( "." == a ) throw Error ( "'.' is an unsupported wildCard character for OpenLayers.Filter.Comparison" ) ; a = a ? a : "*" ; b = b ? b : "." ; this . value = this . value . replace ( RegExp ( "\\" + ( c ? c : "!" ) + "(.|$)" , "g" ) , "\\$1" ) ; this . value = this . value . replace ( RegExp ( "\\" + b , "g" ) , "." ) ; this . value = this . value . replace ( RegExp ( "\\" +
a , "g" ) , ".*" ) ; this . value = this . value . replace ( RegExp ( "\\\\.\\*" , "g" ) , "\\" + a ) ; return this . value = this . value . replace ( RegExp ( "\\\\\\." , "g" ) , "\\" + b ) } , regex2value : function ( ) { var a = this . value , a = a . replace ( /!/g , "!!" ) , a = a . replace ( /(\\)?\\\./g , function ( a , c ) { return c ? a : "!." } ) , a = a . replace ( /(\\)?\\\*/g , function ( a , c ) { return c ? a : "!*" } ) , a = a . replace ( /\\\\/g , "\\" ) ; return a = a . replace ( /\.\*/g , "*" ) } , clone : function ( ) { return OpenLayers . Util . extend ( new OpenLayers . Filter . Comparison , this ) } , CLASS _NAME : "OpenLayers.Filter.Comparison" } ) ;
OpenLayers . Filter . Comparison . EQUAL _TO = "==" ; OpenLayers . Filter . Comparison . NOT _EQUAL _TO = "!=" ; OpenLayers . Filter . Comparison . LESS _THAN = "<" ; OpenLayers . Filter . Comparison . GREATER _THAN = ">" ; OpenLayers . Filter . Comparison . LESS _THAN _OR _EQUAL _TO = "<=" ; OpenLayers . Filter . Comparison . GREATER _THAN _OR _EQUAL _TO = ">=" ; OpenLayers . Filter . Comparison . BETWEEN = ".." ; OpenLayers . Filter . Comparison . LIKE = "~" ; OpenLayers . Format . Filter = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.0.0" , CLASS _NAME : "OpenLayers.Format.Filter" } ) ; OpenLayers . Filter . Function = OpenLayers . Class ( OpenLayers . Filter , { name : null , params : null , CLASS _NAME : "OpenLayers.Filter.Function" } ) ; OpenLayers . Format . Filter . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ogc : "http://www.opengis.net/ogc" , gml : "http://www.opengis.net/gml" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , defaultPrefix : "ogc" , schemaLocation : null , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { var b = { } ; this . readers . ogc . Filter . apply ( this , [ a , b ] ) ; return b . filter } , readers : { ogc : { _expression : function ( a ) { for ( var b = "" , c = a . firstChild ; c ; c =
c . nextSibling ) switch ( c . nodeType ) { case 1 : a = this . readNode ( c ) ; a . property ? b += "${" + a . property + "}" : void 0 !== a . value && ( b += a . value ) ; break ; case 3 : case 4 : b += c . nodeValue } return b } , Filter : function ( a , b ) { var c = { fids : [ ] , filters : [ ] } ; this . readChildNodes ( a , c ) ; 0 < c . fids . length ? b . filter = new OpenLayers . Filter . FeatureId ( { fids : c . fids } ) : 0 < c . filters . length && ( b . filter = c . filters [ 0 ] ) } , FeatureId : function ( a , b ) { var c = a . getAttribute ( "fid" ) ; c && b . fids . push ( c ) } , And : function ( a , b ) { var c = new OpenLayers . Filter . Logical ( { type : OpenLayers . Filter . Logical . AND } ) ;
this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , Or : function ( a , b ) { var c = new OpenLayers . Filter . Logical ( { type : OpenLayers . Filter . Logical . OR } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , Not : function ( a , b ) { var c = new OpenLayers . Filter . Logical ( { type : OpenLayers . Filter . Logical . NOT } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsLessThan : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . LESS _THAN } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsGreaterThan : function ( a ,
b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . GREATER _THAN } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsLessThanOrEqualTo : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . LESS _THAN _OR _EQUAL _TO } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsGreaterThanOrEqualTo : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . GREATER _THAN _OR _EQUAL _TO } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } ,
PropertyIsBetween : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . BETWEEN } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , Literal : function ( a , b ) { b . value = OpenLayers . String . numericIf ( this . getChildValue ( a ) ) } , PropertyName : function ( a , b ) { b . property = this . getChildValue ( a ) } , LowerBoundary : function ( a , b ) { b . lowerBoundary = OpenLayers . String . numericIf ( this . readers . ogc . _expression . call ( this , a ) ) } , UpperBoundary : function ( a , b ) { b . upperBoundary = OpenLayers . String . numericIf ( this . readers . ogc . _expression . call ( this ,
a ) ) } , Intersects : function ( a , b ) { this . readSpatial ( a , b , OpenLayers . Filter . Spatial . INTERSECTS ) } , Within : function ( a , b ) { this . readSpatial ( a , b , OpenLayers . Filter . Spatial . WITHIN ) } , Contains : function ( a , b ) { this . readSpatial ( a , b , OpenLayers . Filter . Spatial . CONTAINS ) } , DWithin : function ( a , b ) { this . readSpatial ( a , b , OpenLayers . Filter . Spatial . DWITHIN ) } , Distance : function ( a , b ) { b . distance = parseInt ( this . getChildValue ( a ) ) ; b . distanceUnits = a . getAttribute ( "units" ) } , Function : function ( ) { } } } , readSpatial : function ( a , b , c ) { c = new OpenLayers . Filter . Spatial ( { type : c } ) ;
this . readChildNodes ( a , c ) ; c . value = c . components [ 0 ] ; delete c . components ; b . filters . push ( c ) } , writeOgcExpression : function ( a , b ) { if ( a instanceof OpenLayers . Filter . Function ) { var c = this . writeNode ( "Function" , a , b ) ; b . appendChild ( c ) } else this . writeNode ( "Literal" , a , b ) ; return b } , write : function ( a ) { return this . writers . ogc . Filter . apply ( this , [ a ] ) } , writeFeatureIdNodes : function ( a , b ) { for ( var c = 0 , d = a . fids . length ; c < d ; ++ c ) this . writeNode ( "FeatureId" , a . fids [ c ] , b ) } , writers : { ogc : { Filter : function ( a ) { var b = this . createElementNSPlus ( "ogc:Filter" ) ;
"FID" === a . type ? OpenLayers . Format . Filter . v1 . prototype . writeFeatureIdNodes . call ( this , a , b ) : this . writeNode ( this . getFilterType ( a ) , a , b ) ; return b } , FeatureId : function ( a ) { return this . createElementNSPlus ( "ogc:FeatureId" , { attributes : { fid : a } } ) } , And : function ( a ) { for ( var b = this . createElementNSPlus ( "ogc:And" ) , c , d = 0 , e = a . filters . length ; d < e ; ++ d ) c = a . filters [ d ] , "FID" === c . type ? OpenLayers . Format . Filter . v1 . prototype . writeFeatureIdNodes . call ( this , c , b ) : this . writeNode ( this . getFilterType ( c ) , c , b ) ; return b } , Or : function ( a ) { for ( var b =
this . createElementNSPlus ( "ogc:Or" ) , c , d = 0 , e = a . filters . length ; d < e ; ++ d ) c = a . filters [ d ] , "FID" === c . type ? OpenLayers . Format . Filter . v1 . prototype . writeFeatureIdNodes . call ( this , c , b ) : this . writeNode ( this . getFilterType ( c ) , c , b ) ; return b } , Not : function ( a ) { var b = this . createElementNSPlus ( "ogc:Not" ) , a = a . filters [ 0 ] ; "FID" === a . type ? OpenLayers . Format . Filter . v1 . prototype . writeFeatureIdNodes . call ( this , a , b ) : this . writeNode ( this . getFilterType ( a ) , a , b ) ; return b } , PropertyIsLessThan : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsLessThan" ) ;
this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsGreaterThan : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsGreaterThan" ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsLessThanOrEqualTo : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsLessThanOrEqualTo" ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsGreaterThanOrEqualTo : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsGreaterThanOrEqualTo" ) ;
this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsBetween : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsBetween" ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeNode ( "LowerBoundary" , a , b ) ; this . writeNode ( "UpperBoundary" , a , b ) ; return b } , PropertyName : function ( a ) { return this . createElementNSPlus ( "ogc:PropertyName" , { value : a . property } ) } , Literal : function ( a ) { return this . createElementNSPlus ( "ogc:Literal" , { value : a } ) } , LowerBoundary : function ( a ) { var b = this . createElementNSPlus ( "ogc:LowerBoundary" ) ;
this . writeOgcExpression ( a . lowerBoundary , b ) ; return b } , UpperBoundary : function ( a ) { var b = this . createElementNSPlus ( "ogc:UpperBoundary" ) ; this . writeNode ( "Literal" , a . upperBoundary , b ) ; return b } , INTERSECTS : function ( a ) { return this . writeSpatial ( a , "Intersects" ) } , WITHIN : function ( a ) { return this . writeSpatial ( a , "Within" ) } , CONTAINS : function ( a ) { return this . writeSpatial ( a , "Contains" ) } , DWITHIN : function ( a ) { var b = this . writeSpatial ( a , "DWithin" ) ; this . writeNode ( "Distance" , a , b ) ; return b } , Distance : function ( a ) { return this . createElementNSPlus ( "ogc:Distance" ,
{ attributes : { units : a . distanceUnits } , value : a . distance } ) } , Function : function ( a ) { for ( var b = this . createElementNSPlus ( "ogc:Function" , { attributes : { name : a . name } } ) , a = a . params , c = 0 , d = a . length ; c < d ; c ++ ) this . writeOgcExpression ( a [ c ] , b ) ; return b } } } , getFilterType : function ( a ) { var b = this . filterMap [ a . type ] ; if ( ! b ) throw "Filter writing not supported for rule type: " + a . type ; return b } , filterMap : { "&&" : "And" , "||" : "Or" , "!" : "Not" , "==" : "PropertyIsEqualTo" , "!=" : "PropertyIsNotEqualTo" , "<" : "PropertyIsLessThan" , ">" : "PropertyIsGreaterThan" ,
"<=" : "PropertyIsLessThanOrEqualTo" , ">=" : "PropertyIsGreaterThanOrEqualTo" , ".." : "PropertyIsBetween" , "~" : "PropertyIsLike" , BBOX : "BBOX" , DWITHIN : "DWITHIN" , WITHIN : "WITHIN" , CONTAINS : "CONTAINS" , INTERSECTS : "INTERSECTS" , FID : "FeatureId" } , CLASS _NAME : "OpenLayers.Format.Filter.v1" } ) ; OpenLayers . Geometry = OpenLayers . Class ( { id : null , parent : null , bounds : null , initialize : function ( ) { this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) } , destroy : function ( ) { this . bounds = this . id = null } , clone : function ( ) { return new OpenLayers . Geometry } , setBounds : function ( a ) { a && ( this . bounds = a . clone ( ) ) } , clearBounds : function ( ) { this . bounds = null ; this . parent && this . parent . clearBounds ( ) } , extendBounds : function ( a ) { this . getBounds ( ) ? this . bounds . extend ( a ) : this . setBounds ( a ) } , getBounds : function ( ) { null == this . bounds && this . calculateBounds ( ) ;
return this . bounds } , calculateBounds : function ( ) { } , distanceTo : function ( ) { } , getVertices : function ( ) { } , atPoint : function ( a , b , c ) { var d = ! 1 ; null != this . getBounds ( ) && null != a && ( b = null != b ? b : 0 , c = null != c ? c : 0 , d = ( new OpenLayers . Bounds ( this . bounds . left - b , this . bounds . bottom - c , this . bounds . right + b , this . bounds . top + c ) ) . containsLonLat ( a ) ) ; return d } , getLength : function ( ) { return 0 } , getArea : function ( ) { return 0 } , getCentroid : function ( ) { return null } , toString : function ( ) { return OpenLayers . Format && OpenLayers . Format . WKT ? OpenLayers . Format . WKT . prototype . write ( new OpenLayers . Feature . Vector ( this ) ) :
Object . prototype . toString . call ( this ) } , CLASS _NAME : "OpenLayers.Geometry" } ) ; OpenLayers . Geometry . fromWKT = function ( a ) { var b ; if ( OpenLayers . Format && OpenLayers . Format . WKT ) { var c = OpenLayers . Geometry . fromWKT . format ; c || ( c = new OpenLayers . Format . WKT , OpenLayers . Geometry . fromWKT . format = c ) ; a = c . read ( a ) ; if ( a instanceof OpenLayers . Feature . Vector ) b = a . geometry ; else if ( OpenLayers . Util . isArray ( a ) ) { b = a . length ; for ( var c = Array ( b ) , d = 0 ; d < b ; ++ d ) c [ d ] = a [ d ] . geometry ; b = new OpenLayers . Geometry . Collection ( c ) } } return b } ;
OpenLayers . Geometry . segmentsIntersect = function ( a , b , c ) { var d = c && c . point , c = c && c . tolerance , e = ! 1 , f = a . x1 - b . x1 , g = a . y1 - b . y1 , h = a . x2 - a . x1 , i = a . y2 - a . y1 , j = b . y2 - b . y1 , k = b . x2 - b . x1 , l = j * h - k * i , j = k * g - j * f , g = h * g - i * f ; 0 == l ? 0 == j && 0 == g && ( e = ! 0 ) : ( f = j / l , l = g / l , 0 <= f && ( 1 >= f && 0 <= l && 1 >= l ) && ( d ? ( h = a . x1 + f * h , l = a . y1 + f * i , e = new OpenLayers . Geometry . Point ( h , l ) ) : e = ! 0 ) ) ; if ( c ) if ( e ) { if ( d ) { a = [ a , b ] ; b = 0 ; a : for ( ; 2 > b ; ++ b ) { f = a [ b ] ; for ( i = 1 ; 3 > i ; ++ i ) if ( h = f [ "x" + i ] , l = f [ "y" + i ] , d = Math . sqrt ( Math . pow ( h - e . x , 2 ) + Math . pow ( l - e . y , 2 ) ) , d < c ) { e . x = h ; e . y = l ; break a } } } } else { a =
[ a , b ] ; b = 0 ; a : for ( ; 2 > b ; ++ b ) { h = a [ b ] ; l = a [ ( b + 1 ) % 2 ] ; for ( i = 1 ; 3 > i ; ++ i ) if ( f = { x : h [ "x" + i ] , y : h [ "y" + i ] } , g = OpenLayers . Geometry . distanceToSegment ( f , l ) , g . distance < c ) { e = d ? new OpenLayers . Geometry . Point ( f . x , f . y ) : ! 0 ; break a } } } return e } ; OpenLayers . Geometry . distanceToSegment = function ( a , b ) { var c = a . x , d = a . y , e = b . x1 , f = b . y1 , g = b . x2 , h = b . y2 , i = g - e , j = h - f , k = ( i * ( c - e ) + j * ( d - f ) ) / ( Math . pow ( i , 2 ) + Math . pow ( j , 2 ) ) ; 0 >= k || ( 1 <= k ? ( e = g , f = h ) : ( e += k * i , f += k * j ) ) ; return { distance : Math . sqrt ( Math . pow ( e - c , 2 ) + Math . pow ( f - d , 2 ) ) , x : e , y : f } } ; OpenLayers . Geometry . Point = OpenLayers . Class ( OpenLayers . Geometry , { x : null , y : null , initialize : function ( a , b ) { OpenLayers . Geometry . prototype . initialize . apply ( this , arguments ) ; this . x = parseFloat ( a ) ; this . y = parseFloat ( b ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Geometry . Point ( this . x , this . y ) ) ; OpenLayers . Util . applyDefaults ( a , this ) ; return a } , calculateBounds : function ( ) { this . bounds = new OpenLayers . Bounds ( this . x , this . y , this . x , this . y ) } , distanceTo : function ( a , b ) { var c = ! ( b && ! 1 === b . edge ) && b && b . details , d , e , f , g , h ; a instanceof
OpenLayers . Geometry . Point ? ( e = this . x , f = this . y , g = a . x , h = a . y , d = Math . sqrt ( Math . pow ( e - g , 2 ) + Math . pow ( f - h , 2 ) ) , d = ! c ? d : { x0 : e , y0 : f , x1 : g , y1 : h , distance : d } ) : ( d = a . distanceTo ( this , b ) , c && ( d = { x0 : d . x1 , y0 : d . y1 , x1 : d . x0 , y1 : d . y0 , distance : d . distance } ) ) ; return d } , equals : function ( a ) { var b = ! 1 ; null != a && ( b = this . x == a . x && this . y == a . y || isNaN ( this . x ) && isNaN ( this . y ) && isNaN ( a . x ) && isNaN ( a . y ) ) ; return b } , toShortString : function ( ) { return this . x + ", " + this . y } , move : function ( a , b ) { this . x += a ; this . y += b ; this . clearBounds ( ) } , rotate : function ( a , b ) { var a =
a * ( Math . PI / 180 ) , c = this . distanceTo ( b ) , d = a + Math . atan2 ( this . y - b . y , this . x - b . x ) ; this . x = b . x + c * Math . cos ( d ) ; this . y = b . y + c * Math . sin ( d ) ; this . clearBounds ( ) } , getCentroid : function ( ) { return new OpenLayers . Geometry . Point ( this . x , this . y ) } , resize : function ( a , b , c ) { this . x = b . x + a * ( void 0 == c ? 1 : c ) * ( this . x - b . x ) ; this . y = b . y + a * ( this . y - b . y ) ; this . clearBounds ( ) ; return this } , intersects : function ( a ) { var b = ! 1 ; return b = "OpenLayers.Geometry.Point" == a . CLASS _NAME ? this . equals ( a ) : a . intersects ( this ) } , transform : function ( a , b ) { a && b && ( OpenLayers . Projection . transform ( this ,
a , b ) , this . bounds = null ) ; return this } , getVertices : function ( ) { return [ this ] } , CLASS _NAME : "OpenLayers.Geometry.Point" } ) ; OpenLayers . Geometry . Collection = OpenLayers . Class ( OpenLayers . Geometry , { components : null , componentTypes : null , initialize : function ( a ) { OpenLayers . Geometry . prototype . initialize . apply ( this , arguments ) ; this . components = [ ] ; null != a && this . addComponents ( a ) } , destroy : function ( ) { this . components . length = 0 ; this . components = null ; OpenLayers . Geometry . prototype . destroy . apply ( this , arguments ) } , clone : function ( ) { for ( var a = eval ( "new " + this . CLASS _NAME + "()" ) , b = 0 , c = this . components . length ; b < c ; b ++ ) a . addComponent ( this . components [ b ] . clone ( ) ) ;
OpenLayers . Util . applyDefaults ( a , this ) ; return a } , getComponentsString : function ( ) { for ( var a = [ ] , b = 0 , c = this . components . length ; b < c ; b ++ ) a . push ( this . components [ b ] . toShortString ( ) ) ; return a . join ( "," ) } , calculateBounds : function ( ) { this . bounds = null ; var a = new OpenLayers . Bounds , b = this . components ; if ( b ) for ( var c = 0 , d = b . length ; c < d ; c ++ ) a . extend ( b [ c ] . getBounds ( ) ) ; null != a . left && ( null != a . bottom && null != a . right && null != a . top ) && this . setBounds ( a ) } , addComponents : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var b = 0 , c = a . length ; b <
c ; b ++ ) this . addComponent ( a [ b ] ) } , addComponent : function ( a , b ) { var c = ! 1 ; if ( a && ( null == this . componentTypes || - 1 < OpenLayers . Util . indexOf ( this . componentTypes , a . CLASS _NAME ) ) ) { if ( null != b && b < this . components . length ) { var c = this . components . slice ( 0 , b ) , d = this . components . slice ( b , this . components . length ) ; c . push ( a ) ; this . components = c . concat ( d ) } else this . components . push ( a ) ; a . parent = this ; this . clearBounds ( ) ; c = ! 0 } return c } , removeComponents : function ( a ) { var b = ! 1 ; OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var c = a . length - 1 ; 0 <= c ; -- c ) b =
this . removeComponent ( a [ c ] ) || b ; return b } , removeComponent : function ( a ) { OpenLayers . Util . removeItem ( this . components , a ) ; this . clearBounds ( ) ; return ! 0 } , getLength : function ( ) { for ( var a = 0 , b = 0 , c = this . components . length ; b < c ; b ++ ) a += this . components [ b ] . getLength ( ) ; return a } , getArea : function ( ) { for ( var a = 0 , b = 0 , c = this . components . length ; b < c ; b ++ ) a += this . components [ b ] . getArea ( ) ; return a } , getGeodesicArea : function ( a ) { for ( var b = 0 , c = 0 , d = this . components . length ; c < d ; c ++ ) b += this . components [ c ] . getGeodesicArea ( a ) ; return b } , getCentroid : function ( a ) { if ( ! a ) return this . components . length &&
this . components [ 0 ] . getCentroid ( ) ; a = this . components . length ; if ( ! a ) return ! 1 ; for ( var b = [ ] , c = [ ] , d = 0 , e = Number . MAX _VALUE , f , g = 0 ; g < a ; ++ g ) { f = this . components [ g ] ; var h = f . getArea ( ) ; f = f . getCentroid ( ! 0 ) ; ! isNaN ( h ) && ( ! isNaN ( f . x ) && ! isNaN ( f . y ) ) && ( b . push ( h ) , d += h , e = h < e && 0 < h ? h : e , c . push ( f ) ) } a = b . length ; if ( 0 === d ) { for ( g = 0 ; g < a ; ++ g ) b [ g ] = 1 ; d = b . length } else { for ( g = 0 ; g < a ; ++ g ) b [ g ] /= e ; d /= e } for ( var i = e = 0 , g = 0 ; g < a ; ++ g ) f = c [ g ] , h = b [ g ] , e += f . x * h , i += f . y * h ; return new OpenLayers . Geometry . Point ( e / d , i / d ) } , getGeodesicLength : function ( a ) { for ( var b =
0 , c = 0 , d = this . components . length ; c < d ; c ++ ) b += this . components [ c ] . getGeodesicLength ( a ) ; return b } , move : function ( a , b ) { for ( var c = 0 , d = this . components . length ; c < d ; c ++ ) this . components [ c ] . move ( a , b ) } , rotate : function ( a , b ) { for ( var c = 0 , d = this . components . length ; c < d ; ++ c ) this . components [ c ] . rotate ( a , b ) } , resize : function ( a , b , c ) { for ( var d = 0 ; d < this . components . length ; ++ d ) this . components [ d ] . resize ( a , b , c ) ; return this } , distanceTo : function ( a , b ) { for ( var c = ! ( b && ! 1 === b . edge ) && b && b . details , d , e , f , g = Number . POSITIVE _INFINITY , h = 0 , i = this . components . length ; h <
i && ! ( d = this . components [ h ] . distanceTo ( a , b ) , f = c ? d . distance : d , f < g && ( g = f , e = d , 0 == g ) ) ; ++ h ) ; return e } , equals : function ( a ) { var b = ! 0 ; if ( ! a || ! a . CLASS _NAME || this . CLASS _NAME != a . CLASS _NAME ) b = ! 1 ; else if ( ! OpenLayers . Util . isArray ( a . components ) || a . components . length != this . components . length ) b = ! 1 ; else for ( var c = 0 , d = this . components . length ; c < d ; ++ c ) if ( ! this . components [ c ] . equals ( a . components [ c ] ) ) { b = ! 1 ; break } return b } , transform : function ( a , b ) { if ( a && b ) { for ( var c = 0 , d = this . components . length ; c < d ; c ++ ) this . components [ c ] . transform ( a ,
b ) ; this . bounds = null } return this } , intersects : function ( a ) { for ( var b = ! 1 , c = 0 , d = this . components . length ; c < d && ! ( b = a . intersects ( this . components [ c ] ) ) ; ++ c ) ; return b } , getVertices : function ( a ) { for ( var b = [ ] , c = 0 , d = this . components . length ; c < d ; ++ c ) Array . prototype . push . apply ( b , this . components [ c ] . getVertices ( a ) ) ; return b } , CLASS _NAME : "OpenLayers.Geometry.Collection" } ) ; OpenLayers . Geometry . MultiPoint = OpenLayers . Class ( OpenLayers . Geometry . Collection , { componentTypes : [ "OpenLayers.Geometry.Point" ] , addPoint : function ( a , b ) { this . addComponent ( a , b ) } , removePoint : function ( a ) { this . removeComponent ( a ) } , CLASS _NAME : "OpenLayers.Geometry.MultiPoint" } ) ; OpenLayers . Geometry . Curve = OpenLayers . Class ( OpenLayers . Geometry . MultiPoint , { componentTypes : [ "OpenLayers.Geometry.Point" ] , getLength : function ( ) { var a = 0 ; if ( this . components && 1 < this . components . length ) for ( var b = 1 , c = this . components . length ; b < c ; b ++ ) a += this . components [ b - 1 ] . distanceTo ( this . components [ b ] ) ; return a } , getGeodesicLength : function ( a ) { var b = this ; if ( a ) { var c = new OpenLayers . Projection ( "EPSG:4326" ) ; c . equals ( a ) || ( b = this . clone ( ) . transform ( a , c ) ) } a = 0 ; if ( b . components && 1 < b . components . length ) for ( var d , e = 1 , f = b . components . length ; e <
f ; e ++ ) c = b . components [ e - 1 ] , d = b . components [ e ] , a += OpenLayers . Util . distVincenty ( { lon : c . x , lat : c . y } , { lon : d . x , lat : d . y } ) ; return 1E3 * a } , CLASS _NAME : "OpenLayers.Geometry.Curve" } ) ; OpenLayers . Geometry . LineString = OpenLayers . Class ( OpenLayers . Geometry . Curve , { removeComponent : function ( a ) { var b = this . components && 2 < this . components . length ; b && OpenLayers . Geometry . Collection . prototype . removeComponent . apply ( this , arguments ) ; return b } , intersects : function ( a ) { var b = ! 1 , c = a . CLASS _NAME ; if ( "OpenLayers.Geometry.LineString" == c || "OpenLayers.Geometry.LinearRing" == c || "OpenLayers.Geometry.Point" == c ) { var d = this . getSortedSegments ( ) , a = "OpenLayers.Geometry.Point" == c ? [ { x1 : a . x , y1 : a . y , x2 : a . x , y2 : a . y } ] : a . getSortedSegments ( ) ,
e , f , g , h , i , j , k , l = 0 , m = d . length ; a : for ( ; l < m ; ++ l ) { c = d [ l ] ; e = c . x1 ; f = c . x2 ; g = c . y1 ; h = c . y2 ; var n = 0 , o = a . length ; for ( ; n < o ; ++ n ) { i = a [ n ] ; if ( i . x1 > f ) break ; if ( ! ( i . x2 < e ) && ( j = i . y1 , k = i . y2 , ! ( Math . min ( j , k ) > Math . max ( g , h ) ) && ! ( Math . max ( j , k ) < Math . min ( g , h ) ) && OpenLayers . Geometry . segmentsIntersect ( c , i ) ) ) { b = ! 0 ; break a } } } } else b = a . intersects ( this ) ; return b } , getSortedSegments : function ( ) { for ( var a = this . components . length - 1 , b = Array ( a ) , c , d , e = 0 ; e < a ; ++ e ) c = this . components [ e ] , d = this . components [ e + 1 ] , b [ e ] = c . x < d . x ? { x1 : c . x , y1 : c . y , x2 : d . x , y2 : d . y } :
{ x1 : d . x , y1 : d . y , x2 : c . x , y2 : c . y } ; return b . sort ( function ( a , b ) { return a . x1 - b . x1 } ) } , splitWithSegment : function ( a , b ) { for ( var c = ! ( b && ! 1 === b . edge ) , d = b && b . tolerance , e = [ ] , f = this . getVertices ( ) , g = [ ] , h = [ ] , i = ! 1 , j , k , l , m = { point : ! 0 , tolerance : d } , n = null , o = 0 , p = f . length - 2 ; o <= p ; ++ o ) if ( d = f [ o ] , g . push ( d . clone ( ) ) , j = f [ o + 1 ] , k = { x1 : d . x , y1 : d . y , x2 : j . x , y2 : j . y } , k = OpenLayers . Geometry . segmentsIntersect ( a , k , m ) , k instanceof OpenLayers . Geometry . Point && ( ( l = k . x === a . x1 && k . y === a . y1 || k . x === a . x2 && k . y === a . y2 || k . equals ( d ) || k . equals ( j ) ? ! 0 : ! 1 ) || c ) ) k . equals ( h [ h . length -
1 ] ) || h . push ( k . clone ( ) ) , ! ( 0 === o && k . equals ( d ) ) && ! k . equals ( j ) && ( i = ! 0 , k . equals ( d ) || g . push ( k ) , e . push ( new OpenLayers . Geometry . LineString ( g ) ) , g = [ k . clone ( ) ] ) ; i && ( g . push ( j . clone ( ) ) , e . push ( new OpenLayers . Geometry . LineString ( g ) ) ) ; if ( 0 < h . length ) var q = a . x1 < a . x2 ? 1 : - 1 , r = a . y1 < a . y2 ? 1 : - 1 , n = { lines : e , points : h . sort ( function ( a , b ) { return q * a . x - q * b . x || r * a . y - r * b . y } ) } ; return n } , split : function ( a , b ) { var c = null , d = b && b . mutual , e , f , g , h ; if ( a instanceof OpenLayers . Geometry . LineString ) { var i = this . getVertices ( ) , j , k , l , m , n , o = [ ] ; g = [ ] ;
for ( var p = 0 , q = i . length - 2 ; p <= q ; ++ p ) { j = i [ p ] ; k = i [ p + 1 ] ; l = { x1 : j . x , y1 : j . y , x2 : k . x , y2 : k . y } ; h = h || [ a ] ; d && o . push ( j . clone ( ) ) ; for ( var r = 0 ; r < h . length ; ++ r ) if ( m = h [ r ] . splitWithSegment ( l , b ) ) if ( n = m . lines , 0 < n . length && ( n . unshift ( r , 1 ) , Array . prototype . splice . apply ( h , n ) , r += n . length - 2 ) , d ) for ( var s = 0 , t = m . points . length ; s < t ; ++ s ) n = m . points [ s ] , n . equals ( j ) || ( o . push ( n ) , g . push ( new OpenLayers . Geometry . LineString ( o ) ) , o = n . equals ( k ) ? [ ] : [ n . clone ( ) ] ) } d && ( 0 < g . length && 0 < o . length ) && ( o . push ( k . clone ( ) ) , g . push ( new OpenLayers . Geometry . LineString ( o ) ) ) } else c =
a . splitWith ( this , b ) ; h && 1 < h . length ? f = ! 0 : h = [ ] ; g && 1 < g . length ? e = ! 0 : g = [ ] ; if ( f || e ) c = d ? [ g , h ] : h ; return c } , splitWith : function ( a , b ) { return a . split ( this , b ) } , getVertices : function ( a ) { return ! 0 === a ? [ this . components [ 0 ] , this . components [ this . components . length - 1 ] ] : ! 1 === a ? this . components . slice ( 1 , this . components . length - 1 ) : this . components . slice ( ) } , distanceTo : function ( a , b ) { var c = ! ( b && ! 1 === b . edge ) && b && b . details , d , e = { } , f = Number . POSITIVE _INFINITY ; if ( a instanceof OpenLayers . Geometry . Point ) { for ( var g = this . getSortedSegments ( ) ,
h = a . x , i = a . y , j , k = 0 , l = g . length ; k < l ; ++ k ) if ( j = g [ k ] , d = OpenLayers . Geometry . distanceToSegment ( a , j ) , d . distance < f ) { if ( f = d . distance , e = d , 0 === f ) break } else if ( j . x2 > h && ( i > j . y1 && i < j . y2 || i < j . y1 && i > j . y2 ) ) break ; e = c ? { distance : e . distance , x0 : e . x , y0 : e . y , x1 : h , y1 : i } : e . distance } else if ( a instanceof OpenLayers . Geometry . LineString ) { var g = this . getSortedSegments ( ) , h = a . getSortedSegments ( ) , m , n , o = h . length , p = { point : ! 0 } , k = 0 , l = g . length ; a : for ( ; k < l ; ++ k ) { i = g [ k ] ; j = i . x1 ; n = i . y1 ; for ( var q = 0 ; q < o ; ++ q ) if ( d = h [ q ] , m = OpenLayers . Geometry . segmentsIntersect ( i ,
d , p ) ) { f = 0 ; e = { distance : 0 , x0 : m . x , y0 : m . y , x1 : m . x , y1 : m . y } ; break a } else d = OpenLayers . Geometry . distanceToSegment ( { x : j , y : n } , d ) , d . distance < f && ( f = d . distance , e = { distance : f , x0 : j , y0 : n , x1 : d . x , y1 : d . y } ) } c || ( e = e . distance ) ; 0 !== f && i && ( d = a . distanceTo ( new OpenLayers . Geometry . Point ( i . x2 , i . y2 ) , b ) , k = c ? d . distance : d , k < f && ( e = c ? { distance : f , x0 : d . x1 , y0 : d . y1 , x1 : d . x0 , y1 : d . y0 } : k ) ) } else e = a . distanceTo ( this , b ) , c && ( e = { distance : e . distance , x0 : e . x1 , y0 : e . y1 , x1 : e . x0 , y1 : e . y0 } ) ; return e } , simplify : function ( a ) { if ( this && null !== this ) { var b = this . getVertices ( ) ;
if ( 3 > b . length ) return this ; var c = function ( a , b , d , i ) { for ( var j = 0 , k = 0 , l = b , m ; l < d ; l ++ ) { m = a [ b ] ; var n = a [ d ] , o = a [ l ] , o = Math . abs ( 0.5 * ( m . x * n . y + n . x * o . y + o . x * m . y - n . x * m . y - o . x * n . y - m . x * o . y ) ) ; m = Math . sqrt ( Math . pow ( m . x - n . x , 2 ) + Math . pow ( m . y - n . y , 2 ) ) ; m = 2 * ( o / m ) ; m > j && ( j = m , k = l ) } j > i && k != b && ( e . push ( k ) , c ( a , b , k , i ) , c ( a , k , d , i ) ) } , d = b . length - 1 , e = [ ] ; e . push ( 0 ) ; for ( e . push ( d ) ; b [ 0 ] . equals ( b [ d ] ) ; ) d -- , e . push ( d ) ; c ( b , 0 , d , a ) ; a = [ ] ; e . sort ( function ( a , b ) { return a - b } ) ; for ( d = 0 ; d < e . length ; d ++ ) a . push ( b [ e [ d ] ] ) ; return new OpenLayers . Geometry . LineString ( a ) } return this } ,
CLASS _NAME : "OpenLayers.Geometry.LineString" } ) ; OpenLayers . Geometry . MultiLineString = OpenLayers . Class ( OpenLayers . Geometry . Collection , { componentTypes : [ "OpenLayers.Geometry.LineString" ] , split : function ( a , b ) { for ( var c = null , d = b && b . mutual , e , f , g , h , i = [ ] , j = [ a ] , k = 0 , l = this . components . length ; k < l ; ++ k ) { f = this . components [ k ] ; g = ! 1 ; for ( var m = 0 ; m < j . length ; ++ m ) if ( e = f . split ( j [ m ] , b ) ) { if ( d ) { g = e [ 0 ] ; for ( var n = 0 , o = g . length ; n < o ; ++ n ) 0 === n && i . length ? i [ i . length - 1 ] . addComponent ( g [ n ] ) : i . push ( new OpenLayers . Geometry . MultiLineString ( [ g [ n ] ] ) ) ; g = ! 0 ; e = e [ 1 ] } if ( e . length ) { e . unshift ( m ,
1 ) ; Array . prototype . splice . apply ( j , e ) ; break } } g || ( i . length ? i [ i . length - 1 ] . addComponent ( f . clone ( ) ) : i = [ new OpenLayers . Geometry . MultiLineString ( f . clone ( ) ) ] ) } i && 1 < i . length ? g = ! 0 : i = [ ] ; j && 1 < j . length ? h = ! 0 : j = [ ] ; if ( g || h ) c = d ? [ i , j ] : j ; return c } , splitWith : function ( a , b ) { var c = null , d = b && b . mutual , e , f , g , h , i , j ; if ( a instanceof OpenLayers . Geometry . LineString ) { j = [ ] ; i = [ a ] ; for ( var k = 0 , l = this . components . length ; k < l ; ++ k ) { g = ! 1 ; f = this . components [ k ] ; for ( var m = 0 ; m < i . length ; ++ m ) if ( e = i [ m ] . split ( f , b ) ) { d && ( g = e [ 0 ] , g . length && ( g . unshift ( m ,
1 ) , Array . prototype . splice . apply ( i , g ) , m += g . length - 2 ) , e = e [ 1 ] , 0 === e . length && ( e = [ f . clone ( ) ] ) ) ; g = 0 ; for ( var n = e . length ; g < n ; ++ g ) 0 === g && j . length ? j [ j . length - 1 ] . addComponent ( e [ g ] ) : j . push ( new OpenLayers . Geometry . MultiLineString ( [ e [ g ] ] ) ) ; g = ! 0 } g || ( j . length ? j [ j . length - 1 ] . addComponent ( f . clone ( ) ) : j = [ new OpenLayers . Geometry . MultiLineString ( [ f . clone ( ) ] ) ] ) } } else c = a . split ( this ) ; i && 1 < i . length ? h = ! 0 : i = [ ] ; j && 1 < j . length ? g = ! 0 : j = [ ] ; if ( h || g ) c = d ? [ i , j ] : j ; return c } , CLASS _NAME : "OpenLayers.Geometry.MultiLineString" } ) ; OpenLayers . Geometry . LinearRing = OpenLayers . Class ( OpenLayers . Geometry . LineString , { componentTypes : [ "OpenLayers.Geometry.Point" ] , addComponent : function ( a , b ) { var c = ! 1 , d = this . components . pop ( ) ; if ( null != b || ! a . equals ( d ) ) c = OpenLayers . Geometry . Collection . prototype . addComponent . apply ( this , arguments ) ; OpenLayers . Geometry . Collection . prototype . addComponent . apply ( this , [ this . components [ 0 ] ] ) ; return c } , removeComponent : function ( a ) { var b = this . components && 3 < this . components . length ; b && ( this . components . pop ( ) , OpenLayers . Geometry . Collection . prototype . removeComponent . apply ( this ,
arguments ) , OpenLayers . Geometry . Collection . prototype . addComponent . apply ( this , [ this . components [ 0 ] ] ) ) ; return b } , move : function ( a , b ) { for ( var c = 0 , d = this . components . length ; c < d - 1 ; c ++ ) this . components [ c ] . move ( a , b ) } , rotate : function ( a , b ) { for ( var c = 0 , d = this . components . length ; c < d - 1 ; ++ c ) this . components [ c ] . rotate ( a , b ) } , resize : function ( a , b , c ) { for ( var d = 0 , e = this . components . length ; d < e - 1 ; ++ d ) this . components [ d ] . resize ( a , b , c ) ; return this } , transform : function ( a , b ) { if ( a && b ) { for ( var c = 0 , d = this . components . length ; c < d - 1 ; c ++ ) this . components [ c ] . transform ( a ,
b ) ; this . bounds = null } return this } , getCentroid : function ( ) { if ( this . components && 2 < this . components . length ) { for ( var a = 0 , b = 0 , c = 0 ; c < this . components . length - 1 ; c ++ ) var d = this . components [ c ] , e = this . components [ c + 1 ] , a = a + ( d . x + e . x ) * ( d . x * e . y - e . x * d . y ) , b = b + ( d . y + e . y ) * ( d . x * e . y - e . x * d . y ) ; c = - 1 * this . getArea ( ) ; return new OpenLayers . Geometry . Point ( a / ( 6 * c ) , b / ( 6 * c ) ) } return null } , getArea : function ( ) { var a = 0 ; if ( this . components && 2 < this . components . length ) { for ( var b = a = 0 , c = this . components . length ; b < c - 1 ; b ++ ) var d = this . components [ b ] , e =
this . components [ b + 1 ] , a = a + ( d . x + e . x ) * ( e . y - d . y ) ; a = - a / 2 } return a } , getGeodesicArea : function ( a ) { var b = this ; if ( a ) { var c = new OpenLayers . Projection ( "EPSG:4326" ) ; c . equals ( a ) || ( b = this . clone ( ) . transform ( a , c ) ) } a = 0 ; c = b . components && b . components . length ; if ( 2 < c ) { for ( var d , e , f = 0 ; f < c - 1 ; f ++ ) d = b . components [ f ] , e = b . components [ f + 1 ] , a += OpenLayers . Util . rad ( e . x - d . x ) * ( 2 + Math . sin ( OpenLayers . Util . rad ( d . y ) ) + Math . sin ( OpenLayers . Util . rad ( e . y ) ) ) ; a = 40680631590769 * a / 2 } return a } , containsPoint : function ( a ) { for ( var b = OpenLayers . Number . limitSigDigs ,
c = b ( a . x , 14 ) , a = b ( a . y , 14 ) , d = this . components . length - 1 , e , f , g , h , i , j = 0 , k = 0 ; k < d ; ++ k ) if ( e = this . components [ k ] , g = b ( e . x , 14 ) , e = b ( e . y , 14 ) , f = this . components [ k + 1 ] , h = b ( f . x , 14 ) , f = b ( f . y , 14 ) , e == f ) { if ( a == e && ( g <= h && c >= g && c <= h || g >= h && c <= g && c >= h ) ) { j = - 1 ; break } } else { i = b ( ( a - f ) * ( ( h - g ) / ( f - e ) ) + h , 14 ) ; if ( i == c && ( e < f && a >= e && a <= f || e > f && a <= e && a >= f ) ) { j = - 1 ; break } i <= c || g != h && ( i < Math . min ( g , h ) || i > Math . max ( g , h ) ) || ( e < f && a >= e && a < f || e > f && a < e && a >= f ) && ++ j } return - 1 == j ? 1 : ! ! ( j & 1 ) } , intersects : function ( a ) { var b = ! 1 ; if ( "OpenLayers.Geometry.Point" ==
a . CLASS _NAME ) b = this . containsPoint ( a ) ; else if ( "OpenLayers.Geometry.LineString" == a . CLASS _NAME ) b = a . intersects ( this ) ; else if ( "OpenLayers.Geometry.LinearRing" == a . CLASS _NAME ) b = OpenLayers . Geometry . LineString . prototype . intersects . apply ( this , [ a ] ) ; else for ( var c = 0 , d = a . components . length ; c < d && ! ( b = a . components [ c ] . intersects ( this ) ) ; ++ c ) ; return b } , getVertices : function ( a ) { return ! 0 === a ? [ ] : this . components . slice ( 0 , this . components . length - 1 ) } , CLASS _NAME : "OpenLayers.Geometry.LinearRing" } ) ; OpenLayers . Geometry . Polygon = OpenLayers . Class ( OpenLayers . Geometry . Collection , { componentTypes : [ "OpenLayers.Geometry.LinearRing" ] , getArea : function ( ) { var a = 0 ; if ( this . components && 0 < this . components . length ) for ( var a = a + Math . abs ( this . components [ 0 ] . getArea ( ) ) , b = 1 , c = this . components . length ; b < c ; b ++ ) a -= Math . abs ( this . components [ b ] . getArea ( ) ) ; return a } , getGeodesicArea : function ( a ) { var b = 0 ; if ( this . components && 0 < this . components . length ) for ( var b = b + Math . abs ( this . components [ 0 ] . getGeodesicArea ( a ) ) , c = 1 , d = this . components . length ; c <
d ; c ++ ) b -= Math . abs ( this . components [ c ] . getGeodesicArea ( a ) ) ; return b } , containsPoint : function ( a ) { var b = this . components . length , c = ! 1 ; if ( 0 < b && ( c = this . components [ 0 ] . containsPoint ( a ) , 1 !== c && c && 1 < b ) ) for ( var d , e = 1 ; e < b ; ++ e ) if ( d = this . components [ e ] . containsPoint ( a ) ) { c = 1 === d ? 1 : ! 1 ; break } return c } , intersects : function ( a ) { var b = ! 1 , c , d ; if ( "OpenLayers.Geometry.Point" == a . CLASS _NAME ) b = this . containsPoint ( a ) ; else if ( "OpenLayers.Geometry.LineString" == a . CLASS _NAME || "OpenLayers.Geometry.LinearRing" == a . CLASS _NAME ) { c = 0 ; for ( d =
this . components . length ; c < d && ! ( b = a . intersects ( this . components [ c ] ) ) ; ++ c ) ; if ( ! b ) { c = 0 ; for ( d = a . components . length ; c < d && ! ( b = this . containsPoint ( a . components [ c ] ) ) ; ++ c ) ; } } else { c = 0 ; for ( d = a . components . length ; c < d && ! ( b = this . intersects ( a . components [ c ] ) ) ; ++ c ) ; } if ( ! b && "OpenLayers.Geometry.Polygon" == a . CLASS _NAME ) { var e = this . components [ 0 ] ; c = 0 ; for ( d = e . components . length ; c < d && ! ( b = a . containsPoint ( e . components [ c ] ) ) ; ++ c ) ; } return b } , distanceTo : function ( a , b ) { return b && ! 1 === b . edge && this . intersects ( a ) ? 0 : OpenLayers . Geometry . Collection . prototype . distanceTo . apply ( this ,
[ a , b ] ) } , CLASS _NAME : "OpenLayers.Geometry.Polygon" } ) ; OpenLayers . Geometry . Polygon . createRegularPolygon = function ( a , b , c , d ) { var e = Math . PI * ( 1 / c - 0.5 ) ; d && ( e += d / 180 * Math . PI ) ; for ( var f , g = [ ] , h = 0 ; h < c ; ++ h ) f = e + 2 * h * Math . PI / c , d = a . x + b * Math . cos ( f ) , f = a . y + b * Math . sin ( f ) , g . push ( new OpenLayers . Geometry . Point ( d , f ) ) ; a = new OpenLayers . Geometry . LinearRing ( g ) ; return new OpenLayers . Geometry . Polygon ( [ a ] ) } ; OpenLayers . Geometry . MultiPolygon = OpenLayers . Class ( OpenLayers . Geometry . Collection , { componentTypes : [ "OpenLayers.Geometry.Polygon" ] , CLASS _NAME : "OpenLayers.Geometry.MultiPolygon" } ) ; OpenLayers . Format . GML = OpenLayers . Class ( OpenLayers . Format . XML , { featureNS : "http://mapserver.gis.umn.edu/mapserver" , featurePrefix : "feature" , featureName : "featureMember" , layerName : "features" , geometryName : "geometry" , collectionName : "FeatureCollection" , gmlns : "http://www.opengis.net/gml" , extractAttributes : ! 0 , xy : ! 0 , initialize : function ( a ) { this . regExes = { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } ; OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { "string" ==
typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; for ( var a = this . getElementsByTagNameNS ( a . documentElement , this . gmlns , this . featureName ) , b = [ ] , c = 0 ; c < a . length ; c ++ ) { var d = this . parseFeature ( a [ c ] ) ; d && b . push ( d ) } return b } , parseFeature : function ( a ) { for ( var b = "MultiPolygon Polygon MultiLineString LineString MultiPoint Point Envelope" . split ( " " ) , c , d , e , f = 0 ; f < b . length ; ++ f ) if ( c = b [ f ] , d = this . getElementsByTagNameNS ( a , this . gmlns , c ) , 0 < d . length ) { if ( e = this . parseGeometry [ c . toLowerCase ( ) ] ) e = e . apply ( this ,
[ d [ 0 ] ] ) , this . internalProjection && this . externalProjection && e . transform ( this . externalProjection , this . internalProjection ) ; else throw new TypeError ( "Unsupported geometry type: " + c ) ; break } var g ; c = this . getElementsByTagNameNS ( a , this . gmlns , "Box" ) ; for ( f = 0 ; f < c . length ; ++ f ) b = c [ f ] , d = this . parseGeometry . box . apply ( this , [ b ] ) , b = b . parentNode , "boundedBy" === ( b . localName || b . nodeName . split ( ":" ) . pop ( ) ) ? g = d : e = d . toGeometry ( ) ; var h ; this . extractAttributes && ( h = this . parseAttributes ( a ) ) ; h = new OpenLayers . Feature . Vector ( e , h ) ; h . bounds =
g ; h . gml = { featureType : a . firstChild . nodeName . split ( ":" ) [ 1 ] , featureNS : a . firstChild . namespaceURI , featureNSPrefix : a . firstChild . prefix } ; for ( var a = a . firstChild , i ; a && ! ( 1 == a . nodeType && ( i = a . getAttribute ( "fid" ) || a . getAttribute ( "id" ) ) ) ; ) a = a . nextSibling ; h . fid = i ; return h } , parseGeometry : { point : function ( a ) { var b , c ; c = [ ] ; b = this . getElementsByTagNameNS ( a , this . gmlns , "pos" ) ; 0 < b . length && ( c = b [ 0 ] . firstChild . nodeValue , c = c . replace ( this . regExes . trimSpace , "" ) , c = c . split ( this . regExes . splitSpace ) ) ; 0 == c . length && ( b = this . getElementsByTagNameNS ( a ,
this . gmlns , "coordinates" ) , 0 < b . length && ( c = b [ 0 ] . firstChild . nodeValue , c = c . replace ( this . regExes . removeSpace , "" ) , c = c . split ( "," ) ) ) ; 0 == c . length && ( b = this . getElementsByTagNameNS ( a , this . gmlns , "coord" ) , 0 < b . length && ( a = this . getElementsByTagNameNS ( b [ 0 ] , this . gmlns , "X" ) , b = this . getElementsByTagNameNS ( b [ 0 ] , this . gmlns , "Y" ) , 0 < a . length && 0 < b . length && ( c = [ a [ 0 ] . firstChild . nodeValue , b [ 0 ] . firstChild . nodeValue ] ) ) ) ; 2 == c . length && ( c [ 2 ] = null ) ; return this . xy ? new OpenLayers . Geometry . Point ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) : new OpenLayers . Geometry . Point ( c [ 1 ] ,
c [ 0 ] , c [ 2 ] ) } , multipoint : function ( a ) { var a = this . getElementsByTagNameNS ( a , this . gmlns , "Point" ) , b = [ ] ; if ( 0 < a . length ) for ( var c , d = 0 ; d < a . length ; ++ d ) ( c = this . parseGeometry . point . apply ( this , [ a [ d ] ] ) ) && b . push ( c ) ; return new OpenLayers . Geometry . MultiPoint ( b ) } , linestring : function ( a , b ) { var c , d ; d = [ ] ; var e = [ ] ; c = this . getElementsByTagNameNS ( a , this . gmlns , "posList" ) ; if ( 0 < c . length ) { d = this . getChildValue ( c [ 0 ] ) ; d = d . replace ( this . regExes . trimSpace , "" ) ; d = d . split ( this . regExes . splitSpace ) ; var f = parseInt ( c [ 0 ] . getAttribute ( "dimension" ) ) ,
g , h , i ; for ( c = 0 ; c < d . length / f ; ++ c ) g = c * f , h = d [ g ] , i = d [ g + 1 ] , g = 2 == f ? null : d [ g + 2 ] , this . xy ? e . push ( new OpenLayers . Geometry . Point ( h , i , g ) ) : e . push ( new OpenLayers . Geometry . Point ( i , h , g ) ) } if ( 0 == d . length && ( c = this . getElementsByTagNameNS ( a , this . gmlns , "coordinates" ) , 0 < c . length ) ) { d = this . getChildValue ( c [ 0 ] ) ; d = d . replace ( this . regExes . trimSpace , "" ) ; d = d . replace ( this . regExes . trimComma , "," ) ; f = d . split ( this . regExes . splitSpace ) ; for ( c = 0 ; c < f . length ; ++ c ) d = f [ c ] . split ( "," ) , 2 == d . length && ( d [ 2 ] = null ) , this . xy ? e . push ( new OpenLayers . Geometry . Point ( d [ 0 ] ,
d [ 1 ] , d [ 2 ] ) ) : e . push ( new OpenLayers . Geometry . Point ( d [ 1 ] , d [ 0 ] , d [ 2 ] ) ) } d = null ; 0 != e . length && ( d = b ? new OpenLayers . Geometry . LinearRing ( e ) : new OpenLayers . Geometry . LineString ( e ) ) ; return d } , multilinestring : function ( a ) { var a = this . getElementsByTagNameNS ( a , this . gmlns , "LineString" ) , b = [ ] ; if ( 0 < a . length ) for ( var c , d = 0 ; d < a . length ; ++ d ) ( c = this . parseGeometry . linestring . apply ( this , [ a [ d ] ] ) ) && b . push ( c ) ; return new OpenLayers . Geometry . MultiLineString ( b ) } , polygon : function ( a ) { var a = this . getElementsByTagNameNS ( a , this . gmlns , "LinearRing" ) ,
b = [ ] ; if ( 0 < a . length ) for ( var c , d = 0 ; d < a . length ; ++ d ) ( c = this . parseGeometry . linestring . apply ( this , [ a [ d ] , ! 0 ] ) ) && b . push ( c ) ; return new OpenLayers . Geometry . Polygon ( b ) } , multipolygon : function ( a ) { var a = this . getElementsByTagNameNS ( a , this . gmlns , "Polygon" ) , b = [ ] ; if ( 0 < a . length ) for ( var c , d = 0 ; d < a . length ; ++ d ) ( c = this . parseGeometry . polygon . apply ( this , [ a [ d ] ] ) ) && b . push ( c ) ; return new OpenLayers . Geometry . MultiPolygon ( b ) } , envelope : function ( a ) { var b = [ ] , c , d , e = this . getElementsByTagNameNS ( a , this . gmlns , "lowerCorner" ) ; if ( 0 < e . length ) { c =
[ ] ; 0 < e . length && ( c = e [ 0 ] . firstChild . nodeValue , c = c . replace ( this . regExes . trimSpace , "" ) , c = c . split ( this . regExes . splitSpace ) ) ; 2 == c . length && ( c [ 2 ] = null ) ; var f = this . xy ? new OpenLayers . Geometry . Point ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) : new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 0 ] , c [ 2 ] ) } a = this . getElementsByTagNameNS ( a , this . gmlns , "upperCorner" ) ; if ( 0 < a . length ) { c = [ ] ; 0 < a . length && ( c = a [ 0 ] . firstChild . nodeValue , c = c . replace ( this . regExes . trimSpace , "" ) , c = c . split ( this . regExes . splitSpace ) ) ; 2 == c . length && ( c [ 2 ] = null ) ; var g = this . xy ? new OpenLayers . Geometry . Point ( c [ 0 ] ,
c [ 1 ] , c [ 2 ] ) : new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 0 ] , c [ 2 ] ) } f && g && ( b . push ( new OpenLayers . Geometry . Point ( f . x , f . y ) ) , b . push ( new OpenLayers . Geometry . Point ( g . x , f . y ) ) , b . push ( new OpenLayers . Geometry . Point ( g . x , g . y ) ) , b . push ( new OpenLayers . Geometry . Point ( f . x , g . y ) ) , b . push ( new OpenLayers . Geometry . Point ( f . x , f . y ) ) , b = new OpenLayers . Geometry . LinearRing ( b ) , d = new OpenLayers . Geometry . Polygon ( [ b ] ) ) ; return d } , box : function ( a ) { var b = this . getElementsByTagNameNS ( a , this . gmlns , "coordinates" ) , c = a = null ; 0 < b . length && ( b = b [ 0 ] . firstChild . nodeValue ,
b = b . split ( " " ) , 2 == b . length && ( a = b [ 0 ] . split ( "," ) , c = b [ 1 ] . split ( "," ) ) ) ; if ( null !== a && null !== c ) return new OpenLayers . Bounds ( parseFloat ( a [ 0 ] ) , parseFloat ( a [ 1 ] ) , parseFloat ( c [ 0 ] ) , parseFloat ( c [ 1 ] ) ) } } , parseAttributes : function ( a ) { for ( var b = { } , a = a . firstChild , c , d , e ; a ; ) { if ( 1 == a . nodeType ) { a = a . childNodes ; for ( c = 0 ; c < a . length ; ++ c ) if ( d = a [ c ] , 1 == d . nodeType ) if ( e = d . childNodes , 1 == e . length ) { if ( e = e [ 0 ] , 3 == e . nodeType || 4 == e . nodeType ) d = d . prefix ? d . nodeName . split ( ":" ) [ 1 ] : d . nodeName , e = e . nodeValue . replace ( this . regExes . trimSpace , "" ) ,
b [ d ] = e } else b [ d . nodeName . split ( ":" ) . pop ( ) ] = null ; break } a = a . nextSibling } return b } , write : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var b = this . createElementNS ( "http://www.opengis.net/wfs" , "wfs:" + this . collectionName ) , c = 0 ; c < a . length ; c ++ ) b . appendChild ( this . createFeatureXML ( a [ c ] ) ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) } , createFeatureXML : function ( a ) { var b = this . buildGeometryNode ( a . geometry ) , c = this . createElementNS ( this . featureNS , this . featurePrefix + ":" + this . geometryName ) ; c . appendChild ( b ) ;
var b = this . createElementNS ( this . gmlns , "gml:" + this . featureName ) , d = this . createElementNS ( this . featureNS , this . featurePrefix + ":" + this . layerName ) ; d . setAttribute ( "fid" , a . fid || a . id ) ; d . appendChild ( c ) ; for ( var e in a . attributes ) { var c = this . createTextNode ( a . attributes [ e ] ) , f = this . createElementNS ( this . featureNS , this . featurePrefix + ":" + e . substring ( e . lastIndexOf ( ":" ) + 1 ) ) ; f . appendChild ( c ) ; d . appendChild ( f ) } b . appendChild ( d ) ; return b } , buildGeometryNode : function ( a ) { this . externalProjection && this . internalProjection && ( a =
a . clone ( ) , a . transform ( this . internalProjection , this . externalProjection ) ) ; var b = a . CLASS _NAME ; return this . buildGeometry [ b . substring ( b . lastIndexOf ( "." ) + 1 ) . toLowerCase ( ) ] . apply ( this , [ a ] ) } , buildGeometry : { point : function ( a ) { var b = this . createElementNS ( this . gmlns , "gml:Point" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } , multipoint : function ( a ) { for ( var b = this . createElementNS ( this . gmlns , "gml:MultiPoint" ) , a = a . components , c , d , e = 0 ; e < a . length ; e ++ ) c = this . createElementNS ( this . gmlns , "gml:pointMember" ) , d = this . buildGeometry . point . apply ( this ,
[ a [ e ] ] ) , c . appendChild ( d ) , b . appendChild ( c ) ; return b } , linestring : function ( a ) { var b = this . createElementNS ( this . gmlns , "gml:LineString" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } , multilinestring : function ( a ) { for ( var b = this . createElementNS ( this . gmlns , "gml:MultiLineString" ) , a = a . components , c , d , e = 0 ; e < a . length ; ++ e ) c = this . createElementNS ( this . gmlns , "gml:lineStringMember" ) , d = this . buildGeometry . linestring . apply ( this , [ a [ e ] ] ) , c . appendChild ( d ) , b . appendChild ( c ) ; return b } , linearring : function ( a ) { var b = this . createElementNS ( this . gmlns ,
"gml:LinearRing" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } , polygon : function ( a ) { for ( var b = this . createElementNS ( this . gmlns , "gml:Polygon" ) , a = a . components , c , d , e = 0 ; e < a . length ; ++ e ) c = 0 == e ? "outerBoundaryIs" : "innerBoundaryIs" , c = this . createElementNS ( this . gmlns , "gml:" + c ) , d = this . buildGeometry . linearring . apply ( this , [ a [ e ] ] ) , c . appendChild ( d ) , b . appendChild ( c ) ; return b } , multipolygon : function ( a ) { for ( var b = this . createElementNS ( this . gmlns , "gml:MultiPolygon" ) , a = a . components , c , d , e = 0 ; e < a . length ; ++ e ) c = this . createElementNS ( this . gmlns ,
"gml:polygonMember" ) , d = this . buildGeometry . polygon . apply ( this , [ a [ e ] ] ) , c . appendChild ( d ) , b . appendChild ( c ) ; return b } , bounds : function ( a ) { var b = this . createElementNS ( this . gmlns , "gml:Box" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } } , buildCoordinatesNode : function ( a ) { var b = this . createElementNS ( this . gmlns , "gml:coordinates" ) ; b . setAttribute ( "decimal" , "." ) ; b . setAttribute ( "cs" , "," ) ; b . setAttribute ( "ts" , " " ) ; var c = [ ] ; if ( a instanceof OpenLayers . Bounds ) c . push ( a . left + "," + a . bottom ) , c . push ( a . right + "," + a . top ) ;
else for ( var a = a . components ? a . components : [ a ] , d = 0 ; d < a . length ; d ++ ) c . push ( a [ d ] . x + "," + a [ d ] . y ) ; c = this . createTextNode ( c . join ( " " ) ) ; b . appendChild ( c ) ; return b } , CLASS _NAME : "OpenLayers.Format.GML" } ) ; OpenLayers . Format . GML || ( OpenLayers . Format . GML = { } ) ;
OpenLayers . Format . GML . Base = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { gml : "http://www.opengis.net/gml" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" , wfs : "http://www.opengis.net/wfs" } , defaultPrefix : "gml" , schemaLocation : null , featureType : null , featureNS : null , geometryName : "geometry" , extractAttributes : ! 0 , srsName : null , xy : ! 0 , geometryTypes : null , singleFeatureType : null , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g , featureMember : /^(.*:)?featureMembers?$/ } ,
initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) ; this . setGeometryTypes ( ) ; a && a . featureNS && this . setNamespace ( "feature" , a . featureNS ) ; this . singleFeatureType = ! a || typeof a . featureType === "string" } , read : function ( a ) { typeof a == "string" && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; if ( a && a . nodeType == 9 ) a = a . documentElement ; var b = [ ] ; this . readNode ( a , { features : b } , true ) ; if ( b . length == 0 ) { var c = this . getElementsByTagNameNS ( a , this . namespaces . gml , "featureMember" ) ; if ( c . length ) for ( var a =
0 , d = c . length ; a < d ; ++ a ) this . readNode ( c [ a ] , { features : b } , true ) ; else { c = this . getElementsByTagNameNS ( a , this . namespaces . gml , "featureMembers" ) ; c . length && this . readNode ( c [ 0 ] , { features : b } , true ) } } return b } , readNode : function ( a , b , c ) { if ( c === true && this . autoConfig === true ) { this . featureType = null ; delete this . namespaceAlias [ this . featureNS ] ; delete this . namespaces . feature ; this . featureNS = null } if ( ! this . featureNS && ! ( a . prefix in this . namespaces ) && a . parentNode . namespaceURI == this . namespaces . gml && this . regExes . featureMember . test ( a . parentNode . nodeName ) ) { this . featureType =
a . nodeName . split ( ":" ) . pop ( ) ; this . setNamespace ( "feature" , a . namespaceURI ) ; this . featureNS = a . namespaceURI ; this . autoConfig = true } return OpenLayers . Format . XML . prototype . readNode . apply ( this , [ a , b ] ) } , readers : { gml : { featureMember : function ( a , b ) { this . readChildNodes ( a , b ) } , featureMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , name : function ( a , b ) { b . name = this . getChildValue ( a ) } , boundedBy : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; if ( c . components && c . components . length > 0 ) b . bounds = c . components [ 0 ] } , Point : function ( a ,
b ) { var c = { points : [ ] } ; this . readChildNodes ( a , c ) ; if ( ! b . components ) b . components = [ ] ; b . components . push ( c . points [ 0 ] ) } , coordinates : function ( a , b ) { for ( var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) , c = c . replace ( this . regExes . trimComma , "," ) , c = c . split ( this . regExes . splitSpace ) , d , e = c . length , f = Array ( e ) , g = 0 ; g < e ; ++ g ) { d = c [ g ] . split ( "," ) ; f [ g ] = this . xy ? new OpenLayers . Geometry . Point ( d [ 0 ] , d [ 1 ] , d [ 2 ] ) : new OpenLayers . Geometry . Point ( d [ 1 ] , d [ 0 ] , d [ 2 ] ) } b . points = f } , coord : function ( a , b ) { var c = { } ; this . readChildNodes ( a ,
c ) ; if ( ! b . points ) b . points = [ ] ; b . points . push ( new OpenLayers . Geometry . Point ( c . x , c . y , c . z ) ) } , X : function ( a , b ) { b . x = this . getChildValue ( a ) } , Y : function ( a , b ) { b . y = this . getChildValue ( a ) } , Z : function ( a , b ) { b . z = this . getChildValue ( a ) } , MultiPoint : function ( a , b ) { var c = { components : [ ] } ; this . readChildNodes ( a , c ) ; b . components = [ new OpenLayers . Geometry . MultiPoint ( c . components ) ] } , pointMember : function ( a , b ) { this . readChildNodes ( a , b ) } , LineString : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; if ( ! b . components ) b . components = [ ] ; b . components . push ( new OpenLayers . Geometry . LineString ( c . points ) ) } ,
MultiLineString : function ( a , b ) { var c = { components : [ ] } ; this . readChildNodes ( a , c ) ; b . components = [ new OpenLayers . Geometry . MultiLineString ( c . components ) ] } , lineStringMember : function ( a , b ) { this . readChildNodes ( a , b ) } , Polygon : function ( a , b ) { var c = { outer : null , inner : [ ] } ; this . readChildNodes ( a , c ) ; c . inner . unshift ( c . outer ) ; if ( ! b . components ) b . components = [ ] ; b . components . push ( new OpenLayers . Geometry . Polygon ( c . inner ) ) } , LinearRing : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . components = [ new OpenLayers . Geometry . LinearRing ( c . points ) ] } ,
MultiPolygon : function ( a , b ) { var c = { components : [ ] } ; this . readChildNodes ( a , c ) ; b . components = [ new OpenLayers . Geometry . MultiPolygon ( c . components ) ] } , polygonMember : function ( a , b ) { this . readChildNodes ( a , b ) } , GeometryCollection : function ( a , b ) { var c = { components : [ ] } ; this . readChildNodes ( a , c ) ; b . components = [ new OpenLayers . Geometry . Collection ( c . components ) ] } , geometryMember : function ( a , b ) { this . readChildNodes ( a , b ) } } , feature : { "*" : function ( a , b ) { var c , d = a . localName || a . nodeName . split ( ":" ) . pop ( ) ; b . features ? ! this . singleFeatureType &&
OpenLayers . Util . indexOf ( this . featureType , d ) !== - 1 ? c = "_typeName" : d === this . featureType && ( c = "_typeName" ) : a . childNodes . length == 0 || a . childNodes . length == 1 && a . firstChild . nodeType == 3 ? this . extractAttributes && ( c = "_attribute" ) : c = "_geometry" ; c && this . readers . feature [ c ] . apply ( this , [ a , b ] ) } , _typeName : function ( a , b ) { var c = { components : [ ] , attributes : { } } ; this . readChildNodes ( a , c ) ; if ( c . name ) c . attributes . name = c . name ; var d = new OpenLayers . Feature . Vector ( c . components [ 0 ] , c . attributes ) ; if ( ! this . singleFeatureType ) { d . type = a . nodeName . split ( ":" ) . pop ( ) ;
d . namespace = a . namespaceURI } var e = a . getAttribute ( "fid" ) || this . getAttributeNS ( a , this . namespaces . gml , "id" ) ; if ( e ) d . fid = e ; this . internalProjection && ( this . externalProjection && d . geometry ) && d . geometry . transform ( this . externalProjection , this . internalProjection ) ; if ( c . bounds ) d . bounds = c . bounds ; b . features . push ( d ) } , _geometry : function ( a , b ) { if ( ! this . geometryName ) this . geometryName = a . nodeName . split ( ":" ) . pop ( ) ; this . readChildNodes ( a , b ) } , _attribute : function ( a , b ) { var c = a . localName || a . nodeName . split ( ":" ) . pop ( ) , d = this . getChildValue ( a ) ;
b . attributes [ c ] = d } } , wfs : { FeatureCollection : function ( a , b ) { this . readChildNodes ( a , b ) } } } , write : function ( a ) { a = this . writeNode ( "gml:" + ( OpenLayers . Util . isArray ( a ) ? "featureMembers" : "featureMember" ) , a ) ; this . setAttributeNS ( a , this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ a ] ) } , writers : { gml : { featureMember : function ( a ) { var b = this . createElementNSPlus ( "gml:featureMember" ) ; this . writeNode ( "feature:_typeName" , a , b ) ; return b } , MultiPoint : function ( a ) { for ( var b =
this . createElementNSPlus ( "gml:MultiPoint" ) , a = a . components || [ a ] , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "pointMember" , a [ c ] , b ) ; return b } , pointMember : function ( a ) { var b = this . createElementNSPlus ( "gml:pointMember" ) ; this . writeNode ( "Point" , a , b ) ; return b } , MultiLineString : function ( a ) { for ( var b = this . createElementNSPlus ( "gml:MultiLineString" ) , a = a . components || [ a ] , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "lineStringMember" , a [ c ] , b ) ; return b } , lineStringMember : function ( a ) { var b = this . createElementNSPlus ( "gml:lineStringMember" ) ;
this . writeNode ( "LineString" , a , b ) ; return b } , MultiPolygon : function ( a ) { for ( var b = this . createElementNSPlus ( "gml:MultiPolygon" ) , a = a . components || [ a ] , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "polygonMember" , a [ c ] , b ) ; return b } , polygonMember : function ( a ) { var b = this . createElementNSPlus ( "gml:polygonMember" ) ; this . writeNode ( "Polygon" , a , b ) ; return b } , GeometryCollection : function ( a ) { for ( var b = this . createElementNSPlus ( "gml:GeometryCollection" ) , c = 0 , d = a . components . length ; c < d ; ++ c ) this . writeNode ( "geometryMember" , a . components [ c ] ,
b ) ; return b } , geometryMember : function ( a ) { var b = this . createElementNSPlus ( "gml:geometryMember" ) , a = this . writeNode ( "feature:_geometry" , a ) ; b . appendChild ( a . firstChild ) ; return b } } , feature : { _typeName : function ( a ) { var b = this . createElementNSPlus ( "feature:" + this . featureType , { attributes : { fid : a . fid } } ) ; a . geometry && this . writeNode ( "feature:_geometry" , a . geometry , b ) ; for ( var c in a . attributes ) { var d = a . attributes [ c ] ; d != null && this . writeNode ( "feature:_attribute" , { name : c , value : d } , b ) } return b } , _geometry : function ( a ) { this . externalProjection &&
this . internalProjection && ( a = a . clone ( ) . transform ( this . internalProjection , this . externalProjection ) ) ; var b = this . createElementNSPlus ( "feature:" + this . geometryName ) , a = this . writeNode ( "gml:" + this . geometryTypes [ a . CLASS _NAME ] , a , b ) ; this . srsName && a . setAttribute ( "srsName" , this . srsName ) ; return b } , _attribute : function ( a ) { return this . createElementNSPlus ( "feature:" + a . name , { value : a . value } ) } } , wfs : { FeatureCollection : function ( a ) { for ( var b = this . createElementNSPlus ( "wfs:FeatureCollection" ) , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "gml:featureMember" ,
a [ c ] , b ) ; return b } } } , setGeometryTypes : function ( ) { this . geometryTypes = { "OpenLayers.Geometry.Point" : "Point" , "OpenLayers.Geometry.MultiPoint" : "MultiPoint" , "OpenLayers.Geometry.LineString" : "LineString" , "OpenLayers.Geometry.MultiLineString" : "MultiLineString" , "OpenLayers.Geometry.Polygon" : "Polygon" , "OpenLayers.Geometry.MultiPolygon" : "MultiPolygon" , "OpenLayers.Geometry.Collection" : "GeometryCollection" } } , CLASS _NAME : "OpenLayers.Format.GML.Base" } ) ; OpenLayers . Format . GML . v3 = OpenLayers . Class ( OpenLayers . Format . GML . Base , { schemaLocation : "http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd" , curve : ! 1 , multiCurve : ! 0 , surface : ! 1 , multiSurface : ! 0 , initialize : function ( a ) { OpenLayers . Format . GML . Base . prototype . initialize . apply ( this , [ a ] ) } , readers : { gml : OpenLayers . Util . applyDefaults ( { featureMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , Curve : function ( a , b ) { var c = { points : [ ] } ; this . readChildNodes ( a , c ) ; b . components ||
( b . components = [ ] ) ; b . components . push ( new OpenLayers . Geometry . LineString ( c . points ) ) } , segments : function ( a , b ) { this . readChildNodes ( a , b ) } , LineStringSegment : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; c . points && Array . prototype . push . apply ( b . points , c . points ) } , pos : function ( a , b ) { var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) . split ( this . regExes . splitSpace ) , c = this . xy ? new OpenLayers . Geometry . Point ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) : new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 0 ] , c [ 2 ] ) ; b . points = [ c ] } , posList : function ( a ,
b ) { for ( var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) . split ( this . regExes . splitSpace ) , d = parseInt ( a . getAttribute ( "dimension" ) ) || 2 , e , f , g , h = Array ( c . length / d ) , i = 0 , j = c . length ; i < j ; i += d ) e = c [ i ] , f = c [ i + 1 ] , g = 2 == d ? void 0 : c [ i + 2 ] , h [ i / d ] = this . xy ? new OpenLayers . Geometry . Point ( e , f , g ) : new OpenLayers . Geometry . Point ( f , e , g ) ; b . points = h } , Surface : function ( a , b ) { this . readChildNodes ( a , b ) } , patches : function ( a , b ) { this . readChildNodes ( a , b ) } , PolygonPatch : function ( a , b ) { this . readers . gml . Polygon . apply ( this , [ a , b ] ) } , exterior : function ( a ,
b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . outer = c . components [ 0 ] } , interior : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . inner . push ( c . components [ 0 ] ) } , MultiCurve : function ( a , b ) { var c = { components : [ ] } ; this . readChildNodes ( a , c ) ; 0 < c . components . length && ( b . components = [ new OpenLayers . Geometry . MultiLineString ( c . components ) ] ) } , curveMember : function ( a , b ) { this . readChildNodes ( a , b ) } , MultiSurface : function ( a , b ) { var c = { components : [ ] } ; this . readChildNodes ( a , c ) ; 0 < c . components . length && ( b . components = [ new OpenLayers . Geometry . MultiPolygon ( c . components ) ] ) } ,
surfaceMember : function ( a , b ) { this . readChildNodes ( a , b ) } , surfaceMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , pointMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , lineStringMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , polygonMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , geometryMembers : function ( a , b ) { this . readChildNodes ( a , b ) } , Envelope : function ( a , b ) { var c = { points : Array ( 2 ) } ; this . readChildNodes ( a , c ) ; b . components || ( b . components = [ ] ) ; var d = c . points [ 0 ] , c = c . points [ 1 ] ; b . components . push ( new OpenLayers . Bounds ( d . x ,
d . y , c . x , c . y ) ) } , lowerCorner : function ( a , b ) { var c = { } ; this . readers . gml . pos . apply ( this , [ a , c ] ) ; b . points [ 0 ] = c . points [ 0 ] } , upperCorner : function ( a , b ) { var c = { } ; this . readers . gml . pos . apply ( this , [ a , c ] ) ; b . points [ 1 ] = c . points [ 0 ] } } , OpenLayers . Format . GML . Base . prototype . readers . gml ) , feature : OpenLayers . Format . GML . Base . prototype . readers . feature , wfs : OpenLayers . Format . GML . Base . prototype . readers . wfs } , write : function ( a ) { a = this . writeNode ( "gml:" + ( OpenLayers . Util . isArray ( a ) ? "featureMembers" : "featureMember" ) , a ) ; this . setAttributeNS ( a ,
this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ a ] ) } , writers : { gml : OpenLayers . Util . applyDefaults ( { featureMembers : function ( a ) { for ( var b = this . createElementNSPlus ( "gml:featureMembers" ) , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "feature:_typeName" , a [ c ] , b ) ; return b } , Point : function ( a ) { var b = this . createElementNSPlus ( "gml:Point" ) ; this . writeNode ( "pos" , a , b ) ; return b } , pos : function ( a ) { return this . createElementNSPlus ( "gml:pos" , { value : this . xy ? a . x +
" " + a . y : a . y + " " + a . x } ) } , LineString : function ( a ) { var b = this . createElementNSPlus ( "gml:LineString" ) ; this . writeNode ( "posList" , a . components , b ) ; return b } , Curve : function ( a ) { var b = this . createElementNSPlus ( "gml:Curve" ) ; this . writeNode ( "segments" , a , b ) ; return b } , segments : function ( a ) { var b = this . createElementNSPlus ( "gml:segments" ) ; this . writeNode ( "LineStringSegment" , a , b ) ; return b } , LineStringSegment : function ( a ) { var b = this . createElementNSPlus ( "gml:LineStringSegment" ) ; this . writeNode ( "posList" , a . components , b ) ; return b } ,
posList : function ( a ) { for ( var b = a . length , c = Array ( b ) , d , e = 0 ; e < b ; ++ e ) d = a [ e ] , c [ e ] = this . xy ? d . x + " " + d . y : d . y + " " + d . x ; return this . createElementNSPlus ( "gml:posList" , { value : c . join ( " " ) } ) } , Surface : function ( a ) { var b = this . createElementNSPlus ( "gml:Surface" ) ; this . writeNode ( "patches" , a , b ) ; return b } , patches : function ( a ) { var b = this . createElementNSPlus ( "gml:patches" ) ; this . writeNode ( "PolygonPatch" , a , b ) ; return b } , PolygonPatch : function ( a ) { var b = this . createElementNSPlus ( "gml:PolygonPatch" , { attributes : { interpolation : "planar" } } ) ;
this . writeNode ( "exterior" , a . components [ 0 ] , b ) ; for ( var c = 1 , d = a . components . length ; c < d ; ++ c ) this . writeNode ( "interior" , a . components [ c ] , b ) ; return b } , Polygon : function ( a ) { var b = this . createElementNSPlus ( "gml:Polygon" ) ; this . writeNode ( "exterior" , a . components [ 0 ] , b ) ; for ( var c = 1 , d = a . components . length ; c < d ; ++ c ) this . writeNode ( "interior" , a . components [ c ] , b ) ; return b } , exterior : function ( a ) { var b = this . createElementNSPlus ( "gml:exterior" ) ; this . writeNode ( "LinearRing" , a , b ) ; return b } , interior : function ( a ) { var b = this . createElementNSPlus ( "gml:interior" ) ;
this . writeNode ( "LinearRing" , a , b ) ; return b } , LinearRing : function ( a ) { var b = this . createElementNSPlus ( "gml:LinearRing" ) ; this . writeNode ( "posList" , a . components , b ) ; return b } , MultiCurve : function ( a ) { for ( var b = this . createElementNSPlus ( "gml:MultiCurve" ) , a = a . components || [ a ] , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "curveMember" , a [ c ] , b ) ; return b } , curveMember : function ( a ) { var b = this . createElementNSPlus ( "gml:curveMember" ) ; this . curve ? this . writeNode ( "Curve" , a , b ) : this . writeNode ( "LineString" , a , b ) ; return b } , MultiSurface : function ( a ) { for ( var b =
this . createElementNSPlus ( "gml:MultiSurface" ) , a = a . components || [ a ] , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "surfaceMember" , a [ c ] , b ) ; return b } , surfaceMember : function ( a ) { var b = this . createElementNSPlus ( "gml:surfaceMember" ) ; this . surface ? this . writeNode ( "Surface" , a , b ) : this . writeNode ( "Polygon" , a , b ) ; return b } , Envelope : function ( a ) { var b = this . createElementNSPlus ( "gml:Envelope" ) ; this . writeNode ( "lowerCorner" , a , b ) ; this . writeNode ( "upperCorner" , a , b ) ; this . srsName && b . setAttribute ( "srsName" , this . srsName ) ; return b } , lowerCorner : function ( a ) { return this . createElementNSPlus ( "gml:lowerCorner" ,
{ value : this . xy ? a . left + " " + a . bottom : a . bottom + " " + a . left } ) } , upperCorner : function ( a ) { return this . createElementNSPlus ( "gml:upperCorner" , { value : this . xy ? a . right + " " + a . top : a . top + " " + a . right } ) } } , OpenLayers . Format . GML . Base . prototype . writers . gml ) , feature : OpenLayers . Format . GML . Base . prototype . writers . feature , wfs : OpenLayers . Format . GML . Base . prototype . writers . wfs } , setGeometryTypes : function ( ) { this . geometryTypes = { "OpenLayers.Geometry.Point" : "Point" , "OpenLayers.Geometry.MultiPoint" : "MultiPoint" , "OpenLayers.Geometry.LineString" : ! 0 ===
this . curve ? "Curve" : "LineString" , "OpenLayers.Geometry.MultiLineString" : ! 1 === this . multiCurve ? "MultiLineString" : "MultiCurve" , "OpenLayers.Geometry.Polygon" : ! 0 === this . surface ? "Surface" : "Polygon" , "OpenLayers.Geometry.MultiPolygon" : ! 1 === this . multiSurface ? "MultiPolygon" : "MultiSurface" , "OpenLayers.Geometry.Collection" : "GeometryCollection" } } , CLASS _NAME : "OpenLayers.Format.GML.v3" } ) ; OpenLayers . Format . Filter . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . GML . v3 , OpenLayers . Format . Filter . v1 , { VERSION : "1.1.0" , schemaLocation : "http://www.opengis.net/ogc/filter/1.1.0/filter.xsd" , initialize : function ( a ) { OpenLayers . Format . GML . v3 . prototype . initialize . apply ( this , [ a ] ) } , readers : { ogc : OpenLayers . Util . applyDefaults ( { PropertyIsEqualTo : function ( a , b ) { var c = a . getAttribute ( "matchCase" ) , c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . EQUAL _TO , matchCase : ! ( "false" === c || "0" === c ) } ) ; this . readChildNodes ( a ,
c ) ; b . filters . push ( c ) } , PropertyIsNotEqualTo : function ( a , b ) { var c = a . getAttribute ( "matchCase" ) , c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . NOT _EQUAL _TO , matchCase : ! ( "false" === c || "0" === c ) } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsLike : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . LIKE } ) ; this . readChildNodes ( a , c ) ; var d = a . getAttribute ( "wildCard" ) , e = a . getAttribute ( "singleChar" ) , f = a . getAttribute ( "escapeChar" ) ; c . value2regex ( d , e ,
f ) ; b . filters . push ( c ) } } , OpenLayers . Format . Filter . v1 . prototype . readers . ogc ) , gml : OpenLayers . Format . GML . v3 . prototype . readers . gml , feature : OpenLayers . Format . GML . v3 . prototype . readers . feature } , writers : { ogc : OpenLayers . Util . applyDefaults ( { PropertyIsEqualTo : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsEqualTo" , { attributes : { matchCase : a . matchCase } } ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsNotEqualTo : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsNotEqualTo" ,
{ attributes : { matchCase : a . matchCase } } ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsLike : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsLike" , { attributes : { matchCase : a . matchCase , wildCard : "*" , singleChar : "." , escapeChar : "!" } } ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeNode ( "Literal" , a . regex2value ( ) , b ) ; return b } , BBOX : function ( a ) { var b = this . createElementNSPlus ( "ogc:BBOX" ) ; a . property && this . writeNode ( "PropertyName" , a , b ) ; var c = this . writeNode ( "gml:Envelope" ,
a . value ) ; a . projection && c . setAttribute ( "srsName" , a . projection ) ; b . appendChild ( c ) ; return b } , SortBy : function ( a ) { for ( var b = this . createElementNSPlus ( "ogc:SortBy" ) , c = 0 , d = a . length ; c < d ; c ++ ) this . writeNode ( "ogc:SortProperty" , a [ c ] , b ) ; return b } , SortProperty : function ( a ) { var b = this . createElementNSPlus ( "ogc:SortProperty" ) ; this . writeNode ( "ogc:PropertyName" , a , b ) ; this . writeNode ( "ogc:SortOrder" , "DESC" == a . order ? "DESC" : "ASC" , b ) ; return b } , SortOrder : function ( a ) { return this . createElementNSPlus ( "ogc:SortOrder" , { value : a } ) } } ,
OpenLayers . Format . Filter . v1 . prototype . writers . ogc ) , gml : OpenLayers . Format . GML . v3 . prototype . writers . gml , feature : OpenLayers . Format . GML . v3 . prototype . writers . feature } , writeSpatial : function ( a , b ) { var c = this . createElementNSPlus ( "ogc:" + b ) ; this . writeNode ( "PropertyName" , a , c ) ; if ( a . value instanceof OpenLayers . Filter . Function ) this . writeNode ( "Function" , a . value , c ) ; else { var d ; d = a . value instanceof OpenLayers . Geometry ? this . writeNode ( "feature:_geometry" , a . value ) . firstChild : this . writeNode ( "gml:Envelope" , a . value ) ; a . projection &&
d . setAttribute ( "srsName" , a . projection ) ; c . appendChild ( d ) } return c } , CLASS _NAME : "OpenLayers.Format.Filter.v1_1_0" } ) ; OpenLayers . Format . OWSCommon = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.0.0" , getVersion : function ( a ) { var b = this . version ; b || ( ( a = a . getAttribute ( "xmlns:ows" ) ) && "1.1" === a . substring ( a . lastIndexOf ( "/" ) + 1 ) && ( b = "1.1.0" ) , b || ( b = this . defaultVersion ) ) ; return b } , CLASS _NAME : "OpenLayers.Format.OWSCommon" } ) ; OpenLayers . Format . OWSCommon . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , read : function ( a , b ) { OpenLayers . Util . applyDefaults ( b , this . options ) ; var c = { } ; this . readChildNodes ( a , c ) ; return c } , readers : { ows : { Exception : function ( a , b ) { var c = { code : a . getAttribute ( "exceptionCode" ) , locator : a . getAttribute ( "locator" ) , texts : [ ] } ; b . exceptions . push ( c ) ; this . readChildNodes ( a , c ) } , ExceptionText : function ( a , b ) { var c = this . getChildValue ( a ) ; b . texts . push ( c ) } ,
ServiceIdentification : function ( a , b ) { b . serviceIdentification = { } ; this . readChildNodes ( a , b . serviceIdentification ) } , Title : function ( a , b ) { b . title = this . getChildValue ( a ) } , Abstract : function ( a , b ) { b [ "abstract" ] = this . getChildValue ( a ) } , Keywords : function ( a , b ) { b . keywords = { } ; this . readChildNodes ( a , b . keywords ) } , Keyword : function ( a , b ) { b [ this . getChildValue ( a ) ] = ! 0 } , ServiceType : function ( a , b ) { b . serviceType = { codeSpace : a . getAttribute ( "codeSpace" ) , value : this . getChildValue ( a ) } } , ServiceTypeVersion : function ( a , b ) { b . serviceTypeVersion =
this . getChildValue ( a ) } , Fees : function ( a , b ) { b . fees = this . getChildValue ( a ) } , AccessConstraints : function ( a , b ) { b . accessConstraints = this . getChildValue ( a ) } , ServiceProvider : function ( a , b ) { b . serviceProvider = { } ; this . readChildNodes ( a , b . serviceProvider ) } , ProviderName : function ( a , b ) { b . providerName = this . getChildValue ( a ) } , ProviderSite : function ( a , b ) { b . providerSite = this . getAttributeNS ( a , this . namespaces . xlink , "href" ) } , ServiceContact : function ( a , b ) { b . serviceContact = { } ; this . readChildNodes ( a , b . serviceContact ) } , IndividualName : function ( a ,
b ) { b . individualName = this . getChildValue ( a ) } , PositionName : function ( a , b ) { b . positionName = this . getChildValue ( a ) } , ContactInfo : function ( a , b ) { b . contactInfo = { } ; this . readChildNodes ( a , b . contactInfo ) } , Phone : function ( a , b ) { b . phone = { } ; this . readChildNodes ( a , b . phone ) } , Voice : function ( a , b ) { b . voice = this . getChildValue ( a ) } , Address : function ( a , b ) { b . address = { } ; this . readChildNodes ( a , b . address ) } , DeliveryPoint : function ( a , b ) { b . deliveryPoint = this . getChildValue ( a ) } , City : function ( a , b ) { b . city = this . getChildValue ( a ) } , AdministrativeArea : function ( a ,
b ) { b . administrativeArea = this . getChildValue ( a ) } , PostalCode : function ( a , b ) { b . postalCode = this . getChildValue ( a ) } , Country : function ( a , b ) { b . country = this . getChildValue ( a ) } , ElectronicMailAddress : function ( a , b ) { b . electronicMailAddress = this . getChildValue ( a ) } , Role : function ( a , b ) { b . role = this . getChildValue ( a ) } , OperationsMetadata : function ( a , b ) { b . operationsMetadata = { } ; this . readChildNodes ( a , b . operationsMetadata ) } , Operation : function ( a , b ) { var c = a . getAttribute ( "name" ) ; b [ c ] = { } ; this . readChildNodes ( a , b [ c ] ) } , DCP : function ( a ,
b ) { b . dcp = { } ; this . readChildNodes ( a , b . dcp ) } , HTTP : function ( a , b ) { b . http = { } ; this . readChildNodes ( a , b . http ) } , Get : function ( a , b ) { b . get || ( b . get = [ ] ) ; var c = { url : this . getAttributeNS ( a , this . namespaces . xlink , "href" ) } ; this . readChildNodes ( a , c ) ; b . get . push ( c ) } , Post : function ( a , b ) { b . post || ( b . post = [ ] ) ; var c = { url : this . getAttributeNS ( a , this . namespaces . xlink , "href" ) } ; this . readChildNodes ( a , c ) ; b . post . push ( c ) } , Parameter : function ( a , b ) { b . parameters || ( b . parameters = { } ) ; var c = a . getAttribute ( "name" ) ; b . parameters [ c ] = { } ; this . readChildNodes ( a ,
b . parameters [ c ] ) } , Constraint : function ( a , b ) { b . constraints || ( b . constraints = { } ) ; var c = a . getAttribute ( "name" ) ; b . constraints [ c ] = { } ; this . readChildNodes ( a , b . constraints [ c ] ) } , Value : function ( a , b ) { b [ this . getChildValue ( a ) ] = ! 0 } , OutputFormat : function ( a , b ) { b . formats . push ( { value : this . getChildValue ( a ) } ) ; this . readChildNodes ( a , b ) } , WGS84BoundingBox : function ( a , b ) { var c = { } ; c . crs = a . getAttribute ( "crs" ) ; b . BoundingBox ? b . BoundingBox . push ( c ) : ( b . projection = c . crs , c = b ) ; this . readChildNodes ( a , c ) } , BoundingBox : function ( a , b ) { this . readers . ows . WGS84BoundingBox . apply ( this ,
[ a , b ] ) } , LowerCorner : function ( a , b ) { var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) , c = c . replace ( this . regExes . trimComma , "," ) , c = c . split ( this . regExes . splitSpace ) ; b . left = c [ 0 ] ; b . bottom = c [ 1 ] } , UpperCorner : function ( a , b ) { var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) , c = c . replace ( this . regExes . trimComma , "," ) , c = c . split ( this . regExes . splitSpace ) ; b . right = c [ 0 ] ; b . top = c [ 1 ] ; b . bounds = new OpenLayers . Bounds ( b . left , b . bottom , b . right , b . top ) ; delete b . left ; delete b . bottom ; delete b . right ; delete b . top } ,
Language : function ( a , b ) { b . language = this . getChildValue ( a ) } } } , writers : { ows : { BoundingBox : function ( a ) { var b = this . createElementNSPlus ( "ows:BoundingBox" , { attributes : { crs : a . projection } } ) ; this . writeNode ( "ows:LowerCorner" , a , b ) ; this . writeNode ( "ows:UpperCorner" , a , b ) ; return b } , LowerCorner : function ( a ) { return this . createElementNSPlus ( "ows:LowerCorner" , { value : a . bounds . left + " " + a . bounds . bottom } ) } , UpperCorner : function ( a ) { return this . createElementNSPlus ( "ows:UpperCorner" , { value : a . bounds . right + " " + a . bounds . top } ) } , Identifier : function ( a ) { return this . createElementNSPlus ( "ows:Identifier" ,
{ value : a } ) } , Title : function ( a ) { return this . createElementNSPlus ( "ows:Title" , { value : a } ) } , Abstract : function ( a ) { return this . createElementNSPlus ( "ows:Abstract" , { value : a } ) } , OutputFormat : function ( a ) { return this . createElementNSPlus ( "ows:OutputFormat" , { value : a } ) } } } , CLASS _NAME : "OpenLayers.Format.OWSCommon.v1" } ) ; OpenLayers . Format . OWSCommon . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . OWSCommon . v1 , { namespaces : { ows : "http://www.opengis.net/ows" , xlink : "http://www.w3.org/1999/xlink" } , readers : { ows : OpenLayers . Util . applyDefaults ( { ExceptionReport : function ( a , b ) { b . success = ! 1 ; b . exceptionReport = { version : a . getAttribute ( "version" ) , language : a . getAttribute ( "language" ) , exceptions : [ ] } ; this . readChildNodes ( a , b . exceptionReport ) } } , OpenLayers . Format . OWSCommon . v1 . prototype . readers . ows ) } , writers : { ows : OpenLayers . Format . OWSCommon . v1 . prototype . writers . ows } ,
CLASS _NAME : "OpenLayers.Format.OWSCommon.v1_0_0" } ) ; OpenLayers . Format . WFST . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . Filter . v1 _1 _0 , OpenLayers . Format . WFST . v1 , { version : "1.1.0" , schemaLocations : { wfs : "http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" } , initialize : function ( a ) { OpenLayers . Format . Filter . v1 _1 _0 . prototype . initialize . apply ( this , [ a ] ) ; OpenLayers . Format . WFST . v1 . prototype . initialize . apply ( this , [ a ] ) } , readNode : function ( a , b ) { return OpenLayers . Format . GML . v3 . prototype . readNode . apply ( this , [ a , b ] ) } , readers : { wfs : OpenLayers . Util . applyDefaults ( { FeatureCollection : function ( a ,
b ) { b . numberOfFeatures = parseInt ( a . getAttribute ( "numberOfFeatures" ) ) ; OpenLayers . Format . WFST . v1 . prototype . readers . wfs . FeatureCollection . apply ( this , arguments ) } , TransactionResponse : function ( a , b ) { b . insertIds = [ ] ; b . success = ! 1 ; this . readChildNodes ( a , b ) } , TransactionSummary : function ( a , b ) { b . success = ! 0 } , InsertResults : function ( a , b ) { this . readChildNodes ( a , b ) } , Feature : function ( a , b ) { var c = { fids : [ ] } ; this . readChildNodes ( a , c ) ; b . insertIds . push ( c . fids [ 0 ] ) } } , OpenLayers . Format . WFST . v1 . prototype . readers . wfs ) , gml : OpenLayers . Format . GML . v3 . prototype . readers . gml ,
feature : OpenLayers . Format . GML . v3 . prototype . readers . feature , ogc : OpenLayers . Format . Filter . v1 _1 _0 . prototype . readers . ogc , ows : OpenLayers . Format . OWSCommon . v1 _0 _0 . prototype . readers . ows } , writers : { wfs : OpenLayers . Util . applyDefaults ( { GetFeature : function ( a ) { var b = OpenLayers . Format . WFST . v1 . prototype . writers . wfs . GetFeature . apply ( this , arguments ) ; a && this . setAttributes ( b , { resultType : a . resultType , startIndex : a . startIndex , count : a . count } ) ; return b } , Query : function ( a ) { var a = OpenLayers . Util . extend ( { featureNS : this . featureNS ,
featurePrefix : this . featurePrefix , featureType : this . featureType , srsName : this . srsName } , a ) , b = a . featurePrefix , c = this . createElementNSPlus ( "wfs:Query" , { attributes : { typeName : ( b ? b + ":" : "" ) + a . featureType , srsName : a . srsName } } ) ; a . featureNS && c . setAttribute ( "xmlns:" + b , a . featureNS ) ; if ( a . propertyNames ) for ( var b = 0 , d = a . propertyNames . length ; b < d ; b ++ ) this . writeNode ( "wfs:PropertyName" , { property : a . propertyNames [ b ] } , c ) ; a . filter && ( OpenLayers . Format . WFST . v1 _1 _0 . prototype . setFilterProperty . call ( this , a . filter ) , this . writeNode ( "ogc:Filter" ,
a . filter , c ) ) ; return c } , PropertyName : function ( a ) { return this . createElementNSPlus ( "wfs:PropertyName" , { value : a . property } ) } } , OpenLayers . Format . WFST . v1 . prototype . writers . wfs ) , gml : OpenLayers . Format . GML . v3 . prototype . writers . gml , feature : OpenLayers . Format . GML . v3 . prototype . writers . feature , ogc : OpenLayers . Format . Filter . v1 _1 _0 . prototype . writers . ogc } , CLASS _NAME : "OpenLayers.Format.WFST.v1_1_0" } ) ; OpenLayers . Protocol = OpenLayers . Class ( { format : null , options : null , autoDestroy : ! 0 , defaultFilter : null , initialize : function ( a ) { a = a || { } ; OpenLayers . Util . extend ( this , a ) ; this . options = a } , mergeWithDefaultFilter : function ( a ) { return a && this . defaultFilter ? new OpenLayers . Filter . Logical ( { type : OpenLayers . Filter . Logical . AND , filters : [ this . defaultFilter , a ] } ) : a || this . defaultFilter || void 0 } , destroy : function ( ) { this . format = this . options = null } , read : function ( a ) { a = a || { } ; a . filter = this . mergeWithDefaultFilter ( a . filter ) } , create : function ( ) { } ,
update : function ( ) { } , "delete" : function ( ) { } , commit : function ( ) { } , abort : function ( ) { } , createCallback : function ( a , b , c ) { return OpenLayers . Function . bind ( function ( ) { a . apply ( this , [ b , c ] ) } , this ) } , CLASS _NAME : "OpenLayers.Protocol" } ) ; OpenLayers . Protocol . Response = OpenLayers . Class ( { code : null , requestType : null , last : ! 0 , features : null , data : null , reqFeatures : null , priv : null , error : null , initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) } , success : function ( ) { return 0 < this . code } , CLASS _NAME : "OpenLayers.Protocol.Response" } ) ;
OpenLayers . Protocol . Response . SUCCESS = 1 ; OpenLayers . Protocol . Response . FAILURE = 0 ; OpenLayers . Format . JSON = OpenLayers . Class ( OpenLayers . Format , { indent : " " , space : " " , newline : "\n" , level : 0 , pretty : ! 1 , nativeJSON : function ( ) { return ! ( ! window . JSON || ! ( "function" == typeof JSON . parse && "function" == typeof JSON . stringify ) ) } ( ) , read : function ( a , b ) { var c ; if ( this . nativeJSON ) c = JSON . parse ( a , b ) ; else try { if ( /^[\],:{}\s]*$/ . test ( a . replace ( /\\["\\\/bfnrtu]/g , "@" ) . replace ( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g , "]" ) . replace ( /(?:^|:|,)(?:\s*\[)+/g , "" ) ) && ( c = eval ( "(" + a + ")" ) , "function" ===
typeof b ) ) { var d = function ( a , c ) { if ( c && "object" === typeof c ) for ( var e in c ) c . hasOwnProperty ( e ) && ( c [ e ] = d ( e , c [ e ] ) ) ; return b ( a , c ) } ; c = d ( "" , c ) } } catch ( e ) { } this . keepData && ( this . data = c ) ; return c } , write : function ( a , b ) { this . pretty = ! ! b ; var c = null , d = typeof a ; if ( this . serialize [ d ] ) try { c = ! this . pretty && this . nativeJSON ? JSON . stringify ( a ) : this . serialize [ d ] . apply ( this , [ a ] ) } catch ( e ) { OpenLayers . Console . error ( "Trouble serializing: " + e ) } return c } , writeIndent : function ( ) { var a = [ ] ; if ( this . pretty ) for ( var b = 0 ; b < this . level ; ++ b ) a . push ( this . indent ) ;
return a . join ( "" ) } , writeNewline : function ( ) { return this . pretty ? this . newline : "" } , writeSpace : function ( ) { return this . pretty ? this . space : "" } , serialize : { object : function ( a ) { if ( null == a ) return "null" ; if ( a . constructor == Date ) return this . serialize . date . apply ( this , [ a ] ) ; if ( a . constructor == Array ) return this . serialize . array . apply ( this , [ a ] ) ; var b = [ "{" ] ; this . level += 1 ; var c , d , e , f = ! 1 ; for ( c in a ) a . hasOwnProperty ( c ) && ( d = OpenLayers . Format . JSON . prototype . write . apply ( this , [ c , this . pretty ] ) , e = OpenLayers . Format . JSON . prototype . write . apply ( this ,
[ a [ c ] , this . pretty ] ) , null != d && null != e && ( f && b . push ( "," ) , b . push ( this . writeNewline ( ) , this . writeIndent ( ) , d , ":" , this . writeSpace ( ) , e ) , f = ! 0 ) ) ; this . level -= 1 ; b . push ( this . writeNewline ( ) , this . writeIndent ( ) , "}" ) ; return b . join ( "" ) } , array : function ( a ) { var b , c = [ "[" ] ; this . level += 1 ; for ( var d = 0 , e = a . length ; d < e ; ++ d ) b = OpenLayers . Format . JSON . prototype . write . apply ( this , [ a [ d ] , this . pretty ] ) , null != b && ( 0 < d && c . push ( "," ) , c . push ( this . writeNewline ( ) , this . writeIndent ( ) , b ) ) ; this . level -= 1 ; c . push ( this . writeNewline ( ) , this . writeIndent ( ) ,
"]" ) ; return c . join ( "" ) } , string : function ( a ) { var b = { "\u0008" : "\\b" , "\t" : "\\t" , "\n" : "\\n" , "\u000c" : "\\f" , "\r" : "\\r" , '"' : '\\"' , "\\" : "\\\\" } ; return /["\\\x00-\x1f]/ . test ( a ) ? '"' + a . replace ( /([\x00-\x1f\\"])/g , function ( a , d ) { var e = b [ d ] ; if ( e ) return e ; e = d . charCodeAt ( ) ; return "\\u00" + Math . floor ( e / 16 ) . toString ( 16 ) + ( e % 16 ) . toString ( 16 ) } ) + '"' : '"' + a + '"' } , number : function ( a ) { return isFinite ( a ) ? "" + a : "null" } , "boolean" : function ( a ) { return "" + a } , date : function ( a ) { function b ( a ) { return 10 > a ? "0" + a : a } return '"' + a . getFullYear ( ) + "-" +
b ( a . getMonth ( ) + 1 ) + "-" + b ( a . getDate ( ) ) + "T" + b ( a . getHours ( ) ) + ":" + b ( a . getMinutes ( ) ) + ":" + b ( a . getSeconds ( ) ) + '"' } } , CLASS _NAME : "OpenLayers.Format.JSON" } ) ; OpenLayers . Format . GeoJSON = OpenLayers . Class ( OpenLayers . Format . JSON , { ignoreExtraDims : ! 1 , read : function ( a , b , c ) { var b = b ? b : "FeatureCollection" , d = null , e = null ; if ( e = "string" == typeof a ? OpenLayers . Format . JSON . prototype . read . apply ( this , [ a , c ] ) : a ) if ( "string" != typeof e . type ) OpenLayers . Console . error ( "Bad GeoJSON - no type: " + a ) ; else { if ( this . isValidType ( e , b ) ) switch ( b ) { case "Geometry" : try { d = this . parseGeometry ( e ) } catch ( f ) { OpenLayers . Console . error ( f ) } break ; case "Feature" : try { d = this . parseFeature ( e ) , d . type = "Feature" } catch ( g ) { OpenLayers . Console . error ( g ) } break ;
case "FeatureCollection" : switch ( d = [ ] , e . type ) { case "Feature" : try { d . push ( this . parseFeature ( e ) ) } catch ( h ) { d = null , OpenLayers . Console . error ( h ) } break ; case "FeatureCollection" : a = 0 ; for ( b = e . features . length ; a < b ; ++ a ) try { d . push ( this . parseFeature ( e . features [ a ] ) ) } catch ( i ) { d = null , OpenLayers . Console . error ( i ) } break ; default : try { var j = this . parseGeometry ( e ) ; d . push ( new OpenLayers . Feature . Vector ( j ) ) } catch ( k ) { d = null , OpenLayers . Console . error ( k ) } } } } else OpenLayers . Console . error ( "Bad JSON: " + a ) ; return d } , isValidType : function ( a ,
b ) { var c = ! 1 ; switch ( b ) { case "Geometry" : - 1 == OpenLayers . Util . indexOf ( "Point MultiPoint LineString MultiLineString Polygon MultiPolygon Box GeometryCollection" . split ( " " ) , a . type ) ? OpenLayers . Console . error ( "Unsupported geometry type: " + a . type ) : c = ! 0 ; break ; case "FeatureCollection" : c = ! 0 ; break ; default : a . type == b ? c = ! 0 : OpenLayers . Console . error ( "Cannot convert types from " + a . type + " to " + b ) } return c } , parseFeature : function ( a ) { var b , c , d ; c = a . properties ? a . properties : { } ; d = a . geometry && a . geometry . bbox || a . bbox ; try { b = this . parseGeometry ( a . geometry ) } catch ( e ) { throw e ;
} b = new OpenLayers . Feature . Vector ( b , c ) ; d && ( b . bounds = OpenLayers . Bounds . fromArray ( d ) ) ; a . id && ( b . fid = a . id ) ; return b } , parseGeometry : function ( a ) { if ( null == a ) return null ; var b , c = ! 1 ; if ( "GeometryCollection" == a . type ) { if ( ! OpenLayers . Util . isArray ( a . geometries ) ) throw "GeometryCollection must have geometries array: " + a ; b = a . geometries . length ; for ( var c = Array ( b ) , d = 0 ; d < b ; ++ d ) c [ d ] = this . parseGeometry . apply ( this , [ a . geometries [ d ] ] ) ; b = new OpenLayers . Geometry . Collection ( c ) ; c = ! 0 } else { if ( ! OpenLayers . Util . isArray ( a . coordinates ) ) throw "Geometry must have coordinates array: " +
a ; if ( ! this . parseCoords [ a . type . toLowerCase ( ) ] ) throw "Unsupported geometry type: " + a . type ; try { b = this . parseCoords [ a . type . toLowerCase ( ) ] . apply ( this , [ a . coordinates ] ) } catch ( e ) { throw e ; } } this . internalProjection && ( this . externalProjection && ! c ) && b . transform ( this . externalProjection , this . internalProjection ) ; return b } , parseCoords : { point : function ( a ) { if ( ! 1 == this . ignoreExtraDims && 2 != a . length ) throw "Only 2D points are supported: " + a ; return new OpenLayers . Geometry . Point ( a [ 0 ] , a [ 1 ] ) } , multipoint : function ( a ) { for ( var b = [ ] ,
c = null , d = 0 , e = a . length ; d < e ; ++ d ) { try { c = this . parseCoords . point . apply ( this , [ a [ d ] ] ) } catch ( f ) { throw f ; } b . push ( c ) } return new OpenLayers . Geometry . MultiPoint ( b ) } , linestring : function ( a ) { for ( var b = [ ] , c = null , d = 0 , e = a . length ; d < e ; ++ d ) { try { c = this . parseCoords . point . apply ( this , [ a [ d ] ] ) } catch ( f ) { throw f ; } b . push ( c ) } return new OpenLayers . Geometry . LineString ( b ) } , multilinestring : function ( a ) { for ( var b = [ ] , c = null , d = 0 , e = a . length ; d < e ; ++ d ) { try { c = this . parseCoords . linestring . apply ( this , [ a [ d ] ] ) } catch ( f ) { throw f ; } b . push ( c ) } return new OpenLayers . Geometry . MultiLineString ( b ) } ,
polygon : function ( a ) { for ( var b = [ ] , c , d , e = 0 , f = a . length ; e < f ; ++ e ) { try { d = this . parseCoords . linestring . apply ( this , [ a [ e ] ] ) } catch ( g ) { throw g ; } c = new OpenLayers . Geometry . LinearRing ( d . components ) ; b . push ( c ) } return new OpenLayers . Geometry . Polygon ( b ) } , multipolygon : function ( a ) { for ( var b = [ ] , c = null , d = 0 , e = a . length ; d < e ; ++ d ) { try { c = this . parseCoords . polygon . apply ( this , [ a [ d ] ] ) } catch ( f ) { throw f ; } b . push ( c ) } return new OpenLayers . Geometry . MultiPolygon ( b ) } , box : function ( a ) { if ( 2 != a . length ) throw "GeoJSON box coordinates must have 2 elements" ;
return new OpenLayers . Geometry . Polygon ( [ new OpenLayers . Geometry . LinearRing ( [ new OpenLayers . Geometry . Point ( a [ 0 ] [ 0 ] , a [ 0 ] [ 1 ] ) , new OpenLayers . Geometry . Point ( a [ 1 ] [ 0 ] , a [ 0 ] [ 1 ] ) , new OpenLayers . Geometry . Point ( a [ 1 ] [ 0 ] , a [ 1 ] [ 1 ] ) , new OpenLayers . Geometry . Point ( a [ 0 ] [ 0 ] , a [ 1 ] [ 1 ] ) , new OpenLayers . Geometry . Point ( a [ 0 ] [ 0 ] , a [ 0 ] [ 1 ] ) ] ) ] ) } } , write : function ( a , b ) { var c = { type : null } ; if ( OpenLayers . Util . isArray ( a ) ) { c . type = "FeatureCollection" ; var d = a . length ; c . features = Array ( d ) ; for ( var e = 0 ; e < d ; ++ e ) { var f = a [ e ] ; if ( ! f instanceof OpenLayers . Feature . Vector ) throw "FeatureCollection only supports collections of features: " +
f ; c . features [ e ] = this . extract . feature . apply ( this , [ f ] ) } } else 0 == a . CLASS _NAME . indexOf ( "OpenLayers.Geometry" ) ? c = this . extract . geometry . apply ( this , [ a ] ) : a instanceof OpenLayers . Feature . Vector && ( c = this . extract . feature . apply ( this , [ a ] ) , a . layer && a . layer . projection && ( c . crs = this . createCRSObject ( a ) ) ) ; return OpenLayers . Format . JSON . prototype . write . apply ( this , [ c , b ] ) } , createCRSObject : function ( a ) { var a = a . layer . projection . toString ( ) , b = { } ; a . match ( /epsg:/i ) && ( a = parseInt ( a . substring ( a . indexOf ( ":" ) + 1 ) ) , b = 4326 == a ? { type : "name" ,
properties : { name : "urn:ogc:def:crs:OGC:1.3:CRS84" } } : { type : "name" , properties : { name : "EPSG:" + a } } ) ; return b } , extract : { feature : function ( a ) { var b = this . extract . geometry . apply ( this , [ a . geometry ] ) , b = { type : "Feature" , properties : a . attributes , geometry : b } ; null != a . fid && ( b . id = a . fid ) ; return b } , geometry : function ( a ) { if ( null == a ) return null ; this . internalProjection && this . externalProjection && ( a = a . clone ( ) , a . transform ( this . internalProjection , this . externalProjection ) ) ; var b = a . CLASS _NAME . split ( "." ) [ 2 ] , a = this . extract [ b . toLowerCase ( ) ] . apply ( this ,
[ a ] ) ; return "Collection" == b ? { type : "GeometryCollection" , geometries : a } : { type : b , coordinates : a } } , point : function ( a ) { return [ a . x , a . y ] } , multipoint : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extract . point . apply ( this , [ a . components [ c ] ] ) ) ; return b } , linestring : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extract . point . apply ( this , [ a . components [ c ] ] ) ) ; return b } , multilinestring : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extract . linestring . apply ( this ,
[ a . components [ c ] ] ) ) ; return b } , polygon : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extract . linestring . apply ( this , [ a . components [ c ] ] ) ) ; return b } , multipolygon : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extract . polygon . apply ( this , [ a . components [ c ] ] ) ) ; return b } , collection : function ( a ) { for ( var b = a . components . length , c = Array ( b ) , d = 0 ; d < b ; ++ d ) c [ d ] = this . extract . geometry . apply ( this , [ a . components [ d ] ] ) ; return c } } , CLASS _NAME : "OpenLayers.Format.GeoJSON" } ) ; OpenLayers . Protocol . Script = OpenLayers . Class ( OpenLayers . Protocol , { url : null , params : null , callback : null , callbackTemplate : "OpenLayers.Protocol.Script.registry.${id}" , callbackKey : "callback" , callbackPrefix : "" , scope : null , format : null , pendingRequests : null , srsInBBOX : ! 1 , initialize : function ( a ) { a = a || { } ; this . params = { } ; this . pendingRequests = { } ; OpenLayers . Protocol . prototype . initialize . apply ( this , arguments ) ; this . format || ( this . format = new OpenLayers . Format . GeoJSON ) ; if ( ! this . filterToParams && OpenLayers . Format . QueryStringFilter ) { var b =
new OpenLayers . Format . QueryStringFilter ( { srsInBBOX : this . srsInBBOX } ) ; this . filterToParams = function ( a , d ) { return b . write ( a , d ) } } } , read : function ( a ) { OpenLayers . Protocol . prototype . read . apply ( this , arguments ) ; a = OpenLayers . Util . applyDefaults ( a , this . options ) ; a . params = OpenLayers . Util . applyDefaults ( a . params , this . options . params ) ; a . filter && this . filterToParams && ( a . params = this . filterToParams ( a . filter , a . params ) ) ; var b = new OpenLayers . Protocol . Response ( { requestType : "read" } ) , c = this . createRequest ( a . url , a . params , OpenLayers . Function . bind ( function ( c ) { b . data =
c ; this . handleRead ( b , a ) } , this ) ) ; b . priv = c ; return b } , createRequest : function ( a , b , c ) { var c = OpenLayers . Protocol . Script . register ( c ) , d = OpenLayers . String . format ( this . callbackTemplate , { id : c } ) , b = OpenLayers . Util . extend ( { } , b ) ; b [ this . callbackKey ] = this . callbackPrefix + d ; a = OpenLayers . Util . urlAppend ( a , OpenLayers . Util . getParameterString ( b ) ) ; b = document . createElement ( "script" ) ; b . type = "text/javascript" ; b . src = a ; b . id = "OpenLayers_Protocol_Script_" + c ; this . pendingRequests [ b . id ] = b ; document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( b ) ;
return b } , destroyRequest : function ( a ) { OpenLayers . Protocol . Script . unregister ( a . id . split ( "_" ) . pop ( ) ) ; delete this . pendingRequests [ a . id ] ; a . parentNode && a . parentNode . removeChild ( a ) } , handleRead : function ( a , b ) { this . handleResponse ( a , b ) } , handleResponse : function ( a , b ) { b . callback && ( a . data ? ( a . features = this . parseFeatures ( a . data ) , a . code = OpenLayers . Protocol . Response . SUCCESS ) : a . code = OpenLayers . Protocol . Response . FAILURE , this . destroyRequest ( a . priv ) , b . callback . call ( b . scope , a ) ) } , parseFeatures : function ( a ) { return this . format . read ( a ) } ,
abort : function ( a ) { if ( a ) this . destroyRequest ( a . priv ) ; else for ( var b in this . pendingRequests ) this . destroyRequest ( this . pendingRequests [ b ] ) } , destroy : function ( ) { this . abort ( ) ; delete this . params ; delete this . format ; OpenLayers . Protocol . prototype . destroy . apply ( this ) } , CLASS _NAME : "OpenLayers.Protocol.Script" } ) ; ( function ( ) { var a = OpenLayers . Protocol . Script , b = 0 ; a . registry = { } ; a . register = function ( c ) { var d = "c" + ++ b ; a . registry [ d ] = function ( ) { c . apply ( this , arguments ) } ; return d } ; a . unregister = function ( b ) { delete a . registry [ b ] } } ) ( ) ; OpenLayers . Control . Panel = OpenLayers . Class ( OpenLayers . Control , { controls : null , autoActivate : ! 0 , defaultControl : null , saveState : ! 1 , allowDepress : ! 1 , activeState : null , initialize : function ( a ) { OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . controls = [ ] ; this . activeState = { } } , destroy : function ( ) { this . map && this . map . events . unregister ( "buttonclick" , this , this . onButtonClick ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) ; for ( var a , b = this . controls . length - 1 ; 0 <= b ; b -- ) a = this . controls [ b ] , a . events &&
a . events . un ( { activate : this . iconOn , deactivate : this . iconOff } ) , a . panel _div = null ; this . activeState = null } , activate : function ( ) { if ( OpenLayers . Control . prototype . activate . apply ( this , arguments ) ) { for ( var a , b = 0 , c = this . controls . length ; b < c ; b ++ ) a = this . controls [ b ] , ( a === this . defaultControl || this . saveState && this . activeState [ a . id ] ) && a . activate ( ) ; ! 0 === this . saveState && ( this . defaultControl = null ) ; this . redraw ( ) ; return ! 0 } return ! 1 } , deactivate : function ( ) { if ( OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) ) { for ( var a ,
b = 0 , c = this . controls . length ; b < c ; b ++ ) a = this . controls [ b ] , this . activeState [ a . id ] = a . deactivate ( ) ; this . redraw ( ) ; return ! 0 } return ! 1 } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; this . outsideViewport ? ( this . events . attachToElement ( this . div ) , this . events . register ( "buttonclick" , this , this . onButtonClick ) ) : this . map . events . register ( "buttonclick" , this , this . onButtonClick ) ; this . addControlsToMap ( this . controls ) ; return this . div } , redraw : function ( ) { for ( var a = this . div . childNodes . length - 1 ; 0 <= a ; a -- ) this . div . removeChild ( this . div . childNodes [ a ] ) ;
this . div . innerHTML = "" ; if ( this . active ) for ( var a = 0 , b = this . controls . length ; a < b ; a ++ ) this . div . appendChild ( this . controls [ a ] . panel _div ) } , activateControl : function ( a ) { if ( ! this . active ) return ! 1 ; if ( a . type == OpenLayers . Control . TYPE _BUTTON ) a . trigger ( ) ; else if ( a . type == OpenLayers . Control . TYPE _TOGGLE ) a . active ? a . deactivate ( ) : a . activate ( ) ; else if ( this . allowDepress && a . active ) a . deactivate ( ) ; else { for ( var b , c = 0 , d = this . controls . length ; c < d ; c ++ ) b = this . controls [ c ] , b != a && ( b . type === OpenLayers . Control . TYPE _TOOL || null == b . type ) &&
b . deactivate ( ) ; a . activate ( ) } } , addControls : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; this . controls = this . controls . concat ( a ) ; for ( var b = 0 , c = a . length ; b < c ; b ++ ) { var d = a [ b ] , e = this . createControlMarkup ( d ) ; OpenLayers . Element . addClass ( e , d . displayClass + "ItemInactive" ) ; OpenLayers . Element . addClass ( e , "olButton" ) ; "" != d . title && ! e . title && ( e . title = d . title ) ; d . panel _div = e } this . map && ( this . addControlsToMap ( a ) , this . redraw ( ) ) } , createControlMarkup : function ( ) { return document . createElement ( "div" ) } , addControlsToMap : function ( a ) { for ( var b ,
c = 0 , d = a . length ; c < d ; c ++ ) b = a [ c ] , ! 0 === b . autoActivate ? ( b . autoActivate = ! 1 , this . map . addControl ( b ) , b . autoActivate = ! 0 ) : ( this . map . addControl ( b ) , b . deactivate ( ) ) , b . events . on ( { activate : this . iconOn , deactivate : this . iconOff } ) } , iconOn : function ( ) { var a = this . panel _div ; a . className = a . className . replace ( RegExp ( "\\b(" + this . displayClass + "Item)Inactive\\b" ) , "$1Active" ) } , iconOff : function ( ) { var a = this . panel _div ; a . className = a . className . replace ( RegExp ( "\\b(" + this . displayClass + "Item)Active\\b" ) , "$1Inactive" ) } , onButtonClick : function ( a ) { for ( var b =
this . controls , a = a . buttonElement , c = b . length - 1 ; 0 <= c ; -- c ) if ( b [ c ] . panel _div === a ) { this . activateControl ( b [ c ] ) ; break } } , getControlsBy : function ( a , b ) { var c = "function" == typeof b . test ; return OpenLayers . Array . filter ( this . controls , function ( d ) { return d [ a ] == b || c && b . test ( d [ a ] ) } ) } , getControlsByName : function ( a ) { return this . getControlsBy ( "name" , a ) } , getControlsByClass : function ( a ) { return this . getControlsBy ( "CLASS_NAME" , a ) } , CLASS _NAME : "OpenLayers.Control.Panel" } ) ; OpenLayers . Control . ZoomIn = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _BUTTON , trigger : function ( ) { this . map . zoomIn ( ) } , CLASS _NAME : "OpenLayers.Control.ZoomIn" } ) ; OpenLayers . Control . ZoomOut = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _BUTTON , trigger : function ( ) { this . map . zoomOut ( ) } , CLASS _NAME : "OpenLayers.Control.ZoomOut" } ) ; OpenLayers . Control . ZoomToMaxExtent = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _BUTTON , trigger : function ( ) { this . map && this . map . zoomToMaxExtent ( ) } , CLASS _NAME : "OpenLayers.Control.ZoomToMaxExtent" } ) ; OpenLayers . Control . ZoomPanel = OpenLayers . Class ( OpenLayers . Control . Panel , { initialize : function ( a ) { OpenLayers . Control . Panel . prototype . initialize . apply ( this , [ a ] ) ; this . addControls ( [ new OpenLayers . Control . ZoomIn , new OpenLayers . Control . ZoomToMaxExtent , new OpenLayers . Control . ZoomOut ] ) } , CLASS _NAME : "OpenLayers.Control.ZoomPanel" } ) ; OpenLayers . Layer . HTTPRequest = OpenLayers . Class ( OpenLayers . Layer , { URL _HASH _FACTOR : ( Math . sqrt ( 5 ) - 1 ) / 2 , url : null , params : null , reproject : ! 1 , initialize : function ( a , b , c , d ) { OpenLayers . Layer . prototype . initialize . apply ( this , [ a , d ] ) ; this . url = b ; this . params || ( this . params = OpenLayers . Util . extend ( { } , c ) ) } , destroy : function ( ) { this . params = this . url = null ; OpenLayers . Layer . prototype . destroy . apply ( this , arguments ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . HTTPRequest ( this . name , this . url , this . params , this . getOptions ( ) ) ) ;
return a = OpenLayers . Layer . prototype . clone . apply ( this , [ a ] ) } , setUrl : function ( a ) { this . url = a } , mergeNewParams : function ( a ) { this . params = OpenLayers . Util . extend ( this . params , a ) ; a = this . redraw ( ) ; null != this . map && this . map . events . triggerEvent ( "changelayer" , { layer : this , property : "params" } ) ; return a } , redraw : function ( a ) { return a ? this . mergeNewParams ( { _olSalt : Math . random ( ) } ) : OpenLayers . Layer . prototype . redraw . apply ( this , [ ] ) } , selectUrl : function ( a , b ) { for ( var c = 1 , d = 0 , e = a . length ; d < e ; d ++ ) c *= a . charCodeAt ( d ) * this . URL _HASH _FACTOR ,
c -= Math . floor ( c ) ; return b [ Math . floor ( c * b . length ) ] } , getFullRequestString : function ( a , b ) { var c = b || this . url , d = OpenLayers . Util . extend ( { } , this . params ) , d = OpenLayers . Util . extend ( d , a ) , e = OpenLayers . Util . getParameterString ( d ) ; OpenLayers . Util . isArray ( c ) && ( c = this . selectUrl ( e , c ) ) ; var e = OpenLayers . Util . upperCaseObject ( OpenLayers . Util . getParameters ( c ) ) , f ; for ( f in d ) f . toUpperCase ( ) in e && delete d [ f ] ; e = OpenLayers . Util . getParameterString ( d ) ; return OpenLayers . Util . urlAppend ( c , e ) } , CLASS _NAME : "OpenLayers.Layer.HTTPRequest" } ) ; OpenLayers . Tile = OpenLayers . Class ( { events : null , eventListeners : null , id : null , layer : null , url : null , bounds : null , size : null , position : null , isLoading : ! 1 , initialize : function ( a , b , c , d , e , f ) { this . layer = a ; this . position = b . clone ( ) ; this . setBounds ( c ) ; this . url = d ; e && ( this . size = e . clone ( ) ) ; this . id = OpenLayers . Util . createUniqueID ( "Tile_" ) ; OpenLayers . Util . extend ( this , f ) ; this . events = new OpenLayers . Events ( this ) ; if ( this . eventListeners instanceof Object ) this . events . on ( this . eventListeners ) } , unload : function ( ) { this . isLoading && ( this . isLoading =
! 1 , this . events . triggerEvent ( "unload" ) ) } , destroy : function ( ) { this . position = this . size = this . bounds = this . layer = null ; this . eventListeners && this . events . un ( this . eventListeners ) ; this . events . destroy ( ) ; this . events = this . eventListeners = null } , draw : function ( a ) { a || this . clear ( ) ; var b = this . shouldDraw ( ) ; b && ! a && ( b = ! 1 !== this . events . triggerEvent ( "beforedraw" ) ) ; return b } , shouldDraw : function ( ) { var a = ! 1 , b = this . layer . maxExtent ; if ( b ) { var c = this . layer . map , c = c . baseLayer . wrapDateLine && c . getMaxExtent ( ) ; this . bounds . intersectsBounds ( b ,
{ inclusive : ! 1 , worldBounds : c } ) && ( a = ! 0 ) } return a || this . layer . displayOutsideMaxExtent } , setBounds : function ( a ) { a = a . clone ( ) ; if ( this . layer . map . baseLayer . wrapDateLine ) var b = this . layer . map . getMaxExtent ( ) , c = this . layer . map . getResolution ( ) , a = a . wrapDateLine ( b , { leftTolerance : c , rightTolerance : c } ) ; this . bounds = a } , moveTo : function ( a , b , c ) { null == c && ( c = ! 0 ) ; this . setBounds ( a ) ; this . position = b . clone ( ) ; c && this . draw ( ) } , clear : function ( ) { } , CLASS _NAME : "OpenLayers.Tile" } ) ; OpenLayers . Tile . Image = OpenLayers . Class ( OpenLayers . Tile , { url : null , imgDiv : null , frame : null , imageReloadAttempts : null , layerAlphaHack : null , asyncRequestId : null , blankImageUrl : "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7" , maxGetUrlLength : null , canvasContext : null , crossOriginKeyword : null , initialize : function ( a , b , c , d , e , f ) { OpenLayers . Tile . prototype . initialize . apply ( this , arguments ) ; this . url = d ; this . layerAlphaHack = this . layer . alpha && OpenLayers . Util . alphaHack ( ) ; if ( null != this . maxGetUrlLength ||
this . layer . gutter || this . layerAlphaHack ) this . frame = document . createElement ( "div" ) , this . frame . style . position = "absolute" , this . frame . style . overflow = "hidden" ; null != this . maxGetUrlLength && OpenLayers . Util . extend ( this , OpenLayers . Tile . Image . IFrame ) } , destroy : function ( ) { this . imgDiv && ( this . clear ( ) , this . frame = this . imgDiv = null ) ; this . asyncRequestId = null ; OpenLayers . Tile . prototype . destroy . apply ( this , arguments ) } , draw : function ( ) { var a = OpenLayers . Tile . prototype . draw . apply ( this , arguments ) ; a ? ( this . layer != this . layer . map . baseLayer &&
this . layer . reproject && ( this . bounds = this . getBoundsFromBaseLayer ( this . position ) ) , this . isLoading ? this . _loadEvent = "reload" : ( this . isLoading = ! 0 , this . _loadEvent = "loadstart" ) , this . positionTile ( ) , this . renderTile ( ) ) : this . unload ( ) ; return a } , renderTile : function ( ) { this . layer . div . appendChild ( this . getTile ( ) ) ; if ( this . layer . async ) { var a = this . asyncRequestId = ( this . asyncRequestId || 0 ) + 1 ; this . layer . getURLasync ( this . bounds , function ( b ) { a == this . asyncRequestId && ( this . url = b , this . initImage ( ) ) } , this ) } else this . url = this . layer . getURL ( this . bounds ) ,
this . initImage ( ) } , positionTile : function ( ) { var a = this . getTile ( ) . style , b = this . frame ? this . size : this . layer . getImageSize ( this . bounds ) ; a . left = this . position . x + "%" ; a . top = this . position . y + "%" ; a . width = b . w + "%" ; a . height = b . h + "%" } , clear : function ( ) { OpenLayers . Tile . prototype . clear . apply ( this , arguments ) ; var a = this . imgDiv ; if ( a ) { OpenLayers . Event . stopObservingElement ( a ) ; var b = this . getTile ( ) ; b . parentNode === this . layer . div && this . layer . div . removeChild ( b ) ; this . setImgSrc ( ) ; ! 0 === this . layerAlphaHack && ( a . style . filter = "" ) ; OpenLayers . Element . removeClass ( a ,
"olImageLoadError" ) } this . canvasContext = null } , getImage : function ( ) { if ( ! this . imgDiv ) { this . imgDiv = document . createElement ( "img" ) ; this . imgDiv . className = "olTileImage" ; this . imgDiv . galleryImg = "no" ; var a = this . imgDiv . style ; if ( this . frame ) { var b = 0 , c = 0 ; this . layer . gutter && ( b = 100 * ( this . layer . gutter / this . layer . tileSize . w ) , c = 100 * ( this . layer . gutter / this . layer . tileSize . h ) ) ; a . left = - b + "%" ; a . top = - c + "%" ; a . width = 2 * b + 100 + "%" ; a . height = 2 * c + 100 + "%" } a . visibility = "hidden" ; a . opacity = 0 ; 1 > this . layer . opacity && ( a . filter = "alpha(opacity=" +
100 * this . layer . opacity + ")" ) ; a . position = "absolute" ; this . layerAlphaHack && ( a . paddingTop = a . height , a . height = "0" , a . width = "100%" ) ; this . frame && this . frame . appendChild ( this . imgDiv ) } return this . imgDiv } , initImage : function ( ) { this . events . triggerEvent ( this . _loadEvent ) ; var a = this . getImage ( ) ; if ( this . url && a . getAttribute ( "src" ) == this . url ) this . onImageLoad ( ) ; else { var b = OpenLayers . Function . bind ( function ( ) { OpenLayers . Event . stopObservingElement ( a ) ; OpenLayers . Event . observe ( a , "load" , OpenLayers . Function . bind ( this . onImageLoad ,
this ) ) ; OpenLayers . Event . observe ( a , "error" , OpenLayers . Function . bind ( this . onImageError , this ) ) ; this . imageReloadAttempts = 0 ; this . setImgSrc ( this . url ) } , this ) ; a . getAttribute ( "src" ) == this . blankImageUrl ? b ( ) : ( OpenLayers . Event . observe ( a , "load" , b ) , OpenLayers . Event . observe ( a , "error" , b ) , this . crossOriginKeyword && a . removeAttribute ( "crossorigin" ) , a . src = this . blankImageUrl ) } } , setImgSrc : function ( a ) { var b = this . imgDiv ; b . style . visibility = "hidden" ; b . style . opacity = 0 ; a && ( this . crossOriginKeyword && ( "data:" !== a . substr ( 0 , 5 ) ? b . setAttribute ( "crossorigin" ,
this . crossOriginKeyword ) : b . removeAttribute ( "crossorigin" ) ) , b . src = a ) } , getTile : function ( ) { return this . frame ? this . frame : this . getImage ( ) } , createBackBuffer : function ( ) { if ( this . imgDiv && ! this . isLoading ) { var a ; this . frame ? ( a = this . frame . cloneNode ( ! 1 ) , a . appendChild ( this . imgDiv ) ) : a = this . imgDiv ; this . imgDiv = null ; return a } } , onImageLoad : function ( ) { var a = this . imgDiv ; OpenLayers . Event . stopObservingElement ( a ) ; a . style . visibility = "inherit" ; a . style . opacity = this . layer . opacity ; this . isLoading = ! 1 ; this . canvasContext = null ; this . events . triggerEvent ( "loadend" ) ;
if ( 7 > parseFloat ( navigator . appVersion . split ( "MSIE" ) [ 1 ] ) && this . layer && this . layer . div ) { var b = document . createElement ( "span" ) ; b . style . display = "none" ; var c = this . layer . div ; c . appendChild ( b ) ; window . setTimeout ( function ( ) { b . parentNode === c && b . parentNode . removeChild ( b ) } , 0 ) } ! 0 === this . layerAlphaHack && ( a . style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + a . src + "', sizingMethod='scale')" ) } , onImageError : function ( ) { var a = this . imgDiv ; null != a . src && ( this . imageReloadAttempts ++ , this . imageReloadAttempts <=
OpenLayers . IMAGE _RELOAD _ATTEMPTS ? this . setImgSrc ( this . layer . getURL ( this . bounds ) ) : ( OpenLayers . Element . addClass ( a , "olImageLoadError" ) , this . events . triggerEvent ( "loaderror" ) , this . onImageLoad ( ) ) ) } , getCanvasContext : function ( ) { if ( OpenLayers . CANVAS _SUPPORTED && this . imgDiv && ! this . isLoading ) { if ( ! this . canvasContext ) { var a = document . createElement ( "canvas" ) ; a . width = this . size . w ; a . height = this . size . h ; this . canvasContext = a . getContext ( "2d" ) ; this . canvasContext . drawImage ( this . imgDiv , 0 , 0 ) } return this . canvasContext } } , CLASS _NAME : "OpenLayers.Tile.Image" } ) ; OpenLayers . Layer . Grid = OpenLayers . Class ( OpenLayers . Layer . HTTPRequest , { tileSize : null , tileOriginCorner : "bl" , tileOrigin : null , tileOptions : null , tileClass : OpenLayers . Tile . Image , grid : null , singleTile : ! 1 , ratio : 1.5 , buffer : 0 , transitionEffect : null , numLoadingTiles : 0 , tileLoadingDelay : 85 , serverResolutions : null , moveTimerId : null , deferMoveGriddedTiles : null , tileQueueId : null , tileQueue : null , loading : ! 1 , backBuffer : null , gridResolution : null , backBufferResolution : null , backBufferLonLat : null , backBufferTimerId : null , removeBackBufferDelay : null ,
className : null , initialize : function ( a , b , c , d ) { OpenLayers . Layer . HTTPRequest . prototype . initialize . apply ( this , arguments ) ; this . grid = [ ] ; this . tileQueue = [ ] ; null === this . removeBackBufferDelay && ( this . removeBackBufferDelay = this . singleTile ? 0 : 2500 ) ; null === this . className && ( this . className = this . singleTile ? "olLayerGridSingleTile" : "olLayerGrid" ) ; OpenLayers . Animation . isNative || ( this . deferMoveGriddedTiles = OpenLayers . Function . bind ( function ( ) { this . moveGriddedTiles ( true ) ; this . moveTimerId = null } , this ) ) } , setMap : function ( a ) { OpenLayers . Layer . HTTPRequest . prototype . setMap . call ( this ,
a ) ; OpenLayers . Element . addClass ( this . div , this . className ) } , removeMap : function ( ) { null !== this . moveTimerId && ( window . clearTimeout ( this . moveTimerId ) , this . moveTimerId = null ) ; this . clearTileQueue ( ) ; null !== this . backBufferTimerId && ( window . clearTimeout ( this . backBufferTimerId ) , this . backBufferTimerId = null ) } , destroy : function ( ) { this . removeBackBuffer ( ) ; this . clearGrid ( ) ; this . tileSize = this . grid = null ; OpenLayers . Layer . HTTPRequest . prototype . destroy . apply ( this , arguments ) } , clearGrid : function ( ) { this . clearTileQueue ( ) ; if ( this . grid ) { for ( var a =
0 , b = this . grid . length ; a < b ; a ++ ) for ( var c = this . grid [ a ] , d = 0 , e = c . length ; d < e ; d ++ ) this . destroyTile ( c [ d ] ) ; this . grid = [ ] ; this . gridResolution = null } } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . Grid ( this . name , this . url , this . params , this . getOptions ( ) ) ) ; a = OpenLayers . Layer . HTTPRequest . prototype . clone . apply ( this , [ a ] ) ; null != this . tileSize && ( a . tileSize = this . tileSize . clone ( ) ) ; a . grid = [ ] ; a . gridResolution = null ; a . backBuffer = null ; a . backBufferTimerId = null ; a . tileQueue = [ ] ; a . tileQueueId = null ; a . loading = ! 1 ; a . moveTimerId = null ;
return a } , moveTo : function ( a , b , c ) { OpenLayers . Layer . HTTPRequest . prototype . moveTo . apply ( this , arguments ) ; a = a || this . map . getExtent ( ) ; if ( null != a ) { var d = ! this . grid . length || b , e = this . getTilesBounds ( ) , f = this . map . getResolution ( ) , g = this . getServerResolution ( f ) ; if ( this . singleTile ) { if ( d || ! c && ! e . containsBounds ( a ) ) b && "resize" !== this . transitionEffect && this . removeBackBuffer ( ) , ( ! b || "resize" === this . transitionEffect ) && this . applyBackBuffer ( g ) , this . initSingleTile ( a ) } else ( d = d || ! e . intersectsBounds ( a , { worldBounds : this . map . baseLayer . wrapDateLine &&
this . map . getMaxExtent ( ) } ) , f !== g ? ( a = this . map . calculateBounds ( null , g ) , d && this . transformDiv ( g / f ) ) : ( this . div . style . width = "100%" , this . div . style . height = "100%" , this . div . style . left = "0%" , this . div . style . top = "0%" ) , d ) ? ( b && "resize" === this . transitionEffect && this . applyBackBuffer ( g ) , this . initGriddedTiles ( a ) ) : this . moveGriddedTiles ( ) } } , getTileData : function ( a ) { var b = null , c = a . lon , d = a . lat , e = this . grid . length ; if ( this . map && e ) { var f = this . map . getResolution ( ) , a = this . tileSize . w , g = this . tileSize . h , h = this . grid [ 0 ] [ 0 ] . bounds , i = h . left ,
h = h . top ; if ( c < i && this . map . baseLayer . wrapDateLine ) var j = this . map . getMaxExtent ( ) . getWidth ( ) , k = Math . ceil ( ( i - c ) / j ) , c = c + j * k ; c = ( c - i ) / ( f * a ) ; d = ( h - d ) / ( f * g ) ; f = Math . floor ( c ) ; i = Math . floor ( d ) ; 0 <= i && i < e && ( e = this . grid [ i ] [ f ] ) && ( b = { tile : e , i : Math . floor ( ( c - f ) * a ) , j : Math . floor ( ( d - i ) * g ) } ) } return b } , queueTileDraw : function ( a ) { a = a . object ; ~ OpenLayers . Util . indexOf ( this . tileQueue , a ) || this . tileQueue . push ( a ) ; this . tileQueueId || ( this . tileQueueId = OpenLayers . Animation . start ( OpenLayers . Function . bind ( this . drawTileFromQueue , this ) , null ,
this . div ) ) ; return ! 1 } , drawTileFromQueue : function ( ) { 0 === this . tileQueue . length ? this . clearTileQueue ( ) : this . tileQueue . shift ( ) . draw ( ! 0 ) } , clearTileQueue : function ( ) { OpenLayers . Animation . stop ( this . tileQueueId ) ; this . tileQueueId = null ; this . tileQueue = [ ] } , destroyTile : function ( a ) { this . removeTileMonitoringHooks ( a ) ; a . destroy ( ) } , getServerResolution : function ( a ) { a = a || this . map . getResolution ( ) ; if ( this . serverResolutions && - 1 === OpenLayers . Util . indexOf ( this . serverResolutions , a ) ) { var b , c ; for ( b = this . serverResolutions . length -
1 ; 0 <= b ; b -- ) if ( c = this . serverResolutions [ b ] , c > a ) { a = c ; break } if ( - 1 === b ) throw "no appropriate resolution in serverResolutions" ; } return a } , getServerZoom : function ( ) { var a = this . getServerResolution ( ) ; return this . serverResolutions ? OpenLayers . Util . indexOf ( this . serverResolutions , a ) : this . map . getZoomForResolution ( a ) + ( this . zoomOffset || 0 ) } , transformDiv : function ( a ) { this . div . style . width = 100 * a + "%" ; this . div . style . height = 100 * a + "%" ; var b = this . map . getSize ( ) , c = parseInt ( this . map . layerContainerDiv . style . left , 10 ) , d = ( parseInt ( this . map . layerContainerDiv . style . top ,
10 ) - b . h / 2 ) * ( a - 1 ) ; this . div . style . left = ( c - b . w / 2 ) * ( a - 1 ) + "%" ; this . div . style . top = d + "%" } , getResolutionScale : function ( ) { return parseInt ( this . div . style . width , 10 ) / 100 } , applyBackBuffer : function ( a ) { null !== this . backBufferTimerId && this . removeBackBuffer ( ) ; var b = this . backBuffer ; if ( ! b ) { b = this . createBackBuffer ( ) ; if ( ! b ) return ; this . div . insertBefore ( b , this . div . firstChild ) ; this . backBuffer = b ; var c = this . grid [ 0 ] [ 0 ] . bounds ; this . backBufferLonLat = { lon : c . left , lat : c . top } ; this . backBufferResolution = this . gridResolution } var c = b . style ,
d = this . backBufferResolution / a ; c . width = 100 * d + "%" ; c . height = 100 * d + "%" ; a = this . getViewPortPxFromLonLat ( this . backBufferLonLat , a ) ; c = parseInt ( this . map . layerContainerDiv . style . left , 10 ) ; d = parseInt ( this . map . layerContainerDiv . style . top , 10 ) ; b . style . left = Math . round ( a . x - c ) + "%" ; b . style . top = Math . round ( a . y - d ) + "%" } , createBackBuffer : function ( ) { var a ; if ( 0 < this . grid . length ) { a = document . createElement ( "div" ) ; a . id = this . div . id + "_bb" ; a . className = "olBackBuffer" ; a . style . position = "absolute" ; a . style . width = "100%" ; a . style . height =
"100%" ; for ( var b = 0 , c = this . grid . length ; b < c ; b ++ ) for ( var d = 0 , e = this . grid [ b ] . length ; d < e ; d ++ ) { var f = this . grid [ b ] [ d ] . createBackBuffer ( ) ; f && ( f . style . top = b * this . tileSize . h + "%" , f . style . left = d * this . tileSize . w + "%" , a . appendChild ( f ) ) } } return a } , removeBackBuffer : function ( ) { this . backBuffer && ( this . div . removeChild ( this . backBuffer ) , this . backBufferResolution = this . backBuffer = null , null !== this . backBufferTimerId && ( window . clearTimeout ( this . backBufferTimerId ) , this . backBufferTimerId = null ) ) } , moveByPx : function ( ) { this . singleTile ||
this . moveGriddedTiles ( ) } , setTileSize : function ( a ) { this . singleTile && ( a = this . map . getSize ( ) , a . h = parseInt ( a . h * this . ratio ) , a . w = parseInt ( a . w * this . ratio ) ) ; OpenLayers . Layer . HTTPRequest . prototype . setTileSize . apply ( this , [ a ] ) } , getTilesBounds : function ( ) { var a = null , b = this . grid . length ; if ( b ) var a = this . grid [ b - 1 ] [ 0 ] . bounds , b = this . grid [ 0 ] . length * a . getWidth ( ) , c = this . grid . length * a . getHeight ( ) , a = new OpenLayers . Bounds ( a . left , a . bottom , a . left + b , a . bottom + c ) ; return a } , initSingleTile : function ( a ) { this . clearTileQueue ( ) ; var b =
a . getCenterLonLat ( ) , c = a . getWidth ( ) * this . ratio , a = a . getHeight ( ) * this . ratio , b = new OpenLayers . Bounds ( b . lon - c / 2 , b . lat - a / 2 , b . lon + c / 2 , b . lat + a / 2 ) , c = this . map . getLayerPxFromLonLat ( { lon : b . left , lat : b . top } ) ; this . grid . length || ( this . grid [ 0 ] = [ ] ) ; ( a = this . grid [ 0 ] [ 0 ] ) ? a . moveTo ( b , c ) : ( a = this . addTile ( b , c ) , this . addTileMonitoringHooks ( a ) , a . draw ( ) , this . grid [ 0 ] [ 0 ] = a ) ; this . removeExcessTiles ( 1 , 1 ) ; this . gridResolution = this . getServerResolution ( ) } , calculateGridLayout : function ( a , b , c ) { var d = c * this . tileSize . w , c = c * this . tileSize . h , e =
a . left - b . lon , f = Math . floor ( e / d ) - this . buffer , e = - ( e / d - f ) * this . tileSize . w , f = b . lon + f * d , a = a . top - ( b . lat + c ) , g = Math . ceil ( a / c ) + this . buffer ; return { tilelon : d , tilelat : c , tileoffsetlon : f , tileoffsetlat : b . lat + g * c , tileoffsetx : e , tileoffsety : - ( g - a / c ) * this . tileSize . h } } , getTileOrigin : function ( ) { var a = this . tileOrigin ; if ( ! a ) var a = this . getMaxExtent ( ) , b = { tl : [ "left" , "top" ] , tr : [ "right" , "top" ] , bl : [ "left" , "bottom" ] , br : [ "right" , "bottom" ] } [ this . tileOriginCorner ] , a = new OpenLayers . LonLat ( a [ b [ 0 ] ] , a [ b [ 1 ] ] ) ; return a } , initGriddedTiles : function ( a ) { this . clearTileQueue ( ) ;
var b = this . map . getSize ( ) , c = Math . ceil ( b . h / this . tileSize . h ) + Math . max ( 1 , 2 * this . buffer ) , b = Math . ceil ( b . w / this . tileSize . w ) + Math . max ( 1 , 2 * this . buffer ) , d = this . getTileOrigin ( ) , e = this . getServerResolution ( ) , d = this . calculateGridLayout ( a , d , e ) , e = Math . round ( d . tileoffsetx ) , f = Math . round ( d . tileoffsety ) , g = d . tileoffsetlon , h = d . tileoffsetlat , i = d . tilelon , j = d . tilelat , k = e , l = g , m = 0 , n = parseInt ( this . map . layerContainerDiv . style . left ) , o = parseInt ( this . map . layerContainerDiv . style . top ) , d = [ ] , p = this . map . getCenter ( ) ; do { var q = this . grid [ m ++ ] ;
q || ( q = [ ] , this . grid . push ( q ) ) ; var g = l , e = k , r = 0 ; do { var s = new OpenLayers . Bounds ( g , h , g + i , h + j ) , t = e , t = t - n , u = f , u = u - o , u = new OpenLayers . Pixel ( t , u ) ; ( t = q [ r ++ ] ) ? t . moveTo ( s , u , ! 1 ) : ( t = this . addTile ( s , u ) , this . addTileMonitoringHooks ( t ) , q . push ( t ) ) ; s = s . getCenterLonLat ( ) ; d . push ( { tile : t , distance : Math . pow ( s . lon - p . lon , 2 ) + Math . pow ( s . lat - p . lat , 2 ) } ) ; g += i ; e += this . tileSize . w } while ( g <= a . right + i * this . buffer || r < b ) ; h -= j ; f += this . tileSize . h } while ( h >= a . bottom - j * this . buffer || m < c ) ; this . removeExcessTiles ( m , r ) ; this . gridResolution = this . getServerResolution ( ) ;
d . sort ( function ( a , b ) { return a . distance - b . distance } ) ; a = 0 ; for ( c = d . length ; a < c ; ++ a ) d [ a ] . tile . draw ( ) } , getMaxExtent : function ( ) { return this . maxExtent } , addTile : function ( a , b ) { var c = new this . tileClass ( this , b , a , null , this . tileSize , this . tileOptions ) ; c . events . register ( "beforedraw" , this , this . queueTileDraw ) ; return c } , addTileMonitoringHooks : function ( a ) { a . onLoadStart = function ( ) { ! 1 === this . loading && ( this . loading = ! 0 , this . events . triggerEvent ( "loadstart" ) ) ; this . events . triggerEvent ( "tileloadstart" , { tile : a } ) ; this . numLoadingTiles ++ } ;
a . onLoadEnd = function ( ) { this . numLoadingTiles -- ; this . events . triggerEvent ( "tileloaded" , { tile : a } ) ; 0 === this . tileQueue . length && 0 === this . numLoadingTiles && ( this . loading = ! 1 , this . events . triggerEvent ( "loadend" ) , this . backBuffer && ( this . backBufferTimerId = window . setTimeout ( OpenLayers . Function . bind ( this . removeBackBuffer , this ) , this . removeBackBufferDelay ) ) ) } ; a . onLoadError = function ( ) { this . events . triggerEvent ( "tileerror" , { tile : a } ) } ; a . events . on ( { loadstart : a . onLoadStart , loadend : a . onLoadEnd , unload : a . onLoadEnd , loaderror : a . onLoadError ,
scope : this } ) } , removeTileMonitoringHooks : function ( a ) { a . unload ( ) ; a . events . un ( { loadstart : a . onLoadStart , loadend : a . onLoadEnd , unload : a . onLoadEnd , loaderror : a . onLoadError , scope : this } ) } , moveGriddedTiles : function ( a ) { if ( ! a && ! OpenLayers . Animation . isNative ) null != this . moveTimerId && window . clearTimeout ( this . moveTimerId ) , this . moveTimerId = window . setTimeout ( this . deferMoveGriddedTiles , this . tileLoadingDelay ) ; else for ( var a = this . buffer || 1 , b = this . getResolutionScale ( ) ; ; ) { var c = this . grid [ 0 ] [ 0 ] . position . x * b + parseInt ( this . div . style . left ,
10 ) + parseInt ( this . map . layerContainerDiv . style . left ) , d = this . grid [ 0 ] [ 0 ] . position . y * b + parseInt ( this . div . style . top , 10 ) + parseInt ( this . map . layerContainerDiv . style . top ) , e = this . tileSize . w * b , f = this . tileSize . h * b ; if ( c > - e * ( a - 1 ) ) this . shiftColumn ( ! 0 ) ; else if ( c < - e * a ) this . shiftColumn ( ! 1 ) ; else if ( d > - f * ( a - 1 ) ) this . shiftRow ( ! 0 ) ; else if ( d < - f * a ) this . shiftRow ( ! 1 ) ; else break } } , shiftRow : function ( a ) { for ( var b = this . grid , c = b [ a ? 0 : this . grid . length - 1 ] , d = this . getServerResolution ( ) , e = a ? - this . tileSize . h : this . tileSize . h , d = d * - e , f = a ?
b . pop ( ) : b . shift ( ) , g = 0 , h = c . length ; g < h ; g ++ ) { var i = c [ g ] , j = i . bounds . clone ( ) , i = i . position . clone ( ) ; j . bottom += d ; j . top += d ; i . y += e ; f [ g ] . moveTo ( j , i ) } a ? b . unshift ( f ) : b . push ( f ) } , shiftColumn : function ( a ) { for ( var b = a ? - this . tileSize . w : this . tileSize . w , c = this . getServerResolution ( ) * b , d = 0 , e = this . grid . length ; d < e ; d ++ ) { var f = this . grid [ d ] , g = f [ a ? 0 : f . length - 1 ] , h = g . bounds . clone ( ) , g = g . position . clone ( ) ; h . left += c ; h . right += c ; g . x += b ; var i = a ? this . grid [ d ] . pop ( ) : this . grid [ d ] . shift ( ) ; i . moveTo ( h , g ) ; a ? f . unshift ( i ) : f . push ( i ) } } , removeExcessTiles : function ( a ,
b ) { for ( var c , d ; this . grid . length > a ; ) { var e = this . grid . pop ( ) ; c = 0 ; for ( d = e . length ; c < d ; c ++ ) { var f = e [ c ] ; this . destroyTile ( f ) } } c = 0 ; for ( d = this . grid . length ; c < d ; c ++ ) for ( ; this . grid [ c ] . length > b ; ) e = this . grid [ c ] , f = e . pop ( ) , this . destroyTile ( f ) } , onMapResize : function ( ) { this . singleTile && ( this . clearGrid ( ) , this . setTileSize ( ) ) } , getTileBounds : function ( a ) { var b = this . maxExtent , c = this . getResolution ( ) , d = c * this . tileSize . w , c = c * this . tileSize . h , e = this . getLonLatFromViewPortPx ( a ) , a = b . left + d * Math . floor ( ( e . lon - b . left ) / d ) , b = b . bottom +
c * Math . floor ( ( e . lat - b . bottom ) / c ) ; return new OpenLayers . Bounds ( a , b , a + d , b + c ) } , CLASS _NAME : "OpenLayers.Layer.Grid" } ) ; OpenLayers . Format . ArcXML = OpenLayers . Class ( OpenLayers . Format . XML , { fontStyleKeys : "antialiasing blockout font fontcolor fontsize fontstyle glowing interval outline printmode shadow transparency" . split ( " " ) , request : null , response : null , initialize : function ( a ) { this . request = new OpenLayers . Format . ArcXML . Request ; this . response = new OpenLayers . Format . ArcXML . Response ; if ( a ) if ( "feature" == a . requesttype ) { this . request . get _image = null ; var b = this . request . get _feature . query ; this . addCoordSys ( b . featurecoordsys , a . featureCoordSys ) ;
this . addCoordSys ( b . filtercoordsys , a . filterCoordSys ) ; a . polygon ? ( b . isspatial = ! 0 , b . spatialfilter . polygon = a . polygon ) : a . envelope && ( b . isspatial = ! 0 , b . spatialfilter . envelope = { minx : 0 , miny : 0 , maxx : 0 , maxy : 0 } , this . parseEnvelope ( b . spatialfilter . envelope , a . envelope ) ) } else "image" == a . requesttype ? ( this . request . get _feature = null , b = this . request . get _image . properties , this . parseEnvelope ( b . envelope , a . envelope ) , this . addLayers ( b . layerlist , a . layers ) , this . addImageSize ( b . imagesize , a . tileSize ) , this . addCoordSys ( b . featurecoordsys ,
a . featureCoordSys ) , this . addCoordSys ( b . filtercoordsys , a . filterCoordSys ) ) : this . request = null ; OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , parseEnvelope : function ( a , b ) { b && 4 == b . length && ( a . minx = b [ 0 ] , a . miny = b [ 1 ] , a . maxx = b [ 2 ] , a . maxy = b [ 3 ] ) } , addLayers : function ( a , b ) { for ( var c = 0 , d = b . length ; c < d ; c ++ ) a . push ( b [ c ] ) } , addImageSize : function ( a , b ) { null !== b && ( a . width = b . w , a . height = b . h , a . printwidth = b . w , a . printheight = b . h ) } , addCoordSys : function ( a , b ) { "string" == typeof b ? ( a . id = parseInt ( b ) , a . string = b ) : "object" == typeof b &&
null !== b . proj && ( a . id = b . proj . srsProjNumber , a . string = b . proj . srsCode ) } , iserror : function ( a ) { var b = null ; a ? ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) , a = a . documentElement . getElementsByTagName ( "ERROR" ) , b = null !== a && 0 < a . length ) : b = "" !== this . response . error ; return b } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var b = null ; a && a . documentElement && ( b = "ARCXML" == a . documentElement . nodeName ? a . documentElement : a . documentElement . getElementsByTagName ( "ARCXML" ) [ 0 ] ) ;
if ( ! b || "parsererror" === b . firstChild . nodeName ) { var c , d ; try { c = a . firstChild . nodeValue , d = a . firstChild . childNodes [ 1 ] . firstChild . nodeValue } catch ( e ) { } throw { message : "Error parsing the ArcXML request" , error : c , source : d } ; } return this . parseResponse ( b ) } , write : function ( a ) { a || ( a = this . request ) ; var b = this . createElementNS ( "" , "ARCXML" ) ; b . setAttribute ( "version" , "1.1" ) ; var c = this . createElementNS ( "" , "REQUEST" ) ; if ( null != a . get _image ) { var d = this . createElementNS ( "" , "GET_IMAGE" ) ; c . appendChild ( d ) ; var e = this . createElementNS ( "" ,
"PROPERTIES" ) ; d . appendChild ( e ) ; a = a . get _image . properties ; null != a . featurecoordsys && ( d = this . createElementNS ( "" , "FEATURECOORDSYS" ) , e . appendChild ( d ) , 0 === a . featurecoordsys . id ? d . setAttribute ( "string" , a . featurecoordsys . string ) : d . setAttribute ( "id" , a . featurecoordsys . id ) ) ; null != a . filtercoordsys && ( d = this . createElementNS ( "" , "FILTERCOORDSYS" ) , e . appendChild ( d ) , 0 === a . filtercoordsys . id ? d . setAttribute ( "string" , a . filtercoordsys . string ) : d . setAttribute ( "id" , a . filtercoordsys . id ) ) ; null != a . envelope && ( d = this . createElementNS ( "" ,
"ENVELOPE" ) , e . appendChild ( d ) , d . setAttribute ( "minx" , a . envelope . minx ) , d . setAttribute ( "miny" , a . envelope . miny ) , d . setAttribute ( "maxx" , a . envelope . maxx ) , d . setAttribute ( "maxy" , a . envelope . maxy ) ) ; d = this . createElementNS ( "" , "IMAGESIZE" ) ; e . appendChild ( d ) ; d . setAttribute ( "height" , a . imagesize . height ) ; d . setAttribute ( "width" , a . imagesize . width ) ; if ( a . imagesize . height != a . imagesize . printheight || a . imagesize . width != a . imagesize . printwidth ) d . setAttribute ( "printheight" , a . imagesize . printheight ) , d . setArrtibute ( "printwidth" , a . imagesize . printwidth ) ;
null != a . background && ( d = this . createElementNS ( "" , "BACKGROUND" ) , e . appendChild ( d ) , d . setAttribute ( "color" , a . background . color . r + "," + a . background . color . g + "," + a . background . color . b ) , null !== a . background . transcolor && d . setAttribute ( "transcolor" , a . background . transcolor . r + "," + a . background . transcolor . g + "," + a . background . transcolor . b ) ) ; if ( null != a . layerlist && 0 < a . layerlist . length ) { d = this . createElementNS ( "" , "LAYERLIST" ) ; e . appendChild ( d ) ; for ( e = 0 ; e < a . layerlist . length ; e ++ ) { var f = this . createElementNS ( "" , "LAYERDEF" ) ; d . appendChild ( f ) ;
f . setAttribute ( "id" , a . layerlist [ e ] . id ) ; f . setAttribute ( "visible" , a . layerlist [ e ] . visible ) ; if ( "object" == typeof a . layerlist [ e ] . query ) { var g = a . layerlist [ e ] . query ; if ( 0 > g . where . length ) continue ; var h = null , h = "boolean" == typeof g . spatialfilter && g . spatialfilter ? this . createElementNS ( "" , "SPATIALQUERY" ) : this . createElementNS ( "" , "QUERY" ) ; h . setAttribute ( "where" , g . where ) ; "number" == typeof g . accuracy && 0 < g . accuracy && h . setAttribute ( "accuracy" , g . accuracy ) ; "number" == typeof g . featurelimit && 2E3 > g . featurelimit && h . setAttribute ( "featurelimit" ,
g . featurelimit ) ; "string" == typeof g . subfields && "#ALL#" != g . subfields && h . setAttribute ( "subfields" , g . subfields ) ; "string" == typeof g . joinexpression && 0 < g . joinexpression . length && h . setAttribute ( "joinexpression" , g . joinexpression ) ; "string" == typeof g . jointables && 0 < g . jointables . length && h . setAttribute ( "jointables" , g . jointables ) ; f . appendChild ( h ) } "object" == typeof a . layerlist [ e ] . renderer && this . addRenderer ( f , a . layerlist [ e ] . renderer ) } } } else if ( null != a . get _feature && ( d = this . createElementNS ( "" , "GET_FEATURES" ) , d . setAttribute ( "outputmode" ,
"newxml" ) , d . setAttribute ( "checkesc" , "true" ) , a . get _feature . geometry ? d . setAttribute ( "geometry" , a . get _feature . geometry ) : d . setAttribute ( "geometry" , "false" ) , a . get _feature . compact && d . setAttribute ( "compact" , a . get _feature . compact ) , "number" == a . get _feature . featurelimit && d . setAttribute ( "featurelimit" , a . get _feature . featurelimit ) , d . setAttribute ( "globalenvelope" , "true" ) , c . appendChild ( d ) , null != a . get _feature . layer && 0 < a . get _feature . layer . length && ( e = this . createElementNS ( "" , "LAYER" ) , e . setAttribute ( "id" , a . get _feature . layer ) ,
d . appendChild ( e ) ) , a = a . get _feature . query , null != a ) ) e = null , e = a . isspatial ? this . createElementNS ( "" , "SPATIALQUERY" ) : this . createElementNS ( "" , "QUERY" ) , d . appendChild ( e ) , "number" == typeof a . accuracy && e . setAttribute ( "accuracy" , a . accuracy ) , null != a . featurecoordsys && ( d = this . createElementNS ( "" , "FEATURECOORDSYS" ) , 0 == a . featurecoordsys . id ? d . setAttribute ( "string" , a . featurecoordsys . string ) : d . setAttribute ( "id" , a . featurecoordsys . id ) , e . appendChild ( d ) ) , null != a . filtercoordsys && ( d = this . createElementNS ( "" , "FILTERCOORDSYS" ) ,
0 === a . filtercoordsys . id ? d . setAttribute ( "string" , a . filtercoordsys . string ) : d . setAttribute ( "id" , a . filtercoordsys . id ) , e . appendChild ( d ) ) , 0 < a . buffer && ( d = this . createElementNS ( "" , "BUFFER" ) , d . setAttribute ( "distance" , a . buffer ) , e . appendChild ( d ) ) , a . isspatial && ( d = this . createElementNS ( "" , "SPATIALFILTER" ) , d . setAttribute ( "relation" , a . spatialfilter . relation ) , e . appendChild ( d ) , a . spatialfilter . envelope ? ( f = this . createElementNS ( "" , "ENVELOPE" ) , f . setAttribute ( "minx" , a . spatialfilter . envelope . minx ) , f . setAttribute ( "miny" , a . spatialfilter . envelope . miny ) ,
f . setAttribute ( "maxx" , a . spatialfilter . envelope . maxx ) , f . setAttribute ( "maxy" , a . spatialfilter . envelope . maxy ) , d . appendChild ( f ) ) : "object" == typeof a . spatialfilter . polygon && d . appendChild ( this . writePolygonGeometry ( a . spatialfilter . polygon ) ) ) , null != a . where && 0 < a . where . length && e . setAttribute ( "where" , a . where ) ; b . appendChild ( c ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) } , addGroupRenderer : function ( a , b ) { var c = this . createElementNS ( "" , "GROUPRENDERER" ) ; a . appendChild ( c ) ; for ( var d = 0 ; d < b . length ; d ++ ) this . addRenderer ( c ,
b [ d ] ) } , addRenderer : function ( a , b ) { if ( OpenLayers . Util . isArray ( b ) ) this . addGroupRenderer ( a , b ) ; else { var c = this . createElementNS ( "" , b . type . toUpperCase ( ) + "RENDERER" ) ; a . appendChild ( c ) ; "VALUEMAPRENDERER" == c . tagName ? this . addValueMapRenderer ( c , b ) : "VALUEMAPLABELRENDERER" == c . tagName ? this . addValueMapLabelRenderer ( c , b ) : "SIMPLELABELRENDERER" == c . tagName ? this . addSimpleLabelRenderer ( c , b ) : "SCALEDEPENDENTRENDERER" == c . tagName && this . addScaleDependentRenderer ( c , b ) } } , addScaleDependentRenderer : function ( a , b ) { ( "string" == typeof b . lower ||
"number" == typeof b . lower ) && a . setAttribute ( "lower" , b . lower ) ; ( "string" == typeof b . upper || "number" == typeof b . upper ) && a . setAttribute ( "upper" , b . upper ) ; this . addRenderer ( a , b . renderer ) } , addValueMapLabelRenderer : function ( a , b ) { a . setAttribute ( "lookupfield" , b . lookupfield ) ; a . setAttribute ( "labelfield" , b . labelfield ) ; if ( "object" == typeof b . exacts ) for ( var c = 0 , d = b . exacts . length ; c < d ; c ++ ) { var e = b . exacts [ c ] , f = this . createElementNS ( "" , "EXACT" ) ; "string" == typeof e . value && f . setAttribute ( "value" , e . value ) ; "string" == typeof e . label &&
f . setAttribute ( "label" , e . label ) ; "string" == typeof e . method && f . setAttribute ( "method" , e . method ) ; a . appendChild ( f ) ; if ( "object" == typeof e . symbol ) { var g = null ; "text" == e . symbol . type && ( g = this . createElementNS ( "" , "TEXTSYMBOL" ) ) ; if ( null != g ) { for ( var h = this . fontStyleKeys , i = 0 , j = h . length ; i < j ; i ++ ) { var k = h [ i ] ; e . symbol [ k ] && g . setAttribute ( k , e . symbol [ k ] ) } f . appendChild ( g ) } } } } , addValueMapRenderer : function ( a , b ) { a . setAttribute ( "lookupfield" , b . lookupfield ) ; if ( "object" == typeof b . ranges ) for ( var c = 0 , d = b . ranges . length ; c < d ; c ++ ) { var e =
b . ranges [ c ] , f = this . createElementNS ( "" , "RANGE" ) ; f . setAttribute ( "lower" , e . lower ) ; f . setAttribute ( "upper" , e . upper ) ; a . appendChild ( f ) ; if ( "object" == typeof e . symbol ) { var g = null ; "simplepolygon" == e . symbol . type && ( g = this . createElementNS ( "" , "SIMPLEPOLYGONSYMBOL" ) ) ; null != g && ( "string" == typeof e . symbol . boundarycolor && g . setAttribute ( "boundarycolor" , e . symbol . boundarycolor ) , "string" == typeof e . symbol . fillcolor && g . setAttribute ( "fillcolor" , e . symbol . fillcolor ) , "number" == typeof e . symbol . filltransparency && g . setAttribute ( "filltransparency" ,
e . symbol . filltransparency ) , f . appendChild ( g ) ) } } else if ( "object" == typeof b . exacts ) { c = 0 ; for ( d = b . exacts . length ; c < d ; c ++ ) e = b . exacts [ c ] , f = this . createElementNS ( "" , "EXACT" ) , "string" == typeof e . value && f . setAttribute ( "value" , e . value ) , "string" == typeof e . label && f . setAttribute ( "label" , e . label ) , "string" == typeof e . method && f . setAttribute ( "method" , e . method ) , a . appendChild ( f ) , "object" == typeof e . symbol && ( g = null , "simplemarker" == e . symbol . type && ( g = this . createElementNS ( "" , "SIMPLEMARKERSYMBOL" ) ) , null != g && ( "string" == typeof e . symbol . antialiasing &&
g . setAttribute ( "antialiasing" , e . symbol . antialiasing ) , "string" == typeof e . symbol . color && g . setAttribute ( "color" , e . symbol . color ) , "string" == typeof e . symbol . outline && g . setAttribute ( "outline" , e . symbol . outline ) , "string" == typeof e . symbol . overlap && g . setAttribute ( "overlap" , e . symbol . overlap ) , "string" == typeof e . symbol . shadow && g . setAttribute ( "shadow" , e . symbol . shadow ) , "number" == typeof e . symbol . transparency && g . setAttribute ( "transparency" , e . symbol . transparency ) , "string" == typeof e . symbol . usecentroid && g . setAttribute ( "usecentroid" ,
e . symbol . usecentroid ) , "number" == typeof e . symbol . width && g . setAttribute ( "width" , e . symbol . width ) , f . appendChild ( g ) ) ) } } , addSimpleLabelRenderer : function ( a , b ) { a . setAttribute ( "field" , b . field ) ; for ( var c = "featureweight howmanylabels labelbufferratio labelpriorities labelweight linelabelposition rotationalangles" . split ( " " ) , d = 0 , e = c . length ; d < e ; d ++ ) { var f = c [ d ] ; b [ f ] && a . setAttribute ( f , b [ f ] ) } if ( "text" == b . symbol . type ) { var g = b . symbol , h = this . createElementNS ( "" , "TEXTSYMBOL" ) ; a . appendChild ( h ) ; c = this . fontStyleKeys ; d = 0 ;
for ( e = c . length ; d < e ; d ++ ) f = c [ d ] , g [ f ] && h . setAttribute ( f , b [ f ] ) } } , writePolygonGeometry : function ( a ) { if ( ! ( a instanceof OpenLayers . Geometry . Polygon ) ) throw { message : "Cannot write polygon geometry to ArcXML with an " + a . CLASS _NAME + " object." , geometry : a } ; for ( var b = this . createElementNS ( "" , "POLYGON" ) , c = 0 , d = a . components . length ; c < d ; c ++ ) { for ( var e = a . components [ c ] , f = this . createElementNS ( "" , "RING" ) , g = 0 , h = e . components . length ; g < h ; g ++ ) { var i = e . components [ g ] , j = this . createElementNS ( "" , "POINT" ) ; j . setAttribute ( "x" , i . x ) ; j . setAttribute ( "y" ,
i . y ) ; f . appendChild ( j ) } b . appendChild ( f ) } return b } , parseResponse : function ( a ) { "string" == typeof a && ( a = ( new OpenLayers . Format . XML ) . read ( a ) ) ; var b = new OpenLayers . Format . ArcXML . Response , c = a . getElementsByTagName ( "ERROR" ) ; if ( null != c && 0 < c . length ) b . error = this . getChildValue ( c , "Unknown error." ) ; else { c = a . getElementsByTagName ( "RESPONSE" ) ; if ( null == c || 0 == c . length ) return b . error = "No RESPONSE tag found in ArcXML response." , b ; var d = c [ 0 ] . firstChild . nodeName ; "#text" == d && ( d = c [ 0 ] . firstChild . nextSibling . nodeName ) ; if ( "IMAGE" ==
d ) c = a . getElementsByTagName ( "ENVELOPE" ) , a = a . getElementsByTagName ( "OUTPUT" ) , null == c || 0 == c . length ? b . error = "No ENVELOPE tag found in ArcXML response." : null == a || 0 == a . length ? b . error = "No OUTPUT tag found in ArcXML response." : ( c = this . parseAttributes ( c [ 0 ] ) , d = this . parseAttributes ( a [ 0 ] ) , b . image = "string" == typeof d . type ? { envelope : c , output : { type : d . type , data : this . getChildValue ( a [ 0 ] ) } } : { envelope : c , output : d } ) ; else if ( "FEATURES" == d ) { if ( a = c [ 0 ] . getElementsByTagName ( "FEATURES" ) , c = a [ 0 ] . getElementsByTagName ( "FEATURECOUNT" ) ,
b . features . featurecount = c [ 0 ] . getAttribute ( "count" ) , 0 < b . features . featurecount ) { c = a [ 0 ] . getElementsByTagName ( "ENVELOPE" ) ; b . features . envelope = this . parseAttributes ( c [ 0 ] , "number" ) ; a = a [ 0 ] . getElementsByTagName ( "FEATURE" ) ; for ( c = 0 ; c < a . length ; c ++ ) { for ( var d = new OpenLayers . Feature . Vector , e = a [ c ] . getElementsByTagName ( "FIELD" ) , f = 0 ; f < e . length ; f ++ ) { var g = e [ f ] . getAttribute ( "name" ) , h = e [ f ] . getAttribute ( "value" ) ; d . attributes [ g ] = h } e = a [ c ] . getElementsByTagName ( "POLYGON" ) ; if ( 0 < e . length ) { e = e [ 0 ] . getElementsByTagName ( "RING" ) ;
f = [ ] ; for ( g = 0 ; g < e . length ; g ++ ) { h = [ ] ; h . push ( this . parsePointGeometry ( e [ g ] ) ) ; for ( var i = e [ g ] . getElementsByTagName ( "HOLE" ) , j = 0 ; j < i . length ; j ++ ) h . push ( this . parsePointGeometry ( i [ j ] ) ) ; f . push ( new OpenLayers . Geometry . Polygon ( h ) ) } d . geometry = 1 == f . length ? f [ 0 ] : new OpenLayers . Geometry . MultiPolygon ( f ) } b . features . feature . push ( d ) } } } else b . error = "Unidentified response type." } return b } , parseAttributes : function ( a , b ) { for ( var c = { } , d = 0 ; d < a . attributes . length ; d ++ ) c [ a . attributes [ d ] . nodeName ] = "number" == b ? parseFloat ( a . attributes [ d ] . nodeValue ) :
a . attributes [ d ] . nodeValue ; return c } , parsePointGeometry : function ( a ) { var b = [ ] , c = a . getElementsByTagName ( "COORDS" ) ; if ( 0 < c . length ) { a = this . getChildValue ( c [ 0 ] ) ; a = a . split ( /;/ ) ; for ( c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] . split ( / / ) ; b . push ( new OpenLayers . Geometry . Point ( d [ 0 ] , d [ 1 ] ) ) } } else if ( a = a . getElementsByTagName ( "POINT" ) , 0 < a . length ) for ( c = 0 ; c < a . length ; c ++ ) b . push ( new OpenLayers . Geometry . Point ( parseFloat ( a [ c ] . getAttribute ( "x" ) ) , parseFloat ( a [ c ] . getAttribute ( "y" ) ) ) ) ; return new OpenLayers . Geometry . LinearRing ( b ) } , CLASS _NAME : "OpenLayers.Format.ArcXML" } ) ;
OpenLayers . Format . ArcXML . Request = OpenLayers . Class ( { initialize : function ( ) { return OpenLayers . Util . extend ( this , { get _image : { properties : { background : null , draw : ! 0 , envelope : { minx : 0 , miny : 0 , maxx : 0 , maxy : 0 } , featurecoordsys : { id : 0 , string : "" , datumtransformid : 0 , datumtransformstring : "" } , filtercoordsys : { id : 0 , string : "" , datumtransformid : 0 , datumtransformstring : "" } , imagesize : { height : 0 , width : 0 , dpi : 96 , printheight : 0 , printwidth : 0 , scalesymbols : ! 1 } , layerlist : [ ] , output : { baseurl : "" , legendbaseurl : "" , legendname : "" , legendpath : "" ,
legendurl : "" , name : "" , path : "" , type : "jpg" , url : "" } } } , get _feature : { layer : "" , query : { isspatial : ! 1 , featurecoordsys : { id : 0 , string : "" , datumtransformid : 0 , datumtransformstring : "" } , filtercoordsys : { id : 0 , string : "" , datumtransformid : 0 , datumtransformstring : "" } , buffer : 0 , where : "" , spatialfilter : { relation : "envelope_intersection" , envelope : null } } } , environment : { separators : { cs : " " , ts : ";" } } , layer : [ ] , workspaces : [ ] } ) } , CLASS _NAME : "OpenLayers.Format.ArcXML.Request" } ) ;
OpenLayers . Format . ArcXML . Response = OpenLayers . Class ( { initialize : function ( ) { return OpenLayers . Util . extend ( this , { image : { envelope : null , output : "" } , features : { featurecount : 0 , envelope : null , feature : [ ] } , error : "" } ) } , CLASS _NAME : "OpenLayers.Format.ArcXML.Response" } ) ; OpenLayers . ProxyHost = "" ;
OpenLayers . Request = { DEFAULT _CONFIG : { method : "GET" , url : window . location . href , async : ! 0 , user : void 0 , password : void 0 , params : null , proxy : OpenLayers . ProxyHost , headers : { } , data : null , callback : function ( ) { } , success : null , failure : null , scope : null } , URL _SPLIT _REGEX : /([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/ , events : new OpenLayers . Events ( this ) , makeSameOrigin : function ( a , b ) { var c = 0 !== a . indexOf ( "http" ) , d = ! c && a . match ( this . URL _SPLIT _REGEX ) ; if ( d ) { var e = window . location , c = d [ 1 ] == e . protocol && d [ 3 ] == e . hostname , d = d [ 4 ] ,
e = e . port ; if ( 80 != d && "" != d || "80" != e && "" != e ) c = c && d == e } c || ( b ? a = "function" == typeof b ? b ( a ) : b + encodeURIComponent ( a ) : OpenLayers . Console . warn ( OpenLayers . i18n ( "proxyNeeded" ) , { url : a } ) ) ; return a } , issue : function ( a ) { var b = OpenLayers . Util . extend ( this . DEFAULT _CONFIG , { proxy : OpenLayers . ProxyHost } ) , a = OpenLayers . Util . applyDefaults ( a , b ) , b = ! 1 , c ; for ( c in a . headers ) a . headers . hasOwnProperty ( c ) && "x-requested-with" === c . toLowerCase ( ) && ( b = ! 0 ) ; ! 1 === b && ( a . headers [ "X-Requested-With" ] = "XMLHttpRequest" ) ; var d = new OpenLayers . Request . XMLHttpRequest ,
e = OpenLayers . Util . urlAppend ( a . url , OpenLayers . Util . getParameterString ( a . params || { } ) ) , e = OpenLayers . Request . makeSameOrigin ( e , a . proxy ) ; d . open ( a . method , e , a . async , a . user , a . password ) ; for ( var f in a . headers ) d . setRequestHeader ( f , a . headers [ f ] ) ; var g = this . events , h = this ; d . onreadystatechange = function ( ) { d . readyState == OpenLayers . Request . XMLHttpRequest . DONE && ! 1 !== g . triggerEvent ( "complete" , { request : d , config : a , requestUrl : e } ) && h . runCallbacks ( { request : d , config : a , requestUrl : e } ) } ; ! 1 === a . async ? d . send ( a . data ) : window . setTimeout ( function ( ) { 0 !==
d . readyState && d . send ( a . data ) } , 0 ) ; return d } , runCallbacks : function ( a ) { var b = a . request , c = a . config , d = c . scope ? OpenLayers . Function . bind ( c . callback , c . scope ) : c . callback , e ; c . success && ( e = c . scope ? OpenLayers . Function . bind ( c . success , c . scope ) : c . success ) ; var f ; c . failure && ( f = c . scope ? OpenLayers . Function . bind ( c . failure , c . scope ) : c . failure ) ; "file:" == OpenLayers . Util . createUrlObject ( c . url ) . protocol && b . responseText && ( b . status = 200 ) ; d ( b ) ; if ( ! b . status || 200 <= b . status && 300 > b . status ) this . events . triggerEvent ( "success" , a ) , e && e ( b ) ;
if ( b . status && ( 200 > b . status || 300 <= b . status ) ) this . events . triggerEvent ( "failure" , a ) , f && f ( b ) } , GET : function ( a ) { a = OpenLayers . Util . extend ( a , { method : "GET" } ) ; return OpenLayers . Request . issue ( a ) } , POST : function ( a ) { a = OpenLayers . Util . extend ( a , { method : "POST" } ) ; a . headers = a . headers ? a . headers : { } ; "CONTENT-TYPE" in OpenLayers . Util . upperCaseObject ( a . headers ) || ( a . headers [ "Content-Type" ] = "application/xml" ) ; return OpenLayers . Request . issue ( a ) } , PUT : function ( a ) { a = OpenLayers . Util . extend ( a , { method : "PUT" } ) ; a . headers = a . headers ?
a . headers : { } ; "CONTENT-TYPE" in OpenLayers . Util . upperCaseObject ( a . headers ) || ( a . headers [ "Content-Type" ] = "application/xml" ) ; return OpenLayers . Request . issue ( a ) } , DELETE : function ( a ) { a = OpenLayers . Util . extend ( a , { method : "DELETE" } ) ; return OpenLayers . Request . issue ( a ) } , HEAD : function ( a ) { a = OpenLayers . Util . extend ( a , { method : "HEAD" } ) ; return OpenLayers . Request . issue ( a ) } , OPTIONS : function ( a ) { a = OpenLayers . Util . extend ( a , { method : "OPTIONS" } ) ; return OpenLayers . Request . issue ( a ) } } ; OpenLayers . Layer . ArcIMS = OpenLayers . Class ( OpenLayers . Layer . Grid , { DEFAULT _PARAMS : { ClientVersion : "9.2" , ServiceName : "" } , featureCoordSys : "4326" , filterCoordSys : "4326" , layers : null , async : ! 0 , name : "ArcIMS" , isBaseLayer : ! 0 , DEFAULT _OPTIONS : { tileSize : new OpenLayers . Size ( 512 , 512 ) , featureCoordSys : "4326" , filterCoordSys : "4326" , layers : null , isBaseLayer : ! 0 , async : ! 0 , name : "ArcIMS" } , initialize : function ( a , b , c ) { this . tileSize = new OpenLayers . Size ( 512 , 512 ) ; this . params = OpenLayers . Util . applyDefaults ( { ServiceName : c . serviceName } ,
this . DEFAULT _PARAMS ) ; this . options = OpenLayers . Util . applyDefaults ( c , this . DEFAULT _OPTIONS ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , [ a , b , this . params , c ] ) ; if ( this . transparent && ( this . isBaseLayer || ( this . isBaseLayer = ! 1 ) , "image/jpeg" == this . format ) ) this . format = OpenLayers . Util . alphaHack ( ) ? "image/gif" : "image/png" ; null === this . options . layers && ( this . options . layers = [ ] ) } , getURL : function ( a ) { var b = "" , a = this . adjustBounds ( a ) , a = new OpenLayers . Format . ArcXML ( OpenLayers . Util . extend ( this . options , { requesttype : "image" ,
envelope : a . toArray ( ) , tileSize : this . tileSize } ) ) , a = new OpenLayers . Request . POST ( { url : this . getFullRequestString ( ) , data : a . write ( ) , async : ! 1 } ) ; if ( null != a ) { b = a . responseXML ; if ( ! b || ! b . documentElement ) b = a . responseText ; b = this . getUrlOrImage ( ( new OpenLayers . Format . ArcXML ) . read ( b ) . image . output ) } return b } , getURLasync : function ( a , b , c ) { a = this . adjustBounds ( a ) ; a = new OpenLayers . Format . ArcXML ( OpenLayers . Util . extend ( this . options , { requesttype : "image" , envelope : a . toArray ( ) , tileSize : this . tileSize } ) ) ; OpenLayers . Request . POST ( { url : this . getFullRequestString ( ) ,
async : ! 0 , data : a . write ( ) , callback : function ( a ) { var e = a . responseXML ; if ( ! e || ! e . documentElement ) e = a . responseText ; a = ( new OpenLayers . Format . ArcXML ) . read ( e ) ; b . call ( c , this . getUrlOrImage ( a . image . output ) ) } , scope : this } ) } , getUrlOrImage : function ( a ) { var b = "" ; a . url ? b = a . url : a . data && ( b = "data:image/" + a . type + ";base64," + a . data ) ; return b } , setLayerQuery : function ( a , b ) { for ( var c = 0 ; c < this . options . layers . length ; c ++ ) if ( a == this . options . layers [ c ] . id ) { this . options . layers [ c ] . query = b ; return } this . options . layers . push ( { id : a , visible : ! 0 ,
query : b } ) } , getFeatureInfo : function ( a , b , c ) { var d = c . buffer || 1 , e = c . callback || function ( ) { } , f = c . scope || window , g = { } ; OpenLayers . Util . extend ( g , this . options ) ; g . requesttype = "feature" ; a instanceof OpenLayers . LonLat ? ( g . polygon = null , g . envelope = [ a . lon - d , a . lat - d , a . lon + d , a . lat + d ] ) : a instanceof OpenLayers . Geometry . Polygon && ( g . envelope = null , g . polygon = a ) ; var h = new OpenLayers . Format . ArcXML ( g ) ; OpenLayers . Util . extend ( h . request . get _feature , c ) ; h . request . get _feature . layer = b . id ; "number" == typeof b . query . accuracy ? h . request . get _feature . query . accuracy =
b . query . accuracy : ( a = this . map . getCenter ( ) , c = this . map . getViewPortPxFromLonLat ( a ) , c . x ++ , c = this . map . getLonLatFromPixel ( c ) , h . request . get _feature . query . accuracy = c . lon - a . lon ) ; h . request . get _feature . query . where = b . query . where ; h . request . get _feature . query . spatialfilter . relation = "area_intersection" ; OpenLayers . Request . POST ( { url : this . getFullRequestString ( { CustomService : "Query" } ) , data : h . write ( ) , callback : function ( a ) { a = h . parseResponse ( a . responseText ) ; h . iserror ( ) ? e . call ( f , null ) : e . call ( f , a . features ) } } ) } , clone : function ( a ) { null ==
a && ( a = new OpenLayers . Layer . ArcIMS ( this . name , this . url , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , CLASS _NAME : "OpenLayers.Layer.ArcIMS" } ) ; OpenLayers . Format . OWSCommon . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . OWSCommon . v1 , { namespaces : { ows : "http://www.opengis.net/ows/1.1" , xlink : "http://www.w3.org/1999/xlink" } , readers : { ows : OpenLayers . Util . applyDefaults ( { ExceptionReport : function ( a , b ) { b . exceptionReport = { version : a . getAttribute ( "version" ) , language : a . getAttribute ( "xml:lang" ) , exceptions : [ ] } ; this . readChildNodes ( a , b . exceptionReport ) } , AllowedValues : function ( a , b ) { b . allowedValues = { } ; this . readChildNodes ( a , b . allowedValues ) } , AnyValue : function ( a , b ) { b . anyValue =
! 0 } , DataType : function ( a , b ) { b . dataType = this . getChildValue ( a ) } , Range : function ( a , b ) { b . range = { } ; this . readChildNodes ( a , b . range ) } , MinimumValue : function ( a , b ) { b . minValue = this . getChildValue ( a ) } , MaximumValue : function ( a , b ) { b . maxValue = this . getChildValue ( a ) } , Identifier : function ( a , b ) { b . identifier = this . getChildValue ( a ) } , SupportedCRS : function ( a , b ) { b . supportedCRS = this . getChildValue ( a ) } } , OpenLayers . Format . OWSCommon . v1 . prototype . readers . ows ) } , writers : { ows : OpenLayers . Util . applyDefaults ( { Range : function ( a ) { var b = this . createElementNSPlus ( "ows:Range" ,
{ attributes : { "ows:rangeClosure" : a . closure } } ) ; this . writeNode ( "ows:MinimumValue" , a . minValue , b ) ; this . writeNode ( "ows:MaximumValue" , a . maxValue , b ) ; return b } , MinimumValue : function ( a ) { return this . createElementNSPlus ( "ows:MinimumValue" , { value : a } ) } , MaximumValue : function ( a ) { return this . createElementNSPlus ( "ows:MaximumValue" , { value : a } ) } , Value : function ( a ) { return this . createElementNSPlus ( "ows:Value" , { value : a } ) } } , OpenLayers . Format . OWSCommon . v1 . prototype . writers . ows ) } , CLASS _NAME : "OpenLayers.Format.OWSCommon.v1_1_0" } ) ; OpenLayers . Format . WCSGetCoverage = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ows : "http://www.opengis.net/ows/1.1" , wcs : "http://www.opengis.net/wcs/1.1" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , VERSION : "1.1.2" , schemaLocation : "http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd" , write : function ( a ) { a = this . writeNode ( "wcs:GetCoverage" ,
a ) ; this . setAttributeNS ( a , this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ a ] ) } , writers : { wcs : { GetCoverage : function ( a ) { var b = this . createElementNSPlus ( "wcs:GetCoverage" , { attributes : { version : a . version || this . VERSION , service : "WCS" } } ) ; this . writeNode ( "ows:Identifier" , a . identifier , b ) ; this . writeNode ( "wcs:DomainSubset" , a . domainSubset , b ) ; this . writeNode ( "wcs:Output" , a . output , b ) ; return b } , DomainSubset : function ( a ) { var b = this . createElementNSPlus ( "wcs:DomainSubset" ,
{ } ) ; this . writeNode ( "ows:BoundingBox" , a . boundingBox , b ) ; a . temporalSubset && this . writeNode ( "wcs:TemporalSubset" , a . temporalSubset , b ) ; return b } , TemporalSubset : function ( a ) { for ( var b = this . createElementNSPlus ( "wcs:TemporalSubset" , { } ) , c = 0 , d = a . timePeriods . length ; c < d ; ++ c ) this . writeNode ( "wcs:TimePeriod" , a . timePeriods [ c ] , b ) ; return b } , TimePeriod : function ( a ) { var b = this . createElementNSPlus ( "wcs:TimePeriod" , { } ) ; this . writeNode ( "wcs:BeginPosition" , a . begin , b ) ; this . writeNode ( "wcs:EndPosition" , a . end , b ) ; a . resolution && this . writeNode ( "wcs:TimeResolution" ,
a . resolution , b ) ; return b } , BeginPosition : function ( a ) { return this . createElementNSPlus ( "wcs:BeginPosition" , { value : a } ) } , EndPosition : function ( a ) { return this . createElementNSPlus ( "wcs:EndPosition" , { value : a } ) } , TimeResolution : function ( a ) { return this . createElementNSPlus ( "wcs:TimeResolution" , { value : a } ) } , Output : function ( a ) { var b = this . createElementNSPlus ( "wcs:Output" , { attributes : { format : a . format , store : a . store } } ) ; a . gridCRS && this . writeNode ( "wcs:GridCRS" , a . gridCRS , b ) ; return b } , GridCRS : function ( a ) { var b = this . createElementNSPlus ( "wcs:GridCRS" ,
{ } ) ; this . writeNode ( "wcs:GridBaseCRS" , a . baseCRS , b ) ; a . type && this . writeNode ( "wcs:GridType" , a . type , b ) ; a . origin && this . writeNode ( "wcs:GridOrigin" , a . origin , b ) ; this . writeNode ( "wcs:GridOffsets" , a . offsets , b ) ; a . CS && this . writeNode ( "wcs:GridCS" , a . CS , b ) ; return b } , GridBaseCRS : function ( a ) { return this . createElementNSPlus ( "wcs:GridBaseCRS" , { value : a } ) } , GridOrigin : function ( a ) { return this . createElementNSPlus ( "wcs:GridOrigin" , { value : a } ) } , GridType : function ( a ) { return this . createElementNSPlus ( "wcs:GridType" , { value : a } ) } , GridOffsets : function ( a ) { return this . createElementNSPlus ( "wcs:GridOffsets" ,
{ value : a } ) } , GridCS : function ( a ) { return this . createElementNSPlus ( "wcs:GridCS" , { value : a } ) } } , ows : OpenLayers . Format . OWSCommon . v1 _1 _0 . prototype . writers . ows } , CLASS _NAME : "OpenLayers.Format.WCSGetCoverage" } ) ; OpenLayers . Format . WPSExecute = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ows : "http://www.opengis.net/ows/1.1" , gml : "http://www.opengis.net/gml" , wps : "http://www.opengis.net/wps/1.0.0" , wfs : "http://www.opengis.net/wfs" , ogc : "http://www.opengis.net/ogc" , wcs : "http://www.opengis.net/wcs" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , VERSION : "1.0.0" , schemaLocation : "http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd" ,
schemaLocationAttr : function ( ) { } , write : function ( a ) { var b ; window . ActiveXObject ? this . xmldom = b = new ActiveXObject ( "Microsoft.XMLDOM" ) : b = document . implementation . createDocument ( "" , "" , null ) ; a = this . writeNode ( "wps:Execute" , a , b ) ; this . setAttributeNS ( a , this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ a ] ) } , writers : { wps : { Execute : function ( a ) { var b = this . createElementNSPlus ( "wps:Execute" , { attributes : { version : this . VERSION , service : "WPS" } } ) ; this . writeNode ( "ows:Identifier" ,
a . identifier , b ) ; this . writeNode ( "wps:DataInputs" , a . dataInputs , b ) ; this . writeNode ( "wps:ResponseForm" , a . responseForm , b ) ; return b } , ResponseForm : function ( a ) { var b = this . createElementNSPlus ( "wps:ResponseForm" , { } ) ; a . rawDataOutput && this . writeNode ( "wps:RawDataOutput" , a . rawDataOutput , b ) ; a . responseDocument && this . writeNode ( "wps:ResponseDocument" , a . responseDocument , b ) ; return b } , ResponseDocument : function ( a ) { var b = this . createElementNSPlus ( "wps:ResponseDocument" , { attributes : { storeExecuteResponse : a . storeExecuteResponse ,
lineage : a . lineage , status : a . status } } ) ; a . output && this . writeNode ( "wps:Output" , a . output , b ) ; return b } , Output : function ( a ) { var b = this . createElementNSPlus ( "wps:Output" , { attributes : { asReference : a . asReference } } ) ; this . writeNode ( "ows:Identifier" , a . identifier , b ) ; this . writeNode ( "ows:Title" , a . title , b ) ; this . writeNode ( "ows:Abstract" , a [ "abstract" ] , b ) ; return b } , RawDataOutput : function ( a ) { var b = this . createElementNSPlus ( "wps:RawDataOutput" , { attributes : { mimeType : a . mimeType } } ) ; this . writeNode ( "ows:Identifier" , a . identifier ,
b ) ; return b } , DataInputs : function ( a ) { for ( var b = this . createElementNSPlus ( "wps:DataInputs" , { } ) , c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "wps:Input" , a [ c ] , b ) ; return b } , Input : function ( a ) { var b = this . createElementNSPlus ( "wps:Input" , { } ) ; this . writeNode ( "ows:Identifier" , a . identifier , b ) ; a . title && this . writeNode ( "ows:Title" , a . title , b ) ; a . data && this . writeNode ( "wps:Data" , a . data , b ) ; a . reference && this . writeNode ( "wps:Reference" , a . reference , b ) ; return b } , Data : function ( a ) { var b = this . createElementNSPlus ( "wps:Data" , { } ) ; a . literalData ?
this . writeNode ( "wps:LiteralData" , a . literalData , b ) : a . complexData && this . writeNode ( "wps:ComplexData" , a . complexData , b ) ; return b } , LiteralData : function ( a ) { return this . createElementNSPlus ( "wps:LiteralData" , { attributes : { uom : a . uom } , value : a . value } ) } , ComplexData : function ( a ) { var b = this . createElementNSPlus ( "wps:ComplexData" , { attributes : { mimeType : a . mimeType , encoding : a . encoding , schema : a . schema } } ) , c = a . value ; "string" === typeof c ? b . appendChild ( this . getXMLDoc ( ) . createCDATASection ( a . value ) ) : b . appendChild ( c ) ; return b } ,
Reference : function ( a ) { var b = this . createElementNSPlus ( "wps:Reference" , { attributes : { mimeType : a . mimeType , "xlink:href" : a . href , method : a . method , encoding : a . encoding , schema : a . schema } } ) ; a . body && this . writeNode ( "wps:Body" , a . body , b ) ; return b } , Body : function ( a ) { var b = this . createElementNSPlus ( "wps:Body" , { } ) ; a . wcs ? this . writeNode ( "wcs:GetCoverage" , a . wcs , b ) : a . wfs ? ( this . featureType = a . wfs . featureType , this . version = a . wfs . version , this . writeNode ( "wfs:GetFeature" , a . wfs , b ) ) : this . writeNode ( "wps:Execute" , a , b ) ; return b } } , wcs : OpenLayers . Format . WCSGetCoverage . prototype . writers . wcs ,
wfs : OpenLayers . Format . WFST . v1 _1 _0 . prototype . writers . wfs , ogc : OpenLayers . Format . Filter . v1 _1 _0 . prototype . writers . ogc , ows : OpenLayers . Format . OWSCommon . v1 _1 _0 . prototype . writers . ows } , CLASS _NAME : "OpenLayers.Format.WPSExecute" } ) ; OpenLayers . Control . PanZoom = OpenLayers . Class ( OpenLayers . Control , { slideFactor : 50 , slideRatio : null , buttons : null , position : null , initialize : function ( a ) { this . position = new OpenLayers . Pixel ( OpenLayers . Control . PanZoom . X , OpenLayers . Control . PanZoom . Y ) ; OpenLayers . Control . prototype . initialize . apply ( this , arguments ) } , destroy : function ( ) { this . map && this . map . events . unregister ( "buttonclick" , this , this . onButtonClick ) ; this . removeButtons ( ) ; this . position = this . buttons = null ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } ,
setMap : function ( a ) { OpenLayers . Control . prototype . setMap . apply ( this , arguments ) ; this . map . events . register ( "buttonclick" , this , this . onButtonClick ) } , draw : function ( a ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; a = this . position ; this . buttons = [ ] ; var b = { w : 18 , h : 18 } , c = new OpenLayers . Pixel ( a . x + b . w / 2 , a . y ) ; this . _addButton ( "panup" , "north-mini.png" , c , b ) ; a . y = c . y + b . h ; this . _addButton ( "panleft" , "west-mini.png" , a , b ) ; this . _addButton ( "panright" , "east-mini.png" , a . add ( b . w , 0 ) , b ) ; this . _addButton ( "pandown" , "south-mini.png" ,
c . add ( 0 , 2 * b . h ) , b ) ; this . _addButton ( "zoomin" , "zoom-plus-mini.png" , c . add ( 0 , 3 * b . h + 5 ) , b ) ; this . _addButton ( "zoomworld" , "zoom-world-mini.png" , c . add ( 0 , 4 * b . h + 5 ) , b ) ; this . _addButton ( "zoomout" , "zoom-minus-mini.png" , c . add ( 0 , 5 * b . h + 5 ) , b ) ; return this . div } , _addButton : function ( a , b , c , d ) { b = OpenLayers . Util . getImageLocation ( b ) ; c = OpenLayers . Util . createAlphaImageDiv ( this . id + "_" + a , c , d , b , "absolute" ) ; c . style . cursor = "pointer" ; this . div . appendChild ( c ) ; c . action = a ; c . className = "olButton" ; this . buttons . push ( c ) ; return c } , _removeButton : function ( a ) { this . div . removeChild ( a ) ;
OpenLayers . Util . removeItem ( this . buttons , a ) } , removeButtons : function ( ) { for ( var a = this . buttons . length - 1 ; 0 <= a ; -- a ) this . _removeButton ( this . buttons [ a ] ) } , onButtonClick : function ( a ) { switch ( a . buttonElement . action ) { case "panup" : this . map . pan ( 0 , - this . getSlideFactor ( "h" ) ) ; break ; case "pandown" : this . map . pan ( 0 , this . getSlideFactor ( "h" ) ) ; break ; case "panleft" : this . map . pan ( - this . getSlideFactor ( "w" ) , 0 ) ; break ; case "panright" : this . map . pan ( this . getSlideFactor ( "w" ) , 0 ) ; break ; case "zoomin" : this . map . zoomIn ( ) ; break ; case "zoomout" : this . map . zoomOut ( ) ;
break ; case "zoomworld" : this . map . zoomToMaxExtent ( ) } } , getSlideFactor : function ( a ) { return this . slideRatio ? this . map . getSize ( ) [ a ] * this . slideRatio : this . slideFactor } , CLASS _NAME : "OpenLayers.Control.PanZoom" } ) ; OpenLayers . Control . PanZoom . X = 4 ; OpenLayers . Control . PanZoom . Y = 4 ; OpenLayers . Control . PanZoomBar = OpenLayers . Class ( OpenLayers . Control . PanZoom , { zoomStopWidth : 18 , zoomStopHeight : 11 , slider : null , sliderEvents : null , zoombarDiv : null , zoomWorldIcon : ! 1 , panIcons : ! 0 , forceFixedZoomLevel : ! 1 , mouseDragStart : null , deltaY : null , zoomStart : null , destroy : function ( ) { this . _removeZoomBar ( ) ; this . map . events . un ( { changebaselayer : this . redraw , scope : this } ) ; OpenLayers . Control . PanZoom . prototype . destroy . apply ( this , arguments ) ; delete this . mouseDragStart ; delete this . zoomStart } , setMap : function ( a ) { OpenLayers . Control . PanZoom . prototype . setMap . apply ( this ,
arguments ) ; this . map . events . register ( "changebaselayer" , this , this . redraw ) } , redraw : function ( ) { null != this . div && ( this . removeButtons ( ) , this . _removeZoomBar ( ) ) ; this . draw ( ) } , draw : function ( a ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; a = this . position . clone ( ) ; this . buttons = [ ] ; var b = { w : 18 , h : 18 } ; if ( this . panIcons ) { var c = new OpenLayers . Pixel ( a . x + b . w / 2 , a . y ) , d = b . w ; this . zoomWorldIcon && ( c = new OpenLayers . Pixel ( a . x + b . w , a . y ) ) ; this . _addButton ( "panup" , "north-mini.png" , c , b ) ; a . y = c . y + b . h ; this . _addButton ( "panleft" ,
"west-mini.png" , a , b ) ; this . zoomWorldIcon && ( this . _addButton ( "zoomworld" , "zoom-world-mini.png" , a . add ( b . w , 0 ) , b ) , d *= 2 ) ; this . _addButton ( "panright" , "east-mini.png" , a . add ( d , 0 ) , b ) ; this . _addButton ( "pandown" , "south-mini.png" , c . add ( 0 , 2 * b . h ) , b ) ; this . _addButton ( "zoomin" , "zoom-plus-mini.png" , c . add ( 0 , 3 * b . h + 5 ) , b ) ; c = this . _addZoomBar ( c . add ( 0 , 4 * b . h + 5 ) ) ; this . _addButton ( "zoomout" , "zoom-minus-mini.png" , c , b ) } else this . _addButton ( "zoomin" , "zoom-plus-mini.png" , a , b ) , c = this . _addZoomBar ( a . add ( 0 , b . h ) ) , this . _addButton ( "zoomout" ,
"zoom-minus-mini.png" , c , b ) , this . zoomWorldIcon && ( c = c . add ( 0 , b . h + 3 ) , this . _addButton ( "zoomworld" , "zoom-world-mini.png" , c , b ) ) ; return this . div } , _addZoomBar : function ( a ) { var b = OpenLayers . Util . getImageLocation ( "slider.png" ) , c = this . id + "_" + this . map . id , d = this . map . getNumZoomLevels ( ) - 1 - this . map . getZoom ( ) , d = OpenLayers . Util . createAlphaImageDiv ( c , a . add ( - 1 , d * this . zoomStopHeight ) , { w : 20 , h : 9 } , b , "absolute" ) ; d . style . cursor = "move" ; this . slider = d ; this . sliderEvents = new OpenLayers . Events ( this , d , null , ! 0 , { includeXY : ! 0 } ) ; this . sliderEvents . on ( { touchstart : this . zoomBarDown ,
touchmove : this . zoomBarDrag , touchend : this . zoomBarUp , mousedown : this . zoomBarDown , mousemove : this . zoomBarDrag , mouseup : this . zoomBarUp } ) ; var e = { w : this . zoomStopWidth , h : this . zoomStopHeight * this . map . getNumZoomLevels ( ) } , b = OpenLayers . Util . getImageLocation ( "zoombar.png" ) , c = null ; OpenLayers . Util . alphaHack ( ) ? ( c = this . id + "_" + this . map . id , c = OpenLayers . Util . createAlphaImageDiv ( c , a , { w : e . w , h : this . zoomStopHeight } , b , "absolute" , null , "crop" ) , c . style . height = e . h + "px" ) : c = OpenLayers . Util . createDiv ( "OpenLayers_Control_PanZoomBar_Zoombar" +
this . map . id , a , e , b ) ; c . style . cursor = "pointer" ; c . className = "olButton" ; this . zoombarDiv = c ; this . div . appendChild ( c ) ; this . startTop = parseInt ( c . style . top ) ; this . div . appendChild ( d ) ; this . map . events . register ( "zoomend" , this , this . moveZoomBar ) ; return a = a . add ( 0 , this . zoomStopHeight * this . map . getNumZoomLevels ( ) ) } , _removeZoomBar : function ( ) { this . sliderEvents . un ( { touchstart : this . zoomBarDown , touchmove : this . zoomBarDrag , touchend : this . zoomBarUp , mousedown : this . zoomBarDown , mousemove : this . zoomBarDrag , mouseup : this . zoomBarUp } ) ; this . sliderEvents . destroy ( ) ;
this . div . removeChild ( this . zoombarDiv ) ; this . zoombarDiv = null ; this . div . removeChild ( this . slider ) ; this . slider = null ; this . map . events . unregister ( "zoomend" , this , this . moveZoomBar ) } , onButtonClick : function ( a ) { OpenLayers . Control . PanZoom . prototype . onButtonClick . apply ( this , arguments ) ; if ( a . buttonElement === this . zoombarDiv ) { var b = a . buttonXY . y / this . zoomStopHeight ; if ( this . forceFixedZoomLevel || ! this . map . fractionalZoom ) b = Math . floor ( b ) ; b = this . map . getNumZoomLevels ( ) - 1 - b ; b = Math . min ( Math . max ( b , 0 ) , this . map . getNumZoomLevels ( ) -
1 ) ; this . map . zoomTo ( b ) } } , passEventToSlider : function ( a ) { this . sliderEvents . handleBrowserEvent ( a ) } , zoomBarDown : function ( a ) { if ( OpenLayers . Event . isLeftClick ( a ) || OpenLayers . Event . isSingleTouch ( a ) ) this . map . events . on ( { touchmove : this . passEventToSlider , mousemove : this . passEventToSlider , mouseup : this . passEventToSlider , scope : this } ) , this . mouseDragStart = a . xy . clone ( ) , this . zoomStart = a . xy . clone ( ) , this . div . style . cursor = "move" , this . zoombarDiv . offsets = null , OpenLayers . Event . stop ( a ) } , zoomBarDrag : function ( a ) { if ( null != this . mouseDragStart ) { var b =
this . mouseDragStart . y - a . xy . y , c = OpenLayers . Util . pagePosition ( this . zoombarDiv ) ; 0 < a . clientY - c [ 1 ] && a . clientY - c [ 1 ] < parseInt ( this . zoombarDiv . style . height ) - 2 && ( this . slider . style . top = parseInt ( this . slider . style . top ) - b + "px" , this . mouseDragStart = a . xy . clone ( ) ) ; this . deltaY = this . zoomStart . y - a . xy . y ; OpenLayers . Event . stop ( a ) } } , zoomBarUp : function ( a ) { if ( ( OpenLayers . Event . isLeftClick ( a ) || "touchend" === a . type ) && this . mouseDragStart ) { this . div . style . cursor = "" ; this . map . events . un ( { touchmove : this . passEventToSlider , mouseup : this . passEventToSlider ,
mousemove : this . passEventToSlider , scope : this } ) ; var b = this . map . zoom ; ! this . forceFixedZoomLevel && this . map . fractionalZoom ? ( b += this . deltaY / this . zoomStopHeight , b = Math . min ( Math . max ( b , 0 ) , this . map . getNumZoomLevels ( ) - 1 ) ) : ( b += this . deltaY / this . zoomStopHeight , b = Math . max ( Math . round ( b ) , 0 ) ) ; this . map . zoomTo ( b ) ; this . zoomStart = this . mouseDragStart = null ; this . deltaY = 0 ; OpenLayers . Event . stop ( a ) } } , moveZoomBar : function ( ) { this . slider . style . top = ( this . map . getNumZoomLevels ( ) - 1 - this . map . getZoom ( ) ) * this . zoomStopHeight + this . startTop +
1 + "px" } , CLASS _NAME : "OpenLayers.Control.PanZoomBar" } ) ; OpenLayers . Format . WFSCapabilities = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.1.0" , errorProperty : "service" , CLASS _NAME : "OpenLayers.Format.WFSCapabilities" } ) ; OpenLayers . Format . WFSCapabilities . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { wfs : "http://www.opengis.net/wfs" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" , ows : "http://www.opengis.net/ows" } , defaultPrefix : "wfs" , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; return b } , readers : { wfs : { WFS _Capabilities : function ( a , b ) { this . readChildNodes ( a , b ) } ,
FeatureTypeList : function ( a , b ) { b . featureTypeList = { featureTypes : [ ] } ; this . readChildNodes ( a , b . featureTypeList ) } , FeatureType : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . featureTypes . push ( c ) } , Name : function ( a , b ) { var c = this . getChildValue ( a ) ; c && ( c = c . split ( ":" ) , b . name = c . pop ( ) , 0 < c . length && ( b . featureNS = this . lookupNamespaceURI ( a , c [ 0 ] ) ) ) } , Title : function ( a , b ) { var c = this . getChildValue ( a ) ; c && ( b . title = c ) } , Abstract : function ( a , b ) { var c = this . getChildValue ( a ) ; c && ( b [ "abstract" ] = c ) } } } , CLASS _NAME : "OpenLayers.Format.WFSCapabilities.v1" } ) ; OpenLayers . Format . WFSCapabilities . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . WFSCapabilities . v1 , { regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , readers : { wfs : OpenLayers . Util . applyDefaults ( { DefaultSRS : function ( a , b ) { var c = this . getChildValue ( a ) ; c && ( b . srs = c ) } } , OpenLayers . Format . WFSCapabilities . v1 . prototype . readers . wfs ) , ows : OpenLayers . Format . OWSCommon . v1 . prototype . readers . ows } , CLASS _NAME : "OpenLayers.Format.WFSCapabilities.v1_1_0" } ) ; OpenLayers . Layer . Image = OpenLayers . Class ( OpenLayers . Layer , { isBaseLayer : ! 0 , url : null , extent : null , size : null , tile : null , aspectRatio : null , initialize : function ( a , b , c , d , e ) { this . url = b ; this . maxExtent = this . extent = c ; this . size = d ; OpenLayers . Layer . prototype . initialize . apply ( this , [ a , e ] ) ; this . aspectRatio = this . extent . getHeight ( ) / this . size . h / ( this . extent . getWidth ( ) / this . size . w ) } , destroy : function ( ) { this . tile && ( this . removeTileMonitoringHooks ( this . tile ) , this . tile . destroy ( ) , this . tile = null ) ; OpenLayers . Layer . prototype . destroy . apply ( this ,
arguments ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . Image ( this . name , this . url , this . extent , this . size , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . prototype . clone . apply ( this , [ a ] ) } , setMap : function ( a ) { null == this . options . maxResolution && ( this . options . maxResolution = this . aspectRatio * this . extent . getWidth ( ) / this . size . w ) ; OpenLayers . Layer . prototype . setMap . apply ( this , arguments ) } , moveTo : function ( a , b , c ) { OpenLayers . Layer . prototype . moveTo . apply ( this , arguments ) ; var d = null == this . tile ; if ( b || d ) { this . setTileSize ( ) ;
var e = this . map . getLayerPxFromLonLat ( { lon : this . extent . left , lat : this . extent . top } ) ; d ? ( this . tile = new OpenLayers . Tile . Image ( this , e , this . extent , null , this . tileSize ) , this . addTileMonitoringHooks ( this . tile ) ) : ( this . tile . size = this . tileSize . clone ( ) , this . tile . position = e . clone ( ) ) ; this . tile . draw ( ) } } , setTileSize : function ( ) { var a = this . extent . getWidth ( ) / this . map . getResolution ( ) , b = this . extent . getHeight ( ) / this . map . getResolution ( ) ; this . tileSize = new OpenLayers . Size ( a , b ) } , addTileMonitoringHooks : function ( a ) { a . onLoadStart =
function ( ) { this . events . triggerEvent ( "loadstart" ) } ; a . events . register ( "loadstart" , this , a . onLoadStart ) ; a . onLoadEnd = function ( ) { this . events . triggerEvent ( "loadend" ) } ; a . events . register ( "loadend" , this , a . onLoadEnd ) ; a . events . register ( "unload" , this , a . onLoadEnd ) } , removeTileMonitoringHooks : function ( a ) { a . unload ( ) ; a . events . un ( { loadstart : a . onLoadStart , loadend : a . onLoadEnd , unload : a . onLoadEnd , scope : this } ) } , setUrl : function ( a ) { this . url = a ; this . tile . draw ( ) } , getURL : function ( ) { return this . url } , CLASS _NAME : "OpenLayers.Layer.Image" } ) ; OpenLayers . Strategy = OpenLayers . Class ( { layer : null , options : null , active : null , autoActivate : ! 0 , autoDestroy : ! 0 , initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) ; this . options = a ; this . active = ! 1 } , destroy : function ( ) { this . deactivate ( ) ; this . options = this . layer = null } , setLayer : function ( a ) { this . layer = a } , activate : function ( ) { return ! this . active ? this . active = ! 0 : ! 1 } , deactivate : function ( ) { return this . active ? ( this . active = ! 1 , ! 0 ) : ! 1 } , CLASS _NAME : "OpenLayers.Strategy" } ) ; OpenLayers . Strategy . Save = OpenLayers . Class ( OpenLayers . Strategy , { events : null , auto : ! 1 , timer : null , initialize : function ( a ) { OpenLayers . Strategy . prototype . initialize . apply ( this , [ a ] ) ; this . events = new OpenLayers . Events ( this ) } , activate : function ( ) { var a = OpenLayers . Strategy . prototype . activate . call ( this ) ; if ( a && this . auto ) if ( "number" === typeof this . auto ) this . timer = window . setInterval ( OpenLayers . Function . bind ( this . save , this ) , 1E3 * this . auto ) ; else this . layer . events . on ( { featureadded : this . triggerSave , afterfeaturemodified : this . triggerSave ,
scope : this } ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Strategy . prototype . deactivate . call ( this ) ; a && this . auto && ( "number" === typeof this . auto ? window . clearInterval ( this . timer ) : this . layer . events . un ( { featureadded : this . triggerSave , afterfeaturemodified : this . triggerSave , scope : this } ) ) ; return a } , triggerSave : function ( a ) { var b = a . feature ; ( b . state === OpenLayers . State . INSERT || b . state === OpenLayers . State . UPDATE || b . state === OpenLayers . State . DELETE ) && this . save ( [ a . feature ] ) } , save : function ( a ) { a || ( a = this . layer . features ) ;
this . events . triggerEvent ( "start" , { features : a } ) ; var b = this . layer . projection , c = this . layer . map . getProjectionObject ( ) ; if ( ! c . equals ( b ) ) { for ( var d = a . length , e = Array ( d ) , f , g , h = 0 ; h < d ; ++ h ) f = a [ h ] , g = f . clone ( ) , g . fid = f . fid , g . state = f . state , f . url && ( g . url = f . url ) , g . _original = f , g . geometry . transform ( c , b ) , e [ h ] = g ; a = e } this . layer . protocol . commit ( a , { callback : this . onCommit , scope : this } ) } , onCommit : function ( a ) { var b = { response : a } ; if ( a . success ( ) ) { for ( var c = a . reqFeatures , d , e = [ ] , f = a . insertIds || [ ] , g = 0 , h = 0 , i = c . length ; h < i ; ++ h ) if ( d = c [ h ] ,
d = d . _original || d , a = d . state ) a == OpenLayers . State . DELETE ? e . push ( d ) : a == OpenLayers . State . INSERT && ( d . fid = f [ g ] , ++ g ) , d . state = null ; 0 < e . length && this . layer . destroyFeatures ( e ) ; this . events . triggerEvent ( "success" , b ) } else this . events . triggerEvent ( "fail" , b ) } , CLASS _NAME : "OpenLayers.Strategy.Save" } ) ; OpenLayers . Format . GPX = OpenLayers . Class ( OpenLayers . Format . XML , { defaultDesc : "No description available" , extractWaypoints : ! 0 , extractTracks : ! 0 , extractRoutes : ! 0 , extractAttributes : ! 0 , namespaces : { gpx : "http://www.topografix.com/GPX/1/1" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , schemaLocation : "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" , creator : "OpenLayers" , initialize : function ( a ) { this . externalProjection = new OpenLayers . Projection ( "EPSG:4326" ) ; OpenLayers . Format . XML . prototype . initialize . apply ( this ,
[ a ] ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var b = [ ] ; if ( this . extractTracks ) for ( var c = a . getElementsByTagName ( "trk" ) , d = 0 , e = c . length ; d < e ; d ++ ) { var f = { } ; this . extractAttributes && ( f = this . parseAttributes ( c [ d ] ) ) ; for ( var g = this . getElementsByTagNameNS ( c [ d ] , c [ d ] . namespaceURI , "trkseg" ) , h = 0 , i = g . length ; h < i ; h ++ ) { var j = this . extractSegment ( g [ h ] , "trkpt" ) ; b . push ( new OpenLayers . Feature . Vector ( j , f ) ) } } if ( this . extractRoutes ) { e = a . getElementsByTagName ( "rte" ) ; c = 0 ; for ( d =
e . length ; c < d ; c ++ ) f = { } , this . extractAttributes && ( f = this . parseAttributes ( e [ c ] ) ) , g = this . extractSegment ( e [ c ] , "rtept" ) , b . push ( new OpenLayers . Feature . Vector ( g , f ) ) } if ( this . extractWaypoints ) { a = a . getElementsByTagName ( "wpt" ) ; c = 0 ; for ( e = a . length ; c < e ; c ++ ) f = { } , this . extractAttributes && ( f = this . parseAttributes ( a [ c ] ) ) , d = new OpenLayers . Geometry . Point ( a [ c ] . getAttribute ( "lon" ) , a [ c ] . getAttribute ( "lat" ) ) , b . push ( new OpenLayers . Feature . Vector ( d , f ) ) } if ( this . internalProjection && this . externalProjection ) { f = 0 ; for ( a = b . length ; f <
a ; f ++ ) b [ f ] . geometry . transform ( this . externalProjection , this . internalProjection ) } return b } , extractSegment : function ( a , b ) { for ( var c = this . getElementsByTagNameNS ( a , a . namespaceURI , b ) , d = [ ] , e = 0 , f = c . length ; e < f ; e ++ ) d . push ( new OpenLayers . Geometry . Point ( c [ e ] . getAttribute ( "lon" ) , c [ e ] . getAttribute ( "lat" ) ) ) ; return new OpenLayers . Geometry . LineString ( d ) } , parseAttributes : function ( a ) { for ( var b = { } , a = a . firstChild , c , d ; a ; ) { if ( 1 == a . nodeType && a . firstChild && ( c = a . firstChild , 3 == c . nodeType || 4 == c . nodeType ) ) d = a . prefix ? a . nodeName . split ( ":" ) [ 1 ] :
a . nodeName , "trkseg" != d && "rtept" != d && ( b [ d ] = c . nodeValue ) ; a = a . nextSibling } return b } , write : function ( a , b ) { var a = OpenLayers . Util . isArray ( a ) ? a : [ a ] , c = this . createElementNS ( this . namespaces . gpx , "gpx" ) ; c . setAttribute ( "version" , "1.1" ) ; c . setAttribute ( "creator" , this . creator ) ; this . setAttributes ( c , { "xsi:schemaLocation" : this . schemaLocation } ) ; b && "object" == typeof b && c . appendChild ( this . buildMetadataNode ( b ) ) ; for ( var d = 0 , e = a . length ; d < e ; d ++ ) c . appendChild ( this . buildFeatureNode ( a [ d ] ) ) ; return OpenLayers . Format . XML . prototype . write . apply ( this ,
[ c ] ) } , buildMetadataNode : function ( a ) { for ( var b = [ "name" , "desc" , "author" ] , c = this . createElementNSPlus ( "gpx:metadata" ) , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( a [ e ] ) { var f = this . createElementNSPlus ( "gpx:" + e ) ; f . appendChild ( this . createTextNode ( a [ e ] ) ) ; c . appendChild ( f ) } } return c } , buildFeatureNode : function ( a ) { var b = a . geometry , b = b . clone ( ) ; this . internalProjection && this . externalProjection && b . transform ( this . internalProjection , this . externalProjection ) ; if ( "OpenLayers.Geometry.Point" == b . CLASS _NAME ) { var c = this . buildWptNode ( b ) ;
this . appendAttributesNode ( c , a ) ; return c } c = this . createElementNSPlus ( "gpx:trk" ) ; this . appendAttributesNode ( c , a ) ; for ( var a = this . buildTrkSegNode ( b ) , a = OpenLayers . Util . isArray ( a ) ? a : [ a ] , b = 0 , d = a . length ; b < d ; b ++ ) c . appendChild ( a [ b ] ) ; return c } , buildTrkSegNode : function ( a ) { var b , c , d , e ; if ( "OpenLayers.Geometry.LineString" == a . CLASS _NAME || "OpenLayers.Geometry.LinearRing" == a . CLASS _NAME ) { b = this . createElementNSPlus ( "gpx:trkseg" ) ; c = 0 ; for ( d = a . components . length ; c < d ; c ++ ) e = a . components [ c ] , b . appendChild ( this . buildTrkPtNode ( e ) ) ;
return b } b = [ ] ; c = 0 ; for ( d = a . components . length ; c < d ; c ++ ) b . push ( this . buildTrkSegNode ( a . components [ c ] ) ) ; return b } , buildTrkPtNode : function ( a ) { var b = this . createElementNSPlus ( "gpx:trkpt" ) ; b . setAttribute ( "lon" , a . x ) ; b . setAttribute ( "lat" , a . y ) ; return b } , buildWptNode : function ( a ) { var b = this . createElementNSPlus ( "gpx:wpt" ) ; b . setAttribute ( "lon" , a . x ) ; b . setAttribute ( "lat" , a . y ) ; return b } , appendAttributesNode : function ( a , b ) { var c = this . createElementNSPlus ( "gpx:name" ) ; c . appendChild ( this . createTextNode ( b . attributes . name ||
b . id ) ) ; a . appendChild ( c ) ; c = this . createElementNSPlus ( "gpx:desc" ) ; c . appendChild ( this . createTextNode ( b . attributes . description || this . defaultDesc ) ) ; a . appendChild ( c ) } , CLASS _NAME : "OpenLayers.Format.GPX" } ) ; OpenLayers . Format . WMSDescribeLayer = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.1.1" , getVersion : function ( a , b ) { var c = OpenLayers . Format . XML . VersionedOGC . prototype . getVersion . apply ( this , arguments ) ; if ( "1.1.1" == c || "1.1.0" == c ) c = "1.1" ; return c } , CLASS _NAME : "OpenLayers.Format.WMSDescribeLayer" } ) ; OpenLayers . Format . WMSDescribeLayer . v1 _1 = OpenLayers . Class ( OpenLayers . Format . WMSDescribeLayer , { initialize : function ( a ) { OpenLayers . Format . WMSDescribeLayer . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; for ( var a = a . documentElement . childNodes , b = [ ] , c , d , e = 0 ; e < a . length ; ++ e ) if ( c = a [ e ] , d = c . nodeName , "LayerDescription" == d ) { d = c . getAttribute ( "name" ) ; var f = "" , g = "" , h = "" ; c . getAttribute ( "owsType" ) ? ( f = c . getAttribute ( "owsType" ) , g = c . getAttribute ( "owsURL" ) ) :
"" != c . getAttribute ( "wfs" ) ? ( f = "WFS" , g = c . getAttribute ( "wfs" ) ) : "" != c . getAttribute ( "wcs" ) && ( f = "WCS" , g = c . getAttribute ( "wcs" ) ) ; c = c . getElementsByTagName ( "Query" ) ; 0 < c . length && ( ( h = c [ 0 ] . getAttribute ( "typeName" ) ) || ( h = c [ 0 ] . getAttribute ( "typename" ) ) ) ; b . push ( { layerName : d , owsType : f , owsURL : g , typeName : h } ) } return b } , CLASS _NAME : "OpenLayers.Format.WMSDescribeLayer.v1_1" } ) ; OpenLayers . Layer . XYZ = OpenLayers . Class ( OpenLayers . Layer . Grid , { isBaseLayer : ! 0 , sphericalMercator : ! 1 , zoomOffset : 0 , serverResolutions : null , initialize : function ( a , b , c ) { if ( c && c . sphericalMercator || this . sphericalMercator ) c = OpenLayers . Util . extend ( { projection : "EPSG:900913" , numZoomLevels : 19 } , c ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , [ a || this . name , b || this . url , { } , c ] ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . XYZ ( this . name , this . url , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this ,
[ a ] ) } , getURL : function ( a ) { var a = this . getXYZ ( a ) , b = this . url ; OpenLayers . Util . isArray ( b ) && ( b = this . selectUrl ( "" + a . x + a . y + a . z , b ) ) ; return OpenLayers . String . format ( b , a ) } , getXYZ : function ( a ) { var b = this . getServerResolution ( ) , c = Math . round ( ( a . left - this . maxExtent . left ) / ( b * this . tileSize . w ) ) , a = Math . round ( ( this . maxExtent . top - a . top ) / ( b * this . tileSize . h ) ) , b = this . getServerZoom ( ) ; if ( this . wrapDateLine ) var d = Math . pow ( 2 , b ) , c = ( c % d + d ) % d ; return { x : c , y : a , z : b } } , setMap : function ( a ) { OpenLayers . Layer . Grid . prototype . setMap . apply ( this ,
arguments ) ; this . tileOrigin || ( this . tileOrigin = new OpenLayers . LonLat ( this . maxExtent . left , this . maxExtent . bottom ) ) } , CLASS _NAME : "OpenLayers.Layer.XYZ" } ) ; OpenLayers . Layer . OSM = OpenLayers . Class ( OpenLayers . Layer . XYZ , { name : "OpenStreetMap" , url : [ "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png" , "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png" , "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png" ] , attribution : "Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>" , sphericalMercator : ! 0 , wrapDateLine : ! 0 , tileOptions : null , initialize : function ( a , b , c ) { OpenLayers . Layer . XYZ . prototype . initialize . apply ( this , arguments ) ; this . tileOptions = OpenLayers . Util . extend ( { crossOriginKeyword : "anonymous" } ,
this . options && this . options . tileOptions ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . OSM ( this . name , this . url , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . XYZ . prototype . clone . apply ( this , [ a ] ) } , CLASS _NAME : "OpenLayers.Layer.OSM" } ) ; OpenLayers . Renderer = OpenLayers . Class ( { container : null , root : null , extent : null , locked : ! 1 , size : null , resolution : null , map : null , featureDx : 0 , initialize : function ( a , b ) { this . container = OpenLayers . Util . getElement ( a ) ; OpenLayers . Util . extend ( this , b ) } , destroy : function ( ) { this . map = this . resolution = this . size = this . extent = this . container = null } , supported : function ( ) { return ! 1 } , setExtent : function ( a , b ) { this . extent = a . clone ( ) ; if ( this . map . baseLayer && this . map . baseLayer . wrapDateLine ) { var c = a . getWidth ( ) / this . map . getExtent ( ) . getWidth ( ) ,
a = a . scale ( 1 / c ) ; this . extent = a . wrapDateLine ( this . map . getMaxExtent ( ) ) . scale ( c ) } b && ( this . resolution = null ) ; return ! 0 } , setSize : function ( a ) { this . size = a . clone ( ) ; this . resolution = null } , getResolution : function ( ) { return this . resolution = this . resolution || this . map . getResolution ( ) } , drawFeature : function ( a , b ) { null == b && ( b = a . style ) ; if ( a . geometry ) { var c = a . geometry . getBounds ( ) ; if ( c ) { var d ; this . map . baseLayer && this . map . baseLayer . wrapDateLine && ( d = this . map . getMaxExtent ( ) ) ; c . intersectsBounds ( this . extent , { worldBounds : d } ) ? this . calculateFeatureDx ( c ,
d ) : b = { display : "none" } ; c = this . drawGeometry ( a . geometry , b , a . id ) ; if ( "none" != b . display && b . label && ! 1 !== c ) { d = a . geometry . getCentroid ( ) ; if ( b . labelXOffset || b . labelYOffset ) { var e = isNaN ( b . labelXOffset ) ? 0 : b . labelXOffset , f = isNaN ( b . labelYOffset ) ? 0 : b . labelYOffset , g = this . getResolution ( ) ; d . move ( e * g , f * g ) } this . drawText ( a . id , b , d ) } else this . removeText ( a . id ) ; return c } } } , calculateFeatureDx : function ( a , b ) { this . featureDx = 0 ; if ( b ) { var c = b . getWidth ( ) ; this . featureDx = Math . round ( ( ( a . left + a . right ) / 2 - ( this . extent . left + this . extent . right ) /
2 ) / c ) * c } } , drawGeometry : function ( ) { } , drawText : function ( ) { } , removeText : function ( ) { } , clear : function ( ) { } , getFeatureIdFromEvent : function ( ) { } , eraseFeatures : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var b = 0 , c = a . length ; b < c ; ++ b ) { var d = a [ b ] ; this . eraseGeometry ( d . geometry , d . id ) ; this . removeText ( d . id ) } } , eraseGeometry : function ( ) { } , moveRoot : function ( ) { } , getRenderLayerId : function ( ) { return this . container . id } , applyDefaultSymbolizer : function ( a ) { var b = OpenLayers . Util . extend ( { } , OpenLayers . Renderer . defaultSymbolizer ) ;
! 1 === a . stroke && ( delete b . strokeWidth , delete b . strokeColor ) ; ! 1 === a . fill && delete b . fillColor ; OpenLayers . Util . extend ( b , a ) ; return b } , CLASS _NAME : "OpenLayers.Renderer" } ) ; OpenLayers . Renderer . defaultSymbolizer = { fillColor : "#000000" , strokeColor : "#000000" , strokeWidth : 2 , fillOpacity : 1 , strokeOpacity : 1 , pointRadius : 0 , labelAlign : "cm" } ;
OpenLayers . Renderer . symbol = { star : [ 350 , 75 , 379 , 161 , 469 , 161 , 397 , 215 , 423 , 301 , 350 , 250 , 277 , 301 , 303 , 215 , 231 , 161 , 321 , 161 , 350 , 75 ] , cross : [ 4 , 0 , 6 , 0 , 6 , 4 , 10 , 4 , 10 , 6 , 6 , 6 , 6 , 10 , 4 , 10 , 4 , 6 , 0 , 6 , 0 , 4 , 4 , 4 , 4 , 0 ] , x : [ 0 , 0 , 25 , 0 , 50 , 35 , 75 , 0 , 100 , 0 , 65 , 50 , 100 , 100 , 75 , 100 , 50 , 65 , 25 , 100 , 0 , 100 , 35 , 50 , 0 , 0 ] , square : [ 0 , 0 , 0 , 1 , 1 , 1 , 1 , 0 , 0 , 0 ] , triangle : [ 0 , 10 , 10 , 10 , 5 , 0 , 0 , 10 ] } ; OpenLayers . Renderer . Canvas = OpenLayers . Class ( OpenLayers . Renderer , { hitDetection : ! 0 , hitOverflow : 0 , canvas : null , features : null , pendingRedraw : ! 1 , cachedSymbolBounds : { } , initialize : function ( a , b ) { OpenLayers . Renderer . prototype . initialize . apply ( this , arguments ) ; this . root = document . createElement ( "canvas" ) ; this . container . appendChild ( this . root ) ; this . canvas = this . root . getContext ( "2d" ) ; this . features = { } ; this . hitDetection && ( this . hitCanvas = document . createElement ( "canvas" ) , this . hitContext = this . hitCanvas . getContext ( "2d" ) ) } ,
setExtent : function ( ) { OpenLayers . Renderer . prototype . setExtent . apply ( this , arguments ) ; return ! 1 } , eraseGeometry : function ( a , b ) { this . eraseFeatures ( this . features [ b ] [ 0 ] ) } , supported : function ( ) { return OpenLayers . CANVAS _SUPPORTED } , setSize : function ( a ) { this . size = a . clone ( ) ; var b = this . root ; b . style . width = a . w + "px" ; b . style . height = a . h + "px" ; b . width = a . w ; b . height = a . h ; this . resolution = null ; this . hitDetection && ( b = this . hitCanvas , b . style . width = a . w + "px" , b . style . height = a . h + "px" , b . width = a . w , b . height = a . h ) } , drawFeature : function ( a ,
b ) { var c ; if ( a . geometry ) { b = this . applyDefaultSymbolizer ( b || a . style ) ; c = a . geometry . getBounds ( ) ; var d ; this . map . baseLayer && this . map . baseLayer . wrapDateLine && ( d = this . map . getMaxExtent ( ) ) ; d = c && c . intersectsBounds ( this . extent , { worldBounds : d } ) ; ( c = "none" !== b . display && ! ! c && d ) ? this . features [ a . id ] = [ a , b ] : delete this . features [ a . id ] ; this . pendingRedraw = ! 0 } this . pendingRedraw && ! this . locked && ( this . redraw ( ) , this . pendingRedraw = ! 1 ) ; return c } , drawGeometry : function ( a , b , c ) { var d = a . CLASS _NAME ; if ( "OpenLayers.Geometry.Collection" ==
d || "OpenLayers.Geometry.MultiPoint" == d || "OpenLayers.Geometry.MultiLineString" == d || "OpenLayers.Geometry.MultiPolygon" == d ) for ( d = 0 ; d < a . components . length ; d ++ ) this . drawGeometry ( a . components [ d ] , b , c ) ; else switch ( a . CLASS _NAME ) { case "OpenLayers.Geometry.Point" : this . drawPoint ( a , b , c ) ; break ; case "OpenLayers.Geometry.LineString" : this . drawLineString ( a , b , c ) ; break ; case "OpenLayers.Geometry.LinearRing" : this . drawLinearRing ( a , b , c ) ; break ; case "OpenLayers.Geometry.Polygon" : this . drawPolygon ( a , b , c ) } } , drawExternalGraphic : function ( a ,
b , c ) { var d = new Image ; b . graphicTitle && ( d . title = b . graphicTitle ) ; var e = b . graphicWidth || b . graphicHeight , f = b . graphicHeight || b . graphicWidth , e = e ? e : 2 * b . pointRadius , f = f ? f : 2 * b . pointRadius , g = void 0 != b . graphicXOffset ? b . graphicXOffset : - ( 0.5 * e ) , h = void 0 != b . graphicYOffset ? b . graphicYOffset : - ( 0.5 * f ) , i = b . graphicOpacity || b . fillOpacity ; d . onload = OpenLayers . Function . bind ( function ( ) { if ( this . features [ c ] ) { var b = this . getLocalXY ( a ) , k = b [ 0 ] , b = b [ 1 ] ; if ( ! isNaN ( k ) && ! isNaN ( b ) ) { var k = k + g | 0 , b = b + h | 0 , l = this . canvas ; l . globalAlpha = i ; var m =
OpenLayers . Renderer . Canvas . drawImageScaleFactor || ( OpenLayers . Renderer . Canvas . drawImageScaleFactor = /android 2.1/ . test ( navigator . userAgent . toLowerCase ( ) ) ? 320 / window . screen . width : 1 ) ; l . drawImage ( d , k * m , b * m , e * m , f * m ) ; if ( this . hitDetection ) { this . setHitContextStyle ( "fill" , c ) ; this . hitContext . fillRect ( k , b , e , f ) } } } } , this ) ; d . src = b . externalGraphic } , drawNamedSymbol : function ( a , b , c ) { var d , e , f , g ; f = Math . PI / 180 ; var h = OpenLayers . Renderer . symbol [ b . graphicName ] ; if ( ! h ) throw Error ( b . graphicName + " is not a valid symbol name" ) ;
if ( h . length && ! ( 2 > h . length ) && ( a = this . getLocalXY ( a ) , e = a [ 0 ] , g = a [ 1 ] , ! isNaN ( e ) && ! isNaN ( g ) ) ) { this . canvas . lineCap = "round" ; this . canvas . lineJoin = "round" ; this . hitDetection && ( this . hitContext . lineCap = "round" , this . hitContext . lineJoin = "round" ) ; if ( b . graphicName in this . cachedSymbolBounds ) d = this . cachedSymbolBounds [ b . graphicName ] ; else { d = new OpenLayers . Bounds ; for ( a = 0 ; a < h . length ; a += 2 ) d . extend ( new OpenLayers . LonLat ( h [ a ] , h [ a + 1 ] ) ) ; this . cachedSymbolBounds [ b . graphicName ] = d } this . canvas . save ( ) ; this . hitDetection && this . hitContext . save ( ) ;
this . canvas . translate ( e , g ) ; this . hitDetection && this . hitContext . translate ( e , g ) ; a = f * b . rotation ; isNaN ( a ) || ( this . canvas . rotate ( a ) , this . hitDetection && this . hitContext . rotate ( a ) ) ; f = 2 * b . pointRadius / Math . max ( d . getWidth ( ) , d . getHeight ( ) ) ; this . canvas . scale ( f , f ) ; this . hitDetection && this . hitContext . scale ( f , f ) ; a = d . getCenterLonLat ( ) . lon ; d = d . getCenterLonLat ( ) . lat ; this . canvas . translate ( - a , - d ) ; this . hitDetection && this . hitContext . translate ( - a , - d ) ; g = b . strokeWidth ; b . strokeWidth = g / f ; if ( ! 1 !== b . fill ) { this . setCanvasStyle ( "fill" ,
b ) ; this . canvas . beginPath ( ) ; for ( a = 0 ; a < h . length ; a += 2 ) d = h [ a ] , e = h [ a + 1 ] , 0 == a && this . canvas . moveTo ( d , e ) , this . canvas . lineTo ( d , e ) ; this . canvas . closePath ( ) ; this . canvas . fill ( ) ; if ( this . hitDetection ) { this . setHitContextStyle ( "fill" , c , b ) ; this . hitContext . beginPath ( ) ; for ( a = 0 ; a < h . length ; a += 2 ) d = h [ a ] , e = h [ a + 1 ] , 0 == a && this . canvas . moveTo ( d , e ) , this . hitContext . lineTo ( d , e ) ; this . hitContext . closePath ( ) ; this . hitContext . fill ( ) } } if ( ! 1 !== b . stroke ) { this . setCanvasStyle ( "stroke" , b ) ; this . canvas . beginPath ( ) ; for ( a = 0 ; a < h . length ; a += 2 ) d = h [ a ] ,
e = h [ a + 1 ] , 0 == a && this . canvas . moveTo ( d , e ) , this . canvas . lineTo ( d , e ) ; this . canvas . closePath ( ) ; this . canvas . stroke ( ) ; if ( this . hitDetection ) { this . setHitContextStyle ( "stroke" , c , b , f ) ; this . hitContext . beginPath ( ) ; for ( a = 0 ; a < h . length ; a += 2 ) d = h [ a ] , e = h [ a + 1 ] , 0 == a && this . hitContext . moveTo ( d , e ) , this . hitContext . lineTo ( d , e ) ; this . hitContext . closePath ( ) ; this . hitContext . stroke ( ) } } b . strokeWidth = g ; this . canvas . restore ( ) ; this . hitDetection && this . hitContext . restore ( ) ; this . setCanvasStyle ( "reset" ) } } , setCanvasStyle : function ( a , b ) { "fill" ===
a ? ( this . canvas . globalAlpha = b . fillOpacity , this . canvas . fillStyle = b . fillColor ) : "stroke" === a ? ( this . canvas . globalAlpha = b . strokeOpacity , this . canvas . strokeStyle = b . strokeColor , this . canvas . lineWidth = b . strokeWidth ) : ( this . canvas . globalAlpha = 0 , this . canvas . lineWidth = 1 ) } , featureIdToHex : function ( a ) { a = Number ( a . split ( "_" ) . pop ( ) ) + 1 ; 16777216 <= a && ( this . hitOverflow = a - 16777215 , a = a % 16777216 + 1 ) ; var a = "000000" + a . toString ( 16 ) , b = a . length ; return a = "#" + a . substring ( b - 6 , b ) } , setHitContextStyle : function ( a , b , c , d ) { b = this . featureIdToHex ( b ) ;
"fill" == a ? ( this . hitContext . globalAlpha = 1 , this . hitContext . fillStyle = b ) : "stroke" == a ? ( this . hitContext . globalAlpha = 1 , this . hitContext . strokeStyle = b , "undefined" === typeof d ? this . hitContext . lineWidth = c . strokeWidth + 2 : isNaN ( d ) || ( this . hitContext . lineWidth = c . strokeWidth + 2 / d ) ) : ( this . hitContext . globalAlpha = 0 , this . hitContext . lineWidth = 1 ) } , drawPoint : function ( a , b , c ) { if ( ! 1 !== b . graphic ) if ( b . externalGraphic ) this . drawExternalGraphic ( a , b , c ) ; else if ( b . graphicName && "circle" != b . graphicName ) this . drawNamedSymbol ( a , b , c ) ; else { var d =
this . getLocalXY ( a ) , a = d [ 0 ] , d = d [ 1 ] ; if ( ! isNaN ( a ) && ! isNaN ( d ) ) { var e = 2 * Math . PI , f = b . pointRadius ; ! 1 !== b . fill && ( this . setCanvasStyle ( "fill" , b ) , this . canvas . beginPath ( ) , this . canvas . arc ( a , d , f , 0 , e , ! 0 ) , this . canvas . fill ( ) , this . hitDetection && ( this . setHitContextStyle ( "fill" , c , b ) , this . hitContext . beginPath ( ) , this . hitContext . arc ( a , d , f , 0 , e , ! 0 ) , this . hitContext . fill ( ) ) ) ; ! 1 !== b . stroke && ( this . setCanvasStyle ( "stroke" , b ) , this . canvas . beginPath ( ) , this . canvas . arc ( a , d , f , 0 , e , ! 0 ) , this . canvas . stroke ( ) , this . hitDetection && ( this . setHitContextStyle ( "stroke" ,
c , b ) , this . hitContext . beginPath ( ) , this . hitContext . arc ( a , d , f , 0 , e , ! 0 ) , this . hitContext . stroke ( ) ) , this . setCanvasStyle ( "reset" ) ) } } } , drawLineString : function ( a , b , c ) { b = OpenLayers . Util . applyDefaults ( { fill : ! 1 } , b ) ; this . drawLinearRing ( a , b , c ) } , drawLinearRing : function ( a , b , c ) { ! 1 !== b . fill && ( this . setCanvasStyle ( "fill" , b ) , this . renderPath ( this . canvas , a , b , c , "fill" ) , this . hitDetection && ( this . setHitContextStyle ( "fill" , c , b ) , this . renderPath ( this . hitContext , a , b , c , "fill" ) ) ) ; ! 1 !== b . stroke && ( this . setCanvasStyle ( "stroke" , b ) , this . renderPath ( this . canvas ,
a , b , c , "stroke" ) , this . hitDetection && ( this . setHitContextStyle ( "stroke" , c , b ) , this . renderPath ( this . hitContext , a , b , c , "stroke" ) ) ) ; this . setCanvasStyle ( "reset" ) } , renderPath : function ( a , b , c , d , e ) { b = b . components ; c = b . length ; a . beginPath ( ) ; var d = this . getLocalXY ( b [ 0 ] ) , f = d [ 1 ] ; if ( ! isNaN ( d [ 0 ] ) && ! isNaN ( f ) ) { a . moveTo ( d [ 0 ] , d [ 1 ] ) ; for ( d = 1 ; d < c ; ++ d ) f = this . getLocalXY ( b [ d ] ) , a . lineTo ( f [ 0 ] , f [ 1 ] ) ; "fill" === e ? a . fill ( ) : a . stroke ( ) } } , drawPolygon : function ( a , b , c ) { var a = a . components , d = a . length ; this . drawLinearRing ( a [ 0 ] , b , c ) ; for ( var e = 1 ; e <
d ; ++ e ) this . canvas . globalCompositeOperation = "destination-out" , this . hitDetection && ( this . hitContext . globalCompositeOperation = "destination-out" ) , this . drawLinearRing ( a [ e ] , OpenLayers . Util . applyDefaults ( { stroke : ! 1 , fillOpacity : 1 } , b ) , c ) , this . canvas . globalCompositeOperation = "source-over" , this . hitDetection && ( this . hitContext . globalCompositeOperation = "source-over" ) , this . drawLinearRing ( a [ e ] , OpenLayers . Util . applyDefaults ( { fill : ! 1 } , b ) , c ) } , drawText : function ( a , b ) { var c = this . getLocalXY ( a ) ; this . setCanvasStyle ( "reset" ) ;
this . canvas . fillStyle = b . fontColor ; this . canvas . globalAlpha = b . fontOpacity || 1 ; var d = [ b . fontStyle ? b . fontStyle : "normal" , "normal" , b . fontWeight ? b . fontWeight : "normal" , b . fontSize ? b . fontSize : "1em" , b . fontFamily ? b . fontFamily : "sans-serif" ] . join ( " " ) , e = b . label . split ( "\n" ) , f = e . length ; if ( this . canvas . fillText ) { this . canvas . font = d ; this . canvas . textAlign = OpenLayers . Renderer . Canvas . LABEL _ALIGN [ b . labelAlign [ 0 ] ] || "center" ; this . canvas . textBaseline = OpenLayers . Renderer . Canvas . LABEL _ALIGN [ b . labelAlign [ 1 ] ] || "middle" ; var g = OpenLayers . Renderer . Canvas . LABEL _FACTOR [ b . labelAlign [ 1 ] ] ;
null == g && ( g = - 0.5 ) ; d = this . canvas . measureText ( "Mg" ) . height || this . canvas . measureText ( "xx" ) . width ; c [ 1 ] += d * g * ( f - 1 ) ; for ( g = 0 ; g < f ; g ++ ) b . labelOutlineWidth && ( this . canvas . save ( ) , this . canvas . strokeStyle = b . labelOutlineColor , this . canvas . lineWidth = b . labelOutlineWidth , this . canvas . strokeText ( e [ g ] , c [ 0 ] , c [ 1 ] + d * g + 1 ) , this . canvas . restore ( ) ) , this . canvas . fillText ( e [ g ] , c [ 0 ] , c [ 1 ] + d * g ) } else if ( this . canvas . mozDrawText ) { this . canvas . mozTextStyle = d ; var h = OpenLayers . Renderer . Canvas . LABEL _FACTOR [ b . labelAlign [ 0 ] ] ; null == h && ( h = - 0.5 ) ;
g = OpenLayers . Renderer . Canvas . LABEL _FACTOR [ b . labelAlign [ 1 ] ] ; null == g && ( g = - 0.5 ) ; d = this . canvas . mozMeasureText ( "xx" ) ; c [ 1 ] += d * ( 1 + g * f ) ; for ( g = 0 ; g < f ; g ++ ) { var i = c [ 0 ] + h * this . canvas . mozMeasureText ( e [ g ] ) , j = c [ 1 ] + g * d ; this . canvas . translate ( i , j ) ; this . canvas . mozDrawText ( e [ g ] ) ; this . canvas . translate ( - i , - j ) } } this . setCanvasStyle ( "reset" ) } , getLocalXY : function ( a ) { var b = this . getResolution ( ) , c = this . extent ; return [ ( a . x - this . featureDx ) / b + - c . left / b , c . top / b - a . y / b ] } , clear : function ( ) { var a = this . root . height , b = this . root . width ; this . canvas . clearRect ( 0 ,
0 , b , a ) ; this . features = { } ; this . hitDetection && this . hitContext . clearRect ( 0 , 0 , b , a ) } , getFeatureIdFromEvent : function ( a ) { var b ; if ( this . hitDetection && "none" !== this . root . style . display && ! this . map . dragging && ( a = a . xy , a = this . hitContext . getImageData ( a . x | 0 , a . y | 0 , 1 , 1 ) . data , 255 === a [ 3 ] && ( a = a [ 2 ] + 256 * ( a [ 1 ] + 256 * a [ 0 ] ) ) ) ) { a = "OpenLayers.Feature.Vector_" + ( a - 1 + this . hitOverflow ) ; try { b = this . features [ a ] [ 0 ] } catch ( c ) { } } return b } , eraseFeatures : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var b = 0 ; b < a . length ; ++ b ) delete this . features [ a [ b ] . id ] ;
this . redraw ( ) } , redraw : function ( ) { if ( ! this . locked ) { var a = this . root . height , b = this . root . width ; this . canvas . clearRect ( 0 , 0 , b , a ) ; this . hitDetection && this . hitContext . clearRect ( 0 , 0 , b , a ) ; var a = [ ] , c , d , e = this . map . baseLayer && this . map . baseLayer . wrapDateLine && this . map . getMaxExtent ( ) , f ; for ( f in this . features ) this . features . hasOwnProperty ( f ) && ( b = this . features [ f ] [ 0 ] , c = b . geometry , this . calculateFeatureDx ( c . getBounds ( ) , e ) , d = this . features [ f ] [ 1 ] , this . drawGeometry ( c , d , b . id ) , d . label && a . push ( [ b , d ] ) ) ; b = 0 ; for ( c = a . length ; b < c ; ++ b ) f =
a [ b ] , this . drawText ( f [ 0 ] . geometry . getCentroid ( ) , f [ 1 ] ) } } , CLASS _NAME : "OpenLayers.Renderer.Canvas" } ) ; OpenLayers . Renderer . Canvas . LABEL _ALIGN = { l : "left" , r : "right" , t : "top" , b : "bottom" } ; OpenLayers . Renderer . Canvas . LABEL _FACTOR = { l : 0 , r : - 1 , t : 0 , b : - 1 } ; OpenLayers . Renderer . Canvas . drawImageScaleFactor = null ; OpenLayers . Format . OSM = OpenLayers . Class ( OpenLayers . Format . XML , { checkTags : ! 1 , interestingTagsExclude : null , areaTags : null , initialize : function ( a ) { for ( var b = { interestingTagsExclude : "source source_ref source:ref history attribution created_by" . split ( " " ) , areaTags : "area building leisure tourism ruins historic landuse military natural sport" . split ( " " ) } , b = OpenLayers . Util . extend ( b , a ) , c = { } , a = 0 ; a < b . interestingTagsExclude . length ; a ++ ) c [ b . interestingTagsExclude [ a ] ] = ! 0 ; b . interestingTagsExclude = c ; c = { } ; for ( a = 0 ; a < b . areaTags . length ; a ++ ) c [ b . areaTags [ a ] ] =
! 0 ; b . areaTags = c ; this . externalProjection = new OpenLayers . Projection ( "EPSG:4326" ) ; OpenLayers . Format . XML . prototype . initialize . apply ( this , [ b ] ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; for ( var b = this . getNodes ( a ) , c = this . getWays ( a ) , a = Array ( c . length ) , d = 0 ; d < c . length ; d ++ ) { for ( var e = Array ( c [ d ] . nodes . length ) , f = this . isWayArea ( c [ d ] ) ? 1 : 0 , g = 0 ; g < c [ d ] . nodes . length ; g ++ ) { var h = b [ c [ d ] . nodes [ g ] ] , i = new OpenLayers . Geometry . Point ( h . lon , h . lat ) ; i . osm _id = parseInt ( c [ d ] . nodes [ g ] ) ;
e [ g ] = i ; h . used = ! 0 } h = null ; h = f ? new OpenLayers . Geometry . Polygon ( new OpenLayers . Geometry . LinearRing ( e ) ) : new OpenLayers . Geometry . LineString ( e ) ; this . internalProjection && this . externalProjection && h . transform ( this . externalProjection , this . internalProjection ) ; e = new OpenLayers . Feature . Vector ( h , c [ d ] . tags ) ; e . osm _id = parseInt ( c [ d ] . id ) ; e . fid = "way." + e . osm _id ; a [ d ] = e } for ( var j in b ) { h = b [ j ] ; if ( ! h . used || this . checkTags ) { c = null ; if ( this . checkTags ) { c = this . getTags ( h . node , ! 0 ) ; if ( h . used && ! c [ 1 ] ) continue ; c = c [ 0 ] } else c = this . getTags ( h . node ) ;
e = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Point ( h . lon , h . lat ) , c ) ; this . internalProjection && this . externalProjection && e . geometry . transform ( this . externalProjection , this . internalProjection ) ; e . osm _id = parseInt ( j ) ; e . fid = "node." + e . osm _id ; a . push ( e ) } h . node = null } return a } , getNodes : function ( a ) { for ( var a = a . getElementsByTagName ( "node" ) , b = { } , c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] , e = d . getAttribute ( "id" ) ; b [ e ] = { lat : d . getAttribute ( "lat" ) , lon : d . getAttribute ( "lon" ) , node : d } } return b } , getWays : function ( a ) { for ( var a =
a . getElementsByTagName ( "way" ) , b = [ ] , c = 0 ; c < a . length ; c ++ ) { var d = a [ c ] , e = { id : d . getAttribute ( "id" ) } ; e . tags = this . getTags ( d ) ; d = d . getElementsByTagName ( "nd" ) ; e . nodes = Array ( d . length ) ; for ( var f = 0 ; f < d . length ; f ++ ) e . nodes [ f ] = d [ f ] . getAttribute ( "ref" ) ; b . push ( e ) } return b } , getTags : function ( a , b ) { for ( var c = a . getElementsByTagName ( "tag" ) , d = { } , e = ! 1 , f = 0 ; f < c . length ; f ++ ) { var g = c [ f ] . getAttribute ( "k" ) ; d [ g ] = c [ f ] . getAttribute ( "v" ) ; b && ( this . interestingTagsExclude [ g ] || ( e = ! 0 ) ) } return b ? [ d , e ] : d } , isWayArea : function ( a ) { var b = ! 1 , c = ! 1 ;
a . nodes [ 0 ] == a . nodes [ a . nodes . length - 1 ] && ( b = ! 0 ) ; if ( this . checkTags ) for ( var d in a . tags ) if ( this . areaTags [ d ] ) { c = ! 0 ; break } return b && ( this . checkTags ? c : ! 0 ) } , write : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; this . osm _id = 1 ; this . created _nodes = { } ; var b = this . createElementNS ( null , "osm" ) ; b . setAttribute ( "version" , "0.5" ) ; b . setAttribute ( "generator" , "OpenLayers " + OpenLayers . VERSION _NUMBER ) ; for ( var c = a . length - 1 ; 0 <= c ; c -- ) for ( var d = this . createFeatureNodes ( a [ c ] ) , e = 0 ; e < d . length ; e ++ ) b . appendChild ( d [ e ] ) ; return OpenLayers . Format . XML . prototype . write . apply ( this ,
[ b ] ) } , createFeatureNodes : function ( a ) { var b = [ ] , c = a . geometry . CLASS _NAME , c = c . substring ( c . lastIndexOf ( "." ) + 1 ) , c = c . toLowerCase ( ) ; ( c = this . createXML [ c ] ) && ( b = c . apply ( this , [ a ] ) ) ; return b } , createXML : { point : function ( a ) { var b = null , c = a . geometry ? a . geometry : a ; this . internalProjection && this . externalProjection && ( c = c . clone ( ) , c . transform ( this . internalProjection , this . externalProjection ) ) ; var d = ! 1 ; a . osm _id ? ( b = a . osm _id , this . created _nodes [ b ] && ( d = ! 0 ) ) : ( b = - this . osm _id , this . osm _id ++ ) ; var e = d ? this . created _nodes [ b ] : this . createElementNS ( null ,
"node" ) ; this . created _nodes [ b ] = e ; e . setAttribute ( "id" , b ) ; e . setAttribute ( "lon" , c . x ) ; e . setAttribute ( "lat" , c . y ) ; a . attributes && this . serializeTags ( a , e ) ; this . setState ( a , e ) ; return d ? [ ] : [ e ] } , linestring : function ( a ) { var b , c = [ ] , d = a . geometry ; a . osm _id ? b = a . osm _id : ( b = - this . osm _id , this . osm _id ++ ) ; var e = this . createElementNS ( null , "way" ) ; e . setAttribute ( "id" , b ) ; for ( b = 0 ; b < d . components . length ; b ++ ) { var f = this . createXML . point . apply ( this , [ d . components [ b ] ] ) ; if ( f . length ) { var f = f [ 0 ] , g = f . getAttribute ( "id" ) ; c . push ( f ) } else g = d . components [ b ] . osm _id ,
f = this . created _nodes [ g ] ; this . setState ( a , f ) ; f = this . createElementNS ( null , "nd" ) ; f . setAttribute ( "ref" , g ) ; e . appendChild ( f ) } this . serializeTags ( a , e ) ; c . push ( e ) ; return c } , polygon : function ( a ) { var b = OpenLayers . Util . extend ( { area : "yes" } , a . attributes ) , b = new OpenLayers . Feature . Vector ( a . geometry . components [ 0 ] , b ) ; b . osm _id = a . osm _id ; return this . createXML . linestring . apply ( this , [ b ] ) } } , serializeTags : function ( a , b ) { for ( var c in a . attributes ) { var d = this . createElementNS ( null , "tag" ) ; d . setAttribute ( "k" , c ) ; d . setAttribute ( "v" ,
a . attributes [ c ] ) ; b . appendChild ( d ) } } , setState : function ( a , b ) { if ( a . state ) { var c = null ; switch ( a . state ) { case OpenLayers . State . UPDATE : case OpenLayers . State . DELETE : c = "delete" } c && b . setAttribute ( "action" , c ) } } , CLASS _NAME : "OpenLayers.Format.OSM" } ) ; OpenLayers . Handler = OpenLayers . Class ( { id : null , control : null , map : null , keyMask : null , active : ! 1 , evt : null , initialize : function ( a , b , c ) { OpenLayers . Util . extend ( this , c ) ; this . control = a ; this . callbacks = b ; ( a = this . map || a . map ) && this . setMap ( a ) ; this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) } , setMap : function ( a ) { this . map = a } , checkModifiers : function ( a ) { return null == this . keyMask ? ! 0 : ( ( a . shiftKey ? OpenLayers . Handler . MOD _SHIFT : 0 ) | ( a . ctrlKey ? OpenLayers . Handler . MOD _CTRL : 0 ) | ( a . altKey ? OpenLayers . Handler . MOD _ALT : 0 ) ) ==
this . keyMask } , activate : function ( ) { if ( this . active ) return ! 1 ; for ( var a = OpenLayers . Events . prototype . BROWSER _EVENTS , b = 0 , c = a . length ; b < c ; b ++ ) this [ a [ b ] ] && this . register ( a [ b ] , this [ a [ b ] ] ) ; return this . active = ! 0 } , deactivate : function ( ) { if ( ! this . active ) return ! 1 ; for ( var a = OpenLayers . Events . prototype . BROWSER _EVENTS , b = 0 , c = a . length ; b < c ; b ++ ) this [ a [ b ] ] && this . unregister ( a [ b ] , this [ a [ b ] ] ) ; this . active = ! 1 ; return ! 0 } , callback : function ( a , b ) { a && this . callbacks [ a ] && this . callbacks [ a ] . apply ( this . control , b ) } , register : function ( a , b ) { this . map . events . registerPriority ( a ,
this , b ) ; this . map . events . registerPriority ( a , this , this . setEvent ) } , unregister : function ( a , b ) { this . map . events . unregister ( a , this , b ) ; this . map . events . unregister ( a , this , this . setEvent ) } , setEvent : function ( a ) { this . evt = a ; return ! 0 } , destroy : function ( ) { this . deactivate ( ) ; this . control = this . map = null } , CLASS _NAME : "OpenLayers.Handler" } ) ; OpenLayers . Handler . MOD _NONE = 0 ; OpenLayers . Handler . MOD _SHIFT = 1 ; OpenLayers . Handler . MOD _CTRL = 2 ; OpenLayers . Handler . MOD _ALT = 4 ; OpenLayers . Handler . Drag = OpenLayers . Class ( OpenLayers . Handler , { started : ! 1 , stopDown : ! 0 , dragging : ! 1 , touch : ! 1 , last : null , start : null , lastMoveEvt : null , oldOnselectstart : null , interval : 0 , timeoutId : null , documentDrag : ! 1 , documentEvents : null , initialize : function ( a , b , c ) { OpenLayers . Handler . prototype . initialize . apply ( this , arguments ) ; if ( ! 0 === this . documentDrag ) { var d = this ; this . _docMove = function ( a ) { d . mousemove ( { xy : { x : a . clientX , y : a . clientY } , element : document } ) } ; this . _docUp = function ( a ) { d . mouseup ( { xy : { x : a . clientX , y : a . clientY } } ) } } } ,
dragstart : function ( a ) { var b = ! 0 ; this . dragging = ! 1 ; this . checkModifiers ( a ) && ( OpenLayers . Event . isLeftClick ( a ) || OpenLayers . Event . isSingleTouch ( a ) ) ? ( this . started = ! 0 , this . last = this . start = a . xy , OpenLayers . Element . addClass ( this . map . viewPortDiv , "olDragDown" ) , this . down ( a ) , this . callback ( "down" , [ a . xy ] ) , OpenLayers . Event . stop ( a ) , this . oldOnselectstart || ( this . oldOnselectstart = document . onselectstart ? document . onselectstart : OpenLayers . Function . True ) , document . onselectstart = OpenLayers . Function . False , b = ! this . stopDown ) : ( this . started =
! 1 , this . last = this . start = null ) ; return b } , dragmove : function ( a ) { this . lastMoveEvt = a ; if ( this . started && ! this . timeoutId && ( a . xy . x != this . last . x || a . xy . y != this . last . y ) ) ! 0 === this . documentDrag && this . documentEvents && ( a . element === document ? ( this . adjustXY ( a ) , this . setEvent ( a ) ) : this . removeDocumentEvents ( ) ) , 0 < this . interval && ( this . timeoutId = setTimeout ( OpenLayers . Function . bind ( this . removeTimeout , this ) , this . interval ) ) , this . dragging = ! 0 , this . move ( a ) , this . callback ( "move" , [ a . xy ] ) , this . oldOnselectstart || ( this . oldOnselectstart =
document . onselectstart , document . onselectstart = OpenLayers . Function . False ) , this . last = a . xy ; return ! 0 } , dragend : function ( a ) { if ( this . started ) { ! 0 === this . documentDrag && this . documentEvents && ( this . adjustXY ( a ) , this . removeDocumentEvents ( ) ) ; var b = this . start != this . last ; this . dragging = this . started = ! 1 ; OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olDragDown" ) ; this . up ( a ) ; this . callback ( "up" , [ a . xy ] ) ; b && this . callback ( "done" , [ a . xy ] ) ; document . onselectstart = this . oldOnselectstart } return ! 0 } , down : function ( ) { } , move : function ( ) { } ,
up : function ( ) { } , out : function ( ) { } , mousedown : function ( a ) { return this . dragstart ( a ) } , touchstart : function ( a ) { this . touch || ( this . touch = ! 0 , this . map . events . un ( { mousedown : this . mousedown , mouseup : this . mouseup , mousemove : this . mousemove , click : this . click , scope : this } ) ) ; return this . dragstart ( a ) } , mousemove : function ( a ) { return this . dragmove ( a ) } , touchmove : function ( a ) { return this . dragmove ( a ) } , removeTimeout : function ( ) { this . timeoutId = null ; this . dragging && this . mousemove ( this . lastMoveEvt ) } , mouseup : function ( a ) { return this . dragend ( a ) } ,
touchend : function ( a ) { a . xy = this . last ; return this . dragend ( a ) } , mouseout : function ( a ) { if ( this . started && OpenLayers . Util . mouseLeft ( a , this . map . viewPortDiv ) ) if ( ! 0 === this . documentDrag ) this . addDocumentEvents ( ) ; else { var b = this . start != this . last ; this . dragging = this . started = ! 1 ; OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olDragDown" ) ; this . out ( a ) ; this . callback ( "out" , [ ] ) ; b && this . callback ( "done" , [ a . xy ] ) ; document . onselectstart && ( document . onselectstart = this . oldOnselectstart ) } return ! 0 } , click : function ( ) { return this . start ==
this . last } , activate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . activate . apply ( this , arguments ) && ( this . dragging = ! 1 , a = ! 0 ) ; return a } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) && ( this . dragging = this . started = this . touch = ! 1 , this . last = this . start = null , a = ! 0 , OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olDragDown" ) ) ; return a } , adjustXY : function ( a ) { var b = OpenLayers . Util . pagePosition ( this . map . viewPortDiv ) ; a . xy . x -= b [ 0 ] ; a . xy . y -= b [ 1 ] } , addDocumentEvents : function ( ) { OpenLayers . Element . addClass ( document . body ,
"olDragDown" ) ; this . documentEvents = ! 0 ; OpenLayers . Event . observe ( document , "mousemove" , this . _docMove ) ; OpenLayers . Event . observe ( document , "mouseup" , this . _docUp ) } , removeDocumentEvents : function ( ) { OpenLayers . Element . removeClass ( document . body , "olDragDown" ) ; this . documentEvents = ! 1 ; OpenLayers . Event . stopObserving ( document , "mousemove" , this . _docMove ) ; OpenLayers . Event . stopObserving ( document , "mouseup" , this . _docUp ) } , CLASS _NAME : "OpenLayers.Handler.Drag" } ) ; OpenLayers . Handler . Feature = OpenLayers . Class ( OpenLayers . Handler , { EVENTMAP : { click : { "in" : "click" , out : "clickout" } , mousemove : { "in" : "over" , out : "out" } , dblclick : { "in" : "dblclick" , out : null } , mousedown : { "in" : null , out : null } , mouseup : { "in" : null , out : null } , touchstart : { "in" : "click" , out : "clickout" } } , feature : null , lastFeature : null , down : null , up : null , touch : ! 1 , clickTolerance : 4 , geometryTypes : null , stopClick : ! 0 , stopDown : ! 0 , stopUp : ! 1 , initialize : function ( a , b , c , d ) { OpenLayers . Handler . prototype . initialize . apply ( this , [ a , c , d ] ) ; this . layer =
b } , touchstart : function ( a ) { this . touch || ( this . touch = ! 0 , this . map . events . un ( { mousedown : this . mousedown , mouseup : this . mouseup , mousemove : this . mousemove , click : this . click , dblclick : this . dblclick , scope : this } ) ) ; return OpenLayers . Event . isMultiTouch ( a ) ? ! 0 : this . mousedown ( a ) } , touchmove : function ( a ) { OpenLayers . Event . stop ( a ) } , mousedown : function ( a ) { if ( OpenLayers . Event . isLeftClick ( a ) || OpenLayers . Event . isSingleTouch ( a ) ) this . down = a . xy ; return this . handle ( a ) ? ! this . stopDown : ! 0 } , mouseup : function ( a ) { this . up = a . xy ; return this . handle ( a ) ?
! this . stopUp : ! 0 } , click : function ( a ) { return this . handle ( a ) ? ! this . stopClick : ! 0 } , mousemove : function ( a ) { if ( ! this . callbacks . over && ! this . callbacks . out ) return ! 0 ; this . handle ( a ) ; return ! 0 } , dblclick : function ( a ) { return ! this . handle ( a ) } , geometryTypeMatches : function ( a ) { return null == this . geometryTypes || - 1 < OpenLayers . Util . indexOf ( this . geometryTypes , a . geometry . CLASS _NAME ) } , handle : function ( a ) { this . feature && ! this . feature . layer && ( this . feature = null ) ; var b = a . type , c = ! 1 , d = ! ! this . feature , e = "click" == b || "dblclick" == b || "touchstart" ==
b ; if ( ( this . feature = this . layer . getFeatureFromEvent ( a ) ) && ! this . feature . layer ) this . feature = null ; this . lastFeature && ! this . lastFeature . layer && ( this . lastFeature = null ) ; this . feature ? ( "touchstart" === b && OpenLayers . Event . stop ( a ) , a = this . feature != this . lastFeature , this . geometryTypeMatches ( this . feature ) ? ( d && a ? ( this . lastFeature && this . triggerCallback ( b , "out" , [ this . lastFeature ] ) , this . triggerCallback ( b , "in" , [ this . feature ] ) ) : ( ! d || e ) && this . triggerCallback ( b , "in" , [ this . feature ] ) , this . lastFeature = this . feature , c = ! 0 ) : ( this . lastFeature &&
( d && a || e ) && this . triggerCallback ( b , "out" , [ this . lastFeature ] ) , this . feature = null ) ) : this . lastFeature && ( d || e ) && this . triggerCallback ( b , "out" , [ this . lastFeature ] ) ; return c } , triggerCallback : function ( a , b , c ) { ( b = this . EVENTMAP [ a ] [ b ] ) && ( "click" == a && this . up && this . down ? Math . sqrt ( Math . pow ( this . up . x - this . down . x , 2 ) + Math . pow ( this . up . y - this . down . y , 2 ) ) <= this . clickTolerance && this . callback ( b , c ) : this . callback ( b , c ) ) } , activate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . activate . apply ( this , arguments ) && ( this . moveLayerToTop ( ) ,
this . map . events . on ( { removelayer : this . handleMapEvents , changelayer : this . handleMapEvents , scope : this } ) , a = ! 0 ) ; return a } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) && ( this . moveLayerBack ( ) , this . up = this . down = this . lastFeature = this . feature = null , this . touch = ! 1 , this . map . events . un ( { removelayer : this . handleMapEvents , changelayer : this . handleMapEvents , scope : this } ) , a = ! 0 ) ; return a } , handleMapEvents : function ( a ) { ( "removelayer" == a . type || "order" == a . property ) && this . moveLayerToTop ( ) } ,
moveLayerToTop : function ( ) { this . layer . setZIndex ( Math . max ( this . map . Z _INDEX _BASE . Feature - 1 , this . layer . getZIndex ( ) ) + 1 ) } , moveLayerBack : function ( ) { var a = this . layer . getZIndex ( ) - 1 ; a >= this . map . Z _INDEX _BASE . Feature ? this . layer . setZIndex ( a ) : this . map . setLayerZIndex ( this . layer , this . map . getLayerIndex ( this . layer ) ) } , CLASS _NAME : "OpenLayers.Handler.Feature" } ) ; OpenLayers . Control . DragFeature = OpenLayers . Class ( OpenLayers . Control , { geometryTypes : null , onStart : function ( ) { } , onDrag : function ( ) { } , onComplete : function ( ) { } , onEnter : function ( ) { } , onLeave : function ( ) { } , documentDrag : ! 1 , layer : null , feature : null , dragCallbacks : { } , featureCallbacks : { } , lastPixel : null , initialize : function ( a , b ) { OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; this . layer = a ; this . handlers = { drag : new OpenLayers . Handler . Drag ( this , OpenLayers . Util . extend ( { down : this . downFeature , move : this . moveFeature ,
up : this . upFeature , out : this . cancel , done : this . doneDragging } , this . dragCallbacks ) , { documentDrag : this . documentDrag } ) , feature : new OpenLayers . Handler . Feature ( this , this . layer , OpenLayers . Util . extend ( { click : this . clickFeature , clickout : this . clickoutFeature , over : this . overFeature , out : this . outFeature } , this . featureCallbacks ) , { geometryTypes : this . geometryTypes } ) } } , clickFeature : function ( a ) { this . handlers . feature . touch && ( ! this . over && this . overFeature ( a ) ) && ( this . handlers . drag . dragstart ( this . handlers . feature . evt ) , this . handlers . drag . stopDown =
! 1 ) } , clickoutFeature : function ( a ) { this . handlers . feature . touch && this . over && ( this . outFeature ( a ) , this . handlers . drag . stopDown = ! 0 ) } , destroy : function ( ) { this . layer = null ; OpenLayers . Control . prototype . destroy . apply ( this , [ ] ) } , activate : function ( ) { return this . handlers . feature . activate ( ) && OpenLayers . Control . prototype . activate . apply ( this , arguments ) } , deactivate : function ( ) { this . handlers . drag . deactivate ( ) ; this . handlers . feature . deactivate ( ) ; this . feature = null ; this . dragging = ! 1 ; this . lastPixel = null ; OpenLayers . Element . removeClass ( this . map . viewPortDiv ,
this . displayClass + "Over" ) ; return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) } , overFeature : function ( a ) { var b = ! 1 ; this . handlers . drag . dragging ? this . over = this . feature . id == a . id ? ! 0 : ! 1 : ( this . feature = a , this . handlers . drag . activate ( ) , this . over = b = ! 0 , OpenLayers . Element . addClass ( this . map . viewPortDiv , this . displayClass + "Over" ) , this . onEnter ( a ) ) ; return b } , downFeature : function ( a ) { this . lastPixel = a ; this . onStart ( this . feature , a ) } , moveFeature : function ( a ) { var b = this . map . getResolution ( ) ; this . feature . geometry . move ( b *
( a . x - this . lastPixel . x ) , b * ( this . lastPixel . y - a . y ) ) ; this . layer . drawFeature ( this . feature ) ; this . lastPixel = a ; this . onDrag ( this . feature , a ) } , upFeature : function ( ) { this . over || this . handlers . drag . deactivate ( ) } , doneDragging : function ( a ) { this . onComplete ( this . feature , a ) } , outFeature : function ( a ) { this . handlers . drag . dragging ? this . feature . id == a . id && ( this . over = ! 1 ) : ( this . over = ! 1 , this . handlers . drag . deactivate ( ) , OpenLayers . Element . removeClass ( this . map . viewPortDiv , this . displayClass + "Over" ) , this . onLeave ( a ) , this . feature = null ) } ,
cancel : function ( ) { this . handlers . drag . deactivate ( ) ; this . over = ! 1 } , setMap : function ( a ) { this . handlers . drag . setMap ( a ) ; this . handlers . feature . setMap ( a ) ; OpenLayers . Control . prototype . setMap . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Control.DragFeature" } ) ; OpenLayers . StyleMap = OpenLayers . Class ( { styles : null , extendDefault : ! 0 , initialize : function ( a , b ) { this . styles = { "default" : new OpenLayers . Style ( OpenLayers . Feature . Vector . style [ "default" ] ) , select : new OpenLayers . Style ( OpenLayers . Feature . Vector . style . select ) , temporary : new OpenLayers . Style ( OpenLayers . Feature . Vector . style . temporary ) , "delete" : new OpenLayers . Style ( OpenLayers . Feature . Vector . style [ "delete" ] ) } ; if ( a instanceof OpenLayers . Style ) this . styles [ "default" ] = a , this . styles . select = a , this . styles . temporary = a , this . styles [ "delete" ] =
a ; else if ( "object" == typeof a ) for ( var c in a ) if ( a [ c ] instanceof OpenLayers . Style ) this . styles [ c ] = a [ c ] ; else if ( "object" == typeof a [ c ] ) this . styles [ c ] = new OpenLayers . Style ( a [ c ] ) ; else { this . styles [ "default" ] = new OpenLayers . Style ( a ) ; this . styles . select = new OpenLayers . Style ( a ) ; this . styles . temporary = new OpenLayers . Style ( a ) ; this . styles [ "delete" ] = new OpenLayers . Style ( a ) ; break } OpenLayers . Util . extend ( this , b ) } , destroy : function ( ) { for ( var a in this . styles ) this . styles [ a ] . destroy ( ) ; this . styles = null } , createSymbolizer : function ( a ,
b ) { a || ( a = new OpenLayers . Feature . Vector ) ; this . styles [ b ] || ( b = "default" ) ; a . renderIntent = b ; var c = { } ; this . extendDefault && "default" != b && ( c = this . styles [ "default" ] . createSymbolizer ( a ) ) ; return OpenLayers . Util . extend ( c , this . styles [ b ] . createSymbolizer ( a ) ) } , addUniqueValueRules : function ( a , b , c , d ) { var e = [ ] , f ; for ( f in c ) e . push ( new OpenLayers . Rule ( { symbolizer : c [ f ] , context : d , filter : new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . EQUAL _TO , property : b , value : f } ) } ) ) ; this . styles [ a ] . addRules ( e ) } , CLASS _NAME : "OpenLayers.StyleMap" } ) ; OpenLayers . Layer . Vector = OpenLayers . Class ( OpenLayers . Layer , { isBaseLayer : ! 1 , isFixed : ! 1 , features : null , filter : null , selectedFeatures : null , unrenderedFeatures : null , reportError : ! 0 , style : null , styleMap : null , strategies : null , protocol : null , renderers : [ "SVG" , "VML" , "Canvas" ] , renderer : null , rendererOptions : null , geometryType : null , drawn : ! 1 , ratio : 1 , initialize : function ( a , b ) { OpenLayers . Layer . prototype . initialize . apply ( this , arguments ) ; ( ! this . renderer || ! this . renderer . supported ( ) ) && this . assignRenderer ( ) ; if ( ! this . renderer ||
! this . renderer . supported ( ) ) this . renderer = null , this . displayError ( ) ; this . styleMap || ( this . styleMap = new OpenLayers . StyleMap ) ; this . features = [ ] ; this . selectedFeatures = [ ] ; this . unrenderedFeatures = { } ; if ( this . strategies ) for ( var c = 0 , d = this . strategies . length ; c < d ; c ++ ) this . strategies [ c ] . setLayer ( this ) } , destroy : function ( ) { if ( this . strategies ) { var a , b , c ; b = 0 ; for ( c = this . strategies . length ; b < c ; b ++ ) a = this . strategies [ b ] , a . autoDestroy && a . destroy ( ) ; this . strategies = null } this . protocol && ( this . protocol . autoDestroy && this . protocol . destroy ( ) ,
this . protocol = null ) ; this . destroyFeatures ( ) ; this . unrenderedFeatures = this . selectedFeatures = this . features = null ; this . renderer && this . renderer . destroy ( ) ; this . drawn = this . geometryType = this . renderer = null ; OpenLayers . Layer . prototype . destroy . apply ( this , arguments ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . Vector ( this . name , this . getOptions ( ) ) ) ; for ( var a = OpenLayers . Layer . prototype . clone . apply ( this , [ a ] ) , b = this . features , c = b . length , d = Array ( c ) , e = 0 ; e < c ; ++ e ) d [ e ] = b [ e ] . clone ( ) ; a . features = d ; return a } , refresh : function ( a ) { this . calculateInRange ( ) &&
this . visibility && this . events . triggerEvent ( "refresh" , a ) } , assignRenderer : function ( ) { for ( var a = 0 , b = this . renderers . length ; a < b ; a ++ ) { var c = this . renderers [ a ] ; if ( ( c = "function" == typeof c ? c : OpenLayers . Renderer [ c ] ) && c . prototype . supported ( ) ) { this . renderer = new c ( this . div , this . rendererOptions ) ; break } } } , displayError : function ( ) { this . reportError && OpenLayers . Console . userError ( OpenLayers . i18n ( "browserNotSupported" , { renderers : this . renderers . join ( "\n" ) } ) ) } , setMap : function ( a ) { OpenLayers . Layer . prototype . setMap . apply ( this ,
arguments ) ; if ( this . renderer ) { this . renderer . map = this . map ; var b = this . map . getSize ( ) ; b . w *= this . ratio ; b . h *= this . ratio ; this . renderer . setSize ( b ) } else this . map . removeLayer ( this ) } , afterAdd : function ( ) { if ( this . strategies ) { var a , b , c ; b = 0 ; for ( c = this . strategies . length ; b < c ; b ++ ) a = this . strategies [ b ] , a . autoActivate && a . activate ( ) } } , removeMap : function ( ) { this . drawn = ! 1 ; if ( this . strategies ) { var a , b , c ; b = 0 ; for ( c = this . strategies . length ; b < c ; b ++ ) a = this . strategies [ b ] , a . autoActivate && a . deactivate ( ) } } , onMapResize : function ( ) { OpenLayers . Layer . prototype . onMapResize . apply ( this ,
arguments ) ; var a = this . map . getSize ( ) ; a . w *= this . ratio ; a . h *= this . ratio ; this . renderer . setSize ( a ) } , moveTo : function ( a , b , c ) { OpenLayers . Layer . prototype . moveTo . apply ( this , arguments ) ; var d = ! 0 ; if ( ! c ) { this . renderer . root . style . visibility = "hidden" ; var d = this . map . getSize ( ) , e = d . w , d = d . h , e = e / 2 * this . ratio - e / 2 , d = d / 2 * this . ratio - d / 2 , e = e + parseInt ( this . map . layerContainerDiv . style . left , 10 ) , e = - Math . round ( e ) , d = d + parseInt ( this . map . layerContainerDiv . style . top , 10 ) , d = - Math . round ( d ) ; this . div . style . left = e + "px" ; this . div . style . top =
d + "px" ; d = this . renderer . setExtent ( this . map . getExtent ( ) . scale ( this . ratio ) , b ) ; this . renderer . root . style . visibility = "visible" ; ! 0 === OpenLayers . IS _GECKO && ( this . div . scrollLeft = this . div . scrollLeft ) ; if ( ! b && d ) for ( var f in this . unrenderedFeatures ) e = this . unrenderedFeatures [ f ] , this . drawFeature ( e ) } if ( ! this . drawn || b || ! d ) { this . drawn = ! 0 ; f = 0 ; for ( d = this . features . length ; f < d ; f ++ ) this . renderer . locked = f !== d - 1 , e = this . features [ f ] , this . drawFeature ( e ) } } , display : function ( a ) { OpenLayers . Layer . prototype . display . apply ( this , arguments ) ;
var b = this . div . style . display ; b != this . renderer . root . style . display && ( this . renderer . root . style . display = b ) } , addFeatures : function ( a , b ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; var c = ! b || ! b . silent ; if ( c ) { var d = { features : a } ; if ( ! 1 === this . events . triggerEvent ( "beforefeaturesadded" , d ) ) return ; a = d . features } for ( var d = [ ] , e = 0 , f = a . length ; e < f ; e ++ ) { this . renderer . locked = e != a . length - 1 ? ! 0 : ! 1 ; var g = a [ e ] ; if ( this . geometryType && ! ( g . geometry instanceof this . geometryType ) ) throw new TypeError ( "addFeatures: component should be an " +
this . geometryType . prototype . CLASS _NAME ) ; g . layer = this ; ! g . style && this . style && ( g . style = OpenLayers . Util . extend ( { } , this . style ) ) ; if ( c ) { if ( ! 1 === this . events . triggerEvent ( "beforefeatureadded" , { feature : g } ) ) continue ; this . preFeatureInsert ( g ) } d . push ( g ) ; this . features . push ( g ) ; this . drawFeature ( g ) ; c && ( this . events . triggerEvent ( "featureadded" , { feature : g } ) , this . onFeatureInsert ( g ) ) } c && this . events . triggerEvent ( "featuresadded" , { features : d } ) } , removeFeatures : function ( a , b ) { if ( a && 0 !== a . length ) { if ( a === this . features ) return this . removeAllFeatures ( b ) ;
OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; a === this . selectedFeatures && ( a = a . slice ( ) ) ; var c = ! b || ! b . silent ; c && this . events . triggerEvent ( "beforefeaturesremoved" , { features : a } ) ; for ( var d = a . length - 1 ; 0 <= d ; d -- ) { this . renderer . locked = 0 != d && a [ d - 1 ] . geometry ? ! 0 : ! 1 ; var e = a [ d ] ; delete this . unrenderedFeatures [ e . id ] ; c && this . events . triggerEvent ( "beforefeatureremoved" , { feature : e } ) ; this . features = OpenLayers . Util . removeItem ( this . features , e ) ; e . layer = null ; e . geometry && this . renderer . eraseFeatures ( e ) ; - 1 != OpenLayers . Util . indexOf ( this . selectedFeatures ,
e ) && OpenLayers . Util . removeItem ( this . selectedFeatures , e ) ; c && this . events . triggerEvent ( "featureremoved" , { feature : e } ) } c && this . events . triggerEvent ( "featuresremoved" , { features : a } ) } } , removeAllFeatures : function ( a ) { var a = ! a || ! a . silent , b = this . features ; a && this . events . triggerEvent ( "beforefeaturesremoved" , { features : b } ) ; for ( var c , d = b . length - 1 ; 0 <= d ; d -- ) c = b [ d ] , a && this . events . triggerEvent ( "beforefeatureremoved" , { feature : c } ) , c . layer = null , a && this . events . triggerEvent ( "featureremoved" , { feature : c } ) ; this . renderer . clear ( ) ;
this . features = [ ] ; this . unrenderedFeatures = { } ; this . selectedFeatures = [ ] ; a && this . events . triggerEvent ( "featuresremoved" , { features : b } ) } , destroyFeatures : function ( a , b ) { void 0 == a && ( a = this . features ) ; if ( a ) { this . removeFeatures ( a , b ) ; for ( var c = a . length - 1 ; 0 <= c ; c -- ) a [ c ] . destroy ( ) } } , drawFeature : function ( a , b ) { if ( this . drawn ) { if ( "object" != typeof b ) { ! b && a . state === OpenLayers . State . DELETE && ( b = "delete" ) ; var c = b || a . renderIntent ; ( b = a . style || this . style ) || ( b = this . styleMap . createSymbolizer ( a , c ) ) } c = this . renderer . drawFeature ( a ,
b ) ; ! 1 === c || null === c ? this . unrenderedFeatures [ a . id ] = a : delete this . unrenderedFeatures [ a . id ] } } , eraseFeatures : function ( a ) { this . renderer . eraseFeatures ( a ) } , getFeatureFromEvent : function ( a ) { if ( ! this . renderer ) throw Error ( "getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it." ) ; var b = null ; ( a = this . renderer . getFeatureIdFromEvent ( a ) ) && ( b = "string" === typeof a ? this . getFeatureById ( a ) : a ) ; return b } , getFeatureBy : function ( a , b ) { for ( var c =
null , d = 0 , e = this . features . length ; d < e ; ++ d ) if ( this . features [ d ] [ a ] == b ) { c = this . features [ d ] ; break } return c } , getFeatureById : function ( a ) { return this . getFeatureBy ( "id" , a ) } , getFeatureByFid : function ( a ) { return this . getFeatureBy ( "fid" , a ) } , getFeaturesByAttribute : function ( a , b ) { var c , d , e = this . features . length , f = [ ] ; for ( c = 0 ; c < e ; c ++ ) ( d = this . features [ c ] ) && d . attributes && d . attributes [ a ] === b && f . push ( d ) ; return f } , onFeatureInsert : function ( ) { } , preFeatureInsert : function ( ) { } , getDataExtent : function ( ) { var a = null , b = this . features ;
if ( b && 0 < b . length ) for ( var c = null , d = 0 , e = b . length ; d < e ; d ++ ) if ( c = b [ d ] . geometry ) null === a && ( a = new OpenLayers . Bounds ) , a . extend ( c . getBounds ( ) ) ; return a } , CLASS _NAME : "OpenLayers.Layer.Vector" } ) ; OpenLayers . Layer . Vector . RootContainer = OpenLayers . Class ( OpenLayers . Layer . Vector , { displayInLayerSwitcher : ! 1 , layers : null , display : function ( ) { } , getFeatureFromEvent : function ( a ) { for ( var b = this . layers , c , d = 0 ; d < b . length ; d ++ ) if ( c = b [ d ] . getFeatureFromEvent ( a ) ) return c } , setMap : function ( a ) { OpenLayers . Layer . Vector . prototype . setMap . apply ( this , arguments ) ; this . collectRoots ( ) ; a . events . register ( "changelayer" , this , this . handleChangeLayer ) } , removeMap : function ( a ) { a . events . unregister ( "changelayer" , this , this . handleChangeLayer ) ;
this . resetRoots ( ) ; OpenLayers . Layer . Vector . prototype . removeMap . apply ( this , arguments ) } , collectRoots : function ( ) { for ( var a , b = 0 ; b < this . map . layers . length ; ++ b ) a = this . map . layers [ b ] , - 1 != OpenLayers . Util . indexOf ( this . layers , a ) && a . renderer . moveRoot ( this . renderer ) } , resetRoots : function ( ) { for ( var a , b = 0 ; b < this . layers . length ; ++ b ) a = this . layers [ b ] , this . renderer && a . renderer . getRenderLayerId ( ) == this . id && this . renderer . moveRoot ( a . renderer ) } , handleChangeLayer : function ( a ) { var b = a . layer ; "order" == a . property && - 1 != OpenLayers . Util . indexOf ( this . layers ,
b ) && ( this . resetRoots ( ) , this . collectRoots ( ) ) } , CLASS _NAME : "OpenLayers.Layer.Vector.RootContainer" } ) ; OpenLayers . Control . SelectFeature = OpenLayers . Class ( OpenLayers . Control , { multipleKey : null , toggleKey : null , multiple : ! 1 , clickout : ! 0 , toggle : ! 1 , hover : ! 1 , highlightOnly : ! 1 , box : ! 1 , onBeforeSelect : function ( ) { } , onSelect : function ( ) { } , onUnselect : function ( ) { } , scope : null , geometryTypes : null , layer : null , layers : null , callbacks : null , selectStyle : null , renderIntent : "select" , handlers : null , initialize : function ( a , b ) { OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; null === this . scope && ( this . scope = this ) ; this . initLayer ( a ) ; var c =
{ click : this . clickFeature , clickout : this . clickoutFeature } ; this . hover && ( c . over = this . overFeature , c . out = this . outFeature ) ; this . callbacks = OpenLayers . Util . extend ( c , this . callbacks ) ; this . handlers = { feature : new OpenLayers . Handler . Feature ( this , this . layer , this . callbacks , { geometryTypes : this . geometryTypes } ) } ; this . box && ( this . handlers . box = new OpenLayers . Handler . Box ( this , { done : this . selectBox } , { boxDivClassName : "olHandlerBoxSelectFeature" } ) ) } , initLayer : function ( a ) { OpenLayers . Util . isArray ( a ) ? ( this . layers = a , this . layer =
new OpenLayers . Layer . Vector . RootContainer ( this . id + "_container" , { layers : a } ) ) : this . layer = a } , destroy : function ( ) { this . active && this . layers && this . map . removeLayer ( this . layer ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) ; this . layers && this . layer . destroy ( ) } , activate : function ( ) { this . active || ( this . layers && this . map . addLayer ( this . layer ) , this . handlers . feature . activate ( ) , this . box && this . handlers . box && this . handlers . box . activate ( ) ) ; return OpenLayers . Control . prototype . activate . apply ( this , arguments ) } , deactivate : function ( ) { this . active &&
( this . handlers . feature . deactivate ( ) , this . handlers . box && this . handlers . box . deactivate ( ) , this . layers && this . map . removeLayer ( this . layer ) ) ; return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) } , unselectAll : function ( a ) { for ( var b = this . layers || [ this . layer ] , c , d , e = 0 ; e < b . length ; ++ e ) { c = b [ e ] ; for ( var f = c . selectedFeatures . length - 1 ; 0 <= f ; -- f ) d = c . selectedFeatures [ f ] , ( ! a || a . except != d ) && this . unselect ( d ) } } , clickFeature : function ( a ) { this . hover || ( - 1 < OpenLayers . Util . indexOf ( a . layer . selectedFeatures , a ) ? this . toggleSelect ( ) ?
this . unselect ( a ) : this . multipleSelect ( ) || this . unselectAll ( { except : a } ) : ( this . multipleSelect ( ) || this . unselectAll ( { except : a } ) , this . select ( a ) ) ) } , multipleSelect : function ( ) { return this . multiple || this . handlers . feature . evt && this . handlers . feature . evt [ this . multipleKey ] } , toggleSelect : function ( ) { return this . toggle || this . handlers . feature . evt && this . handlers . feature . evt [ this . toggleKey ] } , clickoutFeature : function ( ) { ! this . hover && this . clickout && this . unselectAll ( ) } , overFeature : function ( a ) { var b = a . layer ; this . hover && ( this . highlightOnly ?
this . highlight ( a ) : - 1 == OpenLayers . Util . indexOf ( b . selectedFeatures , a ) && this . select ( a ) ) } , outFeature : function ( a ) { if ( this . hover ) if ( this . highlightOnly ) { if ( a . _lastHighlighter == this . id ) if ( a . _prevHighlighter && a . _prevHighlighter != this . id ) { delete a . _lastHighlighter ; var b = this . map . getControl ( a . _prevHighlighter ) ; b && b . highlight ( a ) } else this . unhighlight ( a ) } else this . unselect ( a ) } , highlight : function ( a ) { var b = a . layer ; ! 1 !== this . events . triggerEvent ( "beforefeaturehighlighted" , { feature : a } ) && ( a . _prevHighlighter = a . _lastHighlighter ,
a . _lastHighlighter = this . id , b . drawFeature ( a , this . selectStyle || this . renderIntent ) , this . events . triggerEvent ( "featurehighlighted" , { feature : a } ) ) } , unhighlight : function ( a ) { var b = a . layer ; void 0 == a . _prevHighlighter ? delete a . _lastHighlighter : ( a . _prevHighlighter != this . id && ( a . _lastHighlighter = a . _prevHighlighter ) , delete a . _prevHighlighter ) ; b . drawFeature ( a , a . style || a . layer . style || "default" ) ; this . events . triggerEvent ( "featureunhighlighted" , { feature : a } ) } , select : function ( a ) { var b = this . onBeforeSelect . call ( this . scope ,
a ) , c = a . layer ; ! 1 !== b && ( b = c . events . triggerEvent ( "beforefeatureselected" , { feature : a } ) , ! 1 !== b && ( c . selectedFeatures . push ( a ) , this . highlight ( a ) , this . handlers . feature . lastFeature || ( this . handlers . feature . lastFeature = c . selectedFeatures [ 0 ] ) , c . events . triggerEvent ( "featureselected" , { feature : a } ) , this . onSelect . call ( this . scope , a ) ) ) } , unselect : function ( a ) { var b = a . layer ; this . unhighlight ( a ) ; OpenLayers . Util . removeItem ( b . selectedFeatures , a ) ; b . events . triggerEvent ( "featureunselected" , { feature : a } ) ; this . onUnselect . call ( this . scope ,
a ) } , selectBox : function ( a ) { if ( a instanceof OpenLayers . Bounds ) { var b = this . map . getLonLatFromPixel ( { x : a . left , y : a . bottom } ) , a = this . map . getLonLatFromPixel ( { x : a . right , y : a . top } ) , b = new OpenLayers . Bounds ( b . lon , b . lat , a . lon , a . lat ) ; this . multipleSelect ( ) || this . unselectAll ( ) ; a = this . multiple ; this . multiple = ! 0 ; var c = this . layers || [ this . layer ] ; this . events . triggerEvent ( "boxselectionstart" , { layers : c } ) ; for ( var d , e = 0 ; e < c . length ; ++ e ) { d = c [ e ] ; for ( var f = 0 , g = d . features . length ; f < g ; ++ f ) { var h = d . features [ f ] ; h . getVisibility ( ) && ( null ==
this . geometryTypes || - 1 < OpenLayers . Util . indexOf ( this . geometryTypes , h . geometry . CLASS _NAME ) ) && b . toGeometry ( ) . intersects ( h . geometry ) && - 1 == OpenLayers . Util . indexOf ( d . selectedFeatures , h ) && this . select ( h ) } } this . multiple = a ; this . events . triggerEvent ( "boxselectionend" , { layers : c } ) } } , setMap : function ( a ) { this . handlers . feature . setMap ( a ) ; this . box && this . handlers . box . setMap ( a ) ; OpenLayers . Control . prototype . setMap . apply ( this , arguments ) } , setLayer : function ( a ) { var b = this . active ; this . unselectAll ( ) ; this . deactivate ( ) ; this . layers &&
( this . layer . destroy ( ) , this . layers = null ) ; this . initLayer ( a ) ; this . handlers . feature . layer = this . layer ; b && this . activate ( ) } , CLASS _NAME : "OpenLayers.Control.SelectFeature" } ) ; OpenLayers . Handler . Keyboard = OpenLayers . Class ( OpenLayers . Handler , { KEY _EVENTS : [ "keydown" , "keyup" ] , eventListener : null , observeElement : null , initialize : function ( a , b , c ) { OpenLayers . Handler . prototype . initialize . apply ( this , arguments ) ; this . eventListener = OpenLayers . Function . bindAsEventListener ( this . handleKeyEvent , this ) } , destroy : function ( ) { this . deactivate ( ) ; this . eventListener = null ; OpenLayers . Handler . prototype . destroy . apply ( this , arguments ) } , activate : function ( ) { if ( OpenLayers . Handler . prototype . activate . apply ( this ,
arguments ) ) { this . observeElement = this . observeElement || document ; for ( var a = 0 , b = this . KEY _EVENTS . length ; a < b ; a ++ ) OpenLayers . Event . observe ( this . observeElement , this . KEY _EVENTS [ a ] , this . eventListener ) ; return ! 0 } return ! 1 } , deactivate : function ( ) { var a = ! 1 ; if ( OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) ) { for ( var a = 0 , b = this . KEY _EVENTS . length ; a < b ; a ++ ) OpenLayers . Event . stopObserving ( this . observeElement , this . KEY _EVENTS [ a ] , this . eventListener ) ; a = ! 0 } return a } , handleKeyEvent : function ( a ) { this . checkModifiers ( a ) &&
this . callback ( a . type , [ a ] ) } , CLASS _NAME : "OpenLayers.Handler.Keyboard" } ) ; OpenLayers . Control . ModifyFeature = OpenLayers . Class ( OpenLayers . Control , { geometryTypes : null , clickout : ! 0 , toggle : ! 0 , standalone : ! 1 , layer : null , feature : null , vertices : null , virtualVertices : null , selectControl : null , dragControl : null , handlers : null , deleteCodes : null , virtualStyle : null , vertexRenderIntent : null , mode : null , createVertices : ! 0 , modified : ! 1 , radiusHandle : null , dragHandle : null , onModificationStart : function ( ) { } , onModification : function ( ) { } , onModificationEnd : function ( ) { } , initialize : function ( a , b ) { b = b || { } ; this . layer =
a ; this . vertices = [ ] ; this . virtualVertices = [ ] ; this . virtualStyle = OpenLayers . Util . extend ( { } , this . layer . style || this . layer . styleMap . createSymbolizer ( null , b . vertexRenderIntent ) ) ; this . virtualStyle . fillOpacity = 0.3 ; this . virtualStyle . strokeOpacity = 0.3 ; this . deleteCodes = [ 46 , 68 ] ; this . mode = OpenLayers . Control . ModifyFeature . RESHAPE ; OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; OpenLayers . Util . isArray ( this . deleteCodes ) || ( this . deleteCodes = [ this . deleteCodes ] ) ; var c = this , d = { geometryTypes : this . geometryTypes , clickout : this . clickout ,
toggle : this . toggle , onBeforeSelect : this . beforeSelectFeature , onSelect : this . selectFeature , onUnselect : this . unselectFeature , scope : this } ; ! 1 === this . standalone && ( this . selectControl = new OpenLayers . Control . SelectFeature ( a , d ) ) ; this . dragControl = new OpenLayers . Control . DragFeature ( a , { geometryTypes : [ "OpenLayers.Geometry.Point" ] , onStart : function ( a , b ) { c . dragStart . apply ( c , [ a , b ] ) } , onDrag : function ( a , b ) { c . dragVertex . apply ( c , [ a , b ] ) } , onComplete : function ( a ) { c . dragComplete . apply ( c , [ a ] ) } , featureCallbacks : { over : function ( a ) { ( c . standalone !==
true || a . _sketch || c . feature === a ) && c . dragControl . overFeature . apply ( c . dragControl , [ a ] ) } } } ) ; this . handlers = { keyboard : new OpenLayers . Handler . Keyboard ( this , { keydown : this . handleKeypress } ) } } , destroy : function ( ) { this . layer = null ; this . standalone || this . selectControl . destroy ( ) ; this . dragControl . destroy ( ) ; OpenLayers . Control . prototype . destroy . apply ( this , [ ] ) } , activate : function ( ) { return ( this . standalone || this . selectControl . activate ( ) ) && this . handlers . keyboard . activate ( ) && OpenLayers . Control . prototype . activate . apply ( this ,
arguments ) } , deactivate : function ( ) { var a = ! 1 ; if ( OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) ) { this . layer . removeFeatures ( this . vertices , { silent : ! 0 } ) ; this . layer . removeFeatures ( this . virtualVertices , { silent : ! 0 } ) ; this . vertices = [ ] ; this . dragControl . deactivate ( ) ; var b = ( a = this . feature ) && a . geometry && a . layer ; ! 1 === this . standalone ? ( b && this . selectControl . unselect . apply ( this . selectControl , [ a ] ) , this . selectControl . deactivate ( ) ) : b && this . unselectFeature ( a ) ; this . handlers . keyboard . deactivate ( ) ; a = ! 0 } return a } ,
beforeSelectFeature : function ( a ) { return this . layer . events . triggerEvent ( "beforefeaturemodified" , { feature : a } ) } , selectFeature : function ( a ) { if ( ! this . standalone || ! 1 !== this . beforeSelectFeature ( a ) ) this . feature = a , this . modified = ! 1 , this . resetVertices ( ) , this . dragControl . activate ( ) , this . onModificationStart ( this . feature ) ; var b = a . modified ; if ( a . geometry && ( ! b || ! b . geometry ) ) this . _originalGeometry = a . geometry . clone ( ) } , unselectFeature : function ( a ) { this . layer . removeFeatures ( this . vertices , { silent : ! 0 } ) ; this . vertices = [ ] ; this . layer . destroyFeatures ( this . virtualVertices ,
{ silent : ! 0 } ) ; this . virtualVertices = [ ] ; this . dragHandle && ( this . layer . destroyFeatures ( [ this . dragHandle ] , { silent : ! 0 } ) , delete this . dragHandle ) ; this . radiusHandle && ( this . layer . destroyFeatures ( [ this . radiusHandle ] , { silent : ! 0 } ) , delete this . radiusHandle ) ; this . feature = null ; this . dragControl . deactivate ( ) ; this . onModificationEnd ( a ) ; this . layer . events . triggerEvent ( "afterfeaturemodified" , { feature : a , modified : this . modified } ) ; this . modified = ! 1 } , dragStart : function ( a , b ) { if ( a != this . feature && ( ! a . geometry . parent && a != this . dragHandle &&
a != this . radiusHandle ) && ( ! 1 === this . standalone && this . feature && this . selectControl . clickFeature . apply ( this . selectControl , [ this . feature ] ) , null == this . geometryTypes || - 1 != OpenLayers . Util . indexOf ( this . geometryTypes , a . geometry . CLASS _NAME ) ) ) this . standalone || this . selectControl . clickFeature . apply ( this . selectControl , [ a ] ) , this . dragControl . overFeature . apply ( this . dragControl , [ a ] ) , this . dragControl . lastPixel = b , this . dragControl . handlers . drag . started = ! 0 , this . dragControl . handlers . drag . start = b , this . dragControl . handlers . drag . last =
b } , dragVertex : function ( a , b ) { this . modified = ! 0 ; "OpenLayers.Geometry.Point" == this . feature . geometry . CLASS _NAME ? ( this . feature != a && ( this . feature = a ) , this . layer . events . triggerEvent ( "vertexmodified" , { vertex : a . geometry , feature : this . feature , pixel : b } ) ) : ( a . _index ? ( a . geometry . parent . addComponent ( a . geometry , a . _index ) , delete a . _index , OpenLayers . Util . removeItem ( this . virtualVertices , a ) , this . vertices . push ( a ) ) : a == this . dragHandle ? ( this . layer . removeFeatures ( this . vertices , { silent : ! 0 } ) , this . vertices = [ ] , this . radiusHandle &&
( this . layer . destroyFeatures ( [ this . radiusHandle ] , { silent : ! 0 } ) , this . radiusHandle = null ) ) : a !== this . radiusHandle && this . layer . events . triggerEvent ( "vertexmodified" , { vertex : a . geometry , feature : this . feature , pixel : b } ) , 0 < this . virtualVertices . length && ( this . layer . destroyFeatures ( this . virtualVertices , { silent : ! 0 } ) , this . virtualVertices = [ ] ) , this . layer . drawFeature ( this . feature , this . standalone ? void 0 : this . selectControl . renderIntent ) ) ; this . layer . drawFeature ( a ) } , dragComplete : function ( ) { this . resetVertices ( ) ; this . setFeatureState ( ) ;
this . onModification ( this . feature ) ; this . layer . events . triggerEvent ( "featuremodified" , { feature : this . feature } ) } , setFeatureState : function ( ) { if ( this . feature . state != OpenLayers . State . INSERT && this . feature . state != OpenLayers . State . DELETE && ( this . feature . state = OpenLayers . State . UPDATE , this . modified && this . _originalGeometry ) ) { var a = this . feature ; a . modified = OpenLayers . Util . extend ( a . modified , { geometry : this . _originalGeometry } ) ; delete this . _originalGeometry } } , resetVertices : function ( ) { this . dragControl . feature && this . dragControl . outFeature ( this . dragControl . feature ) ;
0 < this . vertices . length && ( this . layer . removeFeatures ( this . vertices , { silent : ! 0 } ) , this . vertices = [ ] ) ; 0 < this . virtualVertices . length && ( this . layer . removeFeatures ( this . virtualVertices , { silent : ! 0 } ) , this . virtualVertices = [ ] ) ; this . dragHandle && ( this . layer . destroyFeatures ( [ this . dragHandle ] , { silent : ! 0 } ) , this . dragHandle = null ) ; this . radiusHandle && ( this . layer . destroyFeatures ( [ this . radiusHandle ] , { silent : ! 0 } ) , this . radiusHandle = null ) ; this . feature && "OpenLayers.Geometry.Point" != this . feature . geometry . CLASS _NAME && ( this . mode &
OpenLayers . Control . ModifyFeature . DRAG && this . collectDragHandle ( ) , this . mode & ( OpenLayers . Control . ModifyFeature . ROTATE | OpenLayers . Control . ModifyFeature . RESIZE ) && this . collectRadiusHandle ( ) , this . mode & OpenLayers . Control . ModifyFeature . RESHAPE && ( this . mode & OpenLayers . Control . ModifyFeature . RESIZE || this . collectVertices ( ) ) ) } , handleKeypress : function ( a ) { var b = a . keyCode ; if ( this . feature && - 1 != OpenLayers . Util . indexOf ( this . deleteCodes , b ) && ( b = this . dragControl . feature ) && - 1 != OpenLayers . Util . indexOf ( this . vertices , b ) && ! this . dragControl . handlers . drag . dragging &&
b . geometry . parent ) b . geometry . parent . removeComponent ( b . geometry ) , this . layer . events . triggerEvent ( "vertexremoved" , { vertex : b . geometry , feature : this . feature , pixel : a . xy } ) , this . layer . drawFeature ( this . feature , this . standalone ? void 0 : this . selectControl . renderIntent ) , this . modified = ! 0 , this . resetVertices ( ) , this . setFeatureState ( ) , this . onModification ( this . feature ) , this . layer . events . triggerEvent ( "featuremodified" , { feature : this . feature } ) } , collectVertices : function ( ) { function a ( c ) { var d , e , f ; if ( "OpenLayers.Geometry.Point" ==
c . CLASS _NAME ) e = new OpenLayers . Feature . Vector ( c ) , e . _sketch = ! 0 , e . renderIntent = b . vertexRenderIntent , b . vertices . push ( e ) ; else { f = c . components . length ; "OpenLayers.Geometry.LinearRing" == c . CLASS _NAME && ( f -= 1 ) ; for ( d = 0 ; d < f ; ++ d ) e = c . components [ d ] , "OpenLayers.Geometry.Point" == e . CLASS _NAME ? ( e = new OpenLayers . Feature . Vector ( e ) , e . _sketch = ! 0 , e . renderIntent = b . vertexRenderIntent , b . vertices . push ( e ) ) : a ( e ) ; if ( b . createVertices && "OpenLayers.Geometry.MultiPoint" != c . CLASS _NAME ) { d = 0 ; for ( f = c . components . length ; d < f - 1 ; ++ d ) { e = c . components [ d ] ;
var g = c . components [ d + 1 ] ; "OpenLayers.Geometry.Point" == e . CLASS _NAME && "OpenLayers.Geometry.Point" == g . CLASS _NAME && ( e = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Point ( ( e . x + g . x ) / 2 , ( e . y + g . y ) / 2 ) , null , b . virtualStyle ) , e . geometry . parent = c , e . _index = d + 1 , e . _sketch = ! 0 , b . virtualVertices . push ( e ) ) } } } } this . vertices = [ ] ; this . virtualVertices = [ ] ; var b = this ; a . call ( this , this . feature . geometry ) ; this . layer . addFeatures ( this . virtualVertices , { silent : ! 0 } ) ; this . layer . addFeatures ( this . vertices , { silent : ! 0 } ) } , collectDragHandle : function ( ) { var a =
this . feature . geometry , b = a . getBounds ( ) . getCenterLonLat ( ) , b = new OpenLayers . Geometry . Point ( b . lon , b . lat ) , c = new OpenLayers . Feature . Vector ( b ) ; b . move = function ( b , c ) { OpenLayers . Geometry . Point . prototype . move . call ( this , b , c ) ; a . move ( b , c ) } ; c . _sketch = ! 0 ; this . dragHandle = c ; this . dragHandle . renderIntent = this . vertexRenderIntent ; this . layer . addFeatures ( [ this . dragHandle ] , { silent : ! 0 } ) } , collectRadiusHandle : function ( ) { var a = this . feature . geometry , b = a . getBounds ( ) , c = b . getCenterLonLat ( ) , d = new OpenLayers . Geometry . Point ( c . lon , c . lat ) ,
b = new OpenLayers . Geometry . Point ( b . right , b . bottom ) , c = new OpenLayers . Feature . Vector ( b ) , e = this . mode & OpenLayers . Control . ModifyFeature . RESIZE , f = this . mode & OpenLayers . Control . ModifyFeature . RESHAPE , g = this . mode & OpenLayers . Control . ModifyFeature . ROTATE ; b . move = function ( b , c ) { OpenLayers . Geometry . Point . prototype . move . call ( this , b , c ) ; var j = this . x - d . x , k = this . y - d . y , l = j - b , m = k - c ; if ( g ) { var n = Math . atan2 ( m , l ) , n = Math . atan2 ( k , j ) - n , n = n * ( 180 / Math . PI ) ; a . rotate ( n , d ) } if ( e ) { var o ; f ? ( k /= m , o = j / l / k ) : ( l = Math . sqrt ( l * l + m * m ) , k = Math . sqrt ( j *
j + k * k ) / l ) ; a . resize ( k , d , o ) } } ; c . _sketch = ! 0 ; this . radiusHandle = c ; this . radiusHandle . renderIntent = this . vertexRenderIntent ; this . layer . addFeatures ( [ this . radiusHandle ] , { silent : ! 0 } ) } , setMap : function ( a ) { this . standalone || this . selectControl . setMap ( a ) ; this . dragControl . setMap ( a ) ; OpenLayers . Control . prototype . setMap . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Control.ModifyFeature" } ) ; OpenLayers . Control . ModifyFeature . RESHAPE = 1 ; OpenLayers . Control . ModifyFeature . RESIZE = 2 ; OpenLayers . Control . ModifyFeature . ROTATE = 4 ;
OpenLayers . Control . ModifyFeature . DRAG = 8 ; OpenLayers . Layer . Bing = OpenLayers . Class ( OpenLayers . Layer . XYZ , { key : null , serverResolutions : [ 156543.03390625 , 78271.516953125 , 39135.7584765625 , 19567.87923828125 , 9783.939619140625 , 4891.9698095703125 , 2445.9849047851562 , 1222.9924523925781 , 611.4962261962891 , 305.74811309814453 , 152.87405654907226 , 76.43702827453613 , 38.218514137268066 , 19.109257068634033 , 9.554628534317017 , 4.777314267158508 , 2.388657133579254 , 1.194328566789627 , 0.5971642833948135 , 0.29858214169740677 , 0.14929107084870338 , 0.07464553542435169 ] , attributionTemplate : '<span class="olBingAttribution ${type}"><div><a target="_blank" href="http://www.bing.com/maps/"><img src="${logo}" /></a></div>${copyrights}<a style="white-space: nowrap" target="_blank" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a></span>' ,
metadata : null , type : "Road" , culture : "en-US" , metadataParams : null , tileOptions : null , initialize : function ( a ) { a = OpenLayers . Util . applyDefaults ( { sphericalMercator : ! 0 } , a ) ; OpenLayers . Layer . XYZ . prototype . initialize . apply ( this , [ a . name || "Bing " + ( a . type || this . type ) , null , a ] ) ; this . tileOptions = OpenLayers . Util . extend ( { crossOriginKeyword : "anonymous" } , this . options . tileOptions ) ; this . loadMetadata ( ) } , loadMetadata : function ( ) { this . _callbackId = "_callback_" + this . id . replace ( /\./g , "_" ) ; window [ this . _callbackId ] = OpenLayers . Function . bind ( OpenLayers . Layer . Bing . processMetadata ,
this ) ; var a = OpenLayers . Util . applyDefaults ( { key : this . key , jsonp : this . _callbackId , include : "ImageryProviders" } , this . metadataParams ) , a = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/" + this . type + "?" + OpenLayers . Util . getParameterString ( a ) , b = document . createElement ( "script" ) ; b . type = "text/javascript" ; b . src = a ; b . id = this . _callbackId ; document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( b ) } , initLayer : function ( ) { var a = this . metadata . resourceSets [ 0 ] . resources [ 0 ] , b = a . imageUrl . replace ( "{quadkey}" , "${quadkey}" ) ,
b = b . replace ( "{culture}" , this . culture ) ; this . url = [ ] ; for ( var c = 0 ; c < a . imageUrlSubdomains . length ; ++ c ) this . url . push ( b . replace ( "{subdomain}" , a . imageUrlSubdomains [ c ] ) ) ; this . addOptions ( { maxResolution : Math . min ( this . serverResolutions [ a . zoomMin ] , this . maxResolution || Number . POSITIVE _INFINITY ) , numZoomLevels : Math . min ( a . zoomMax + 1 - a . zoomMin , this . numZoomLevels ) } , ! 0 ) } , getURL : function ( a ) { if ( this . url ) { for ( var b = this . getXYZ ( a ) , a = b . x , c = b . y , b = b . z , d = [ ] , e = b ; 0 < e ; -- e ) { var f = "0" , g = 1 << e - 1 ; 0 != ( a & g ) && f ++ ; 0 != ( c & g ) && ( f ++ , f ++ ) ; d . push ( f ) } d =
d . join ( "" ) ; a = this . selectUrl ( "" + a + c + b , this . url ) ; return OpenLayers . String . format ( a , { quadkey : d } ) } } , updateAttribution : function ( ) { var a = this . metadata ; if ( a . resourceSets && this . map && this . map . center ) { var b = a . resourceSets [ 0 ] . resources [ 0 ] , c = this . map . getExtent ( ) . transform ( this . map . getProjectionObject ( ) , new OpenLayers . Projection ( "EPSG:4326" ) ) , b = b . imageryProviders , d = OpenLayers . Util . indexOf ( this . serverResolutions , this . getServerResolution ( ) ) , e = "" , f , g , h , i , j , k , l ; g = 0 ; for ( h = b . length ; g < h ; ++ g ) { f = b [ g ] ; i = 0 ; for ( j = f . coverageAreas . length ; i <
j ; ++ i ) l = f . coverageAreas [ i ] , k = OpenLayers . Bounds . fromArray ( l . bbox , ! 0 ) , c . intersectsBounds ( k ) && ( d <= l . zoomMax && d >= l . zoomMin ) && ( e += f . attribution + " " ) } this . attribution = OpenLayers . String . format ( this . attributionTemplate , { type : this . type . toLowerCase ( ) , logo : a . brandLogoUri , copyrights : e } ) ; this . map && this . map . events . triggerEvent ( "changelayer" , { layer : this , property : "attribution" } ) } } , setMap : function ( ) { OpenLayers . Layer . XYZ . prototype . setMap . apply ( this , arguments ) ; this . updateAttribution ( ) ; this . map . events . register ( "moveend" ,
this , this . updateAttribution ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . Bing ( this . options ) ) ; return a = OpenLayers . Layer . XYZ . prototype . clone . apply ( this , [ a ] ) } , destroy : function ( ) { this . map && this . map . events . unregister ( "moveend" , this , this . updateAttribution ) ; OpenLayers . Layer . XYZ . prototype . destroy . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Layer.Bing" } ) ;
OpenLayers . Layer . Bing . processMetadata = function ( a ) { this . metadata = a ; this . initLayer ( ) ; a = document . getElementById ( this . _callbackId ) ; a . parentNode . removeChild ( a ) ; window [ this . _callbackId ] = void 0 ; delete this . _callbackId } ; OpenLayers . Layer . PointGrid = OpenLayers . Class ( OpenLayers . Layer . Vector , { dx : null , dy : null , ratio : 1.5 , maxFeatures : 250 , rotation : 0 , origin : null , gridBounds : null , initialize : function ( a ) { a = a || { } ; OpenLayers . Layer . Vector . prototype . initialize . apply ( this , [ a . name , a ] ) } , setMap : function ( a ) { OpenLayers . Layer . Vector . prototype . setMap . apply ( this , arguments ) ; a . events . register ( "moveend" , this , this . onMoveEnd ) } , removeMap : function ( a ) { a . events . unregister ( "moveend" , this , this . onMoveEnd ) ; OpenLayers . Layer . Vector . prototype . removeMap . apply ( this ,
arguments ) } , setRatio : function ( a ) { this . ratio = a ; this . updateGrid ( ! 0 ) } , setMaxFeatures : function ( a ) { this . maxFeatures = a ; this . updateGrid ( ! 0 ) } , setSpacing : function ( a , b ) { this . dx = a ; this . dy = b || a ; this . updateGrid ( ! 0 ) } , setOrigin : function ( a ) { this . origin = a ; this . updateGrid ( ! 0 ) } , getOrigin : function ( ) { this . origin || ( this . origin = this . map . getExtent ( ) . getCenterLonLat ( ) ) ; return this . origin } , setRotation : function ( a ) { this . rotation = a ; this . updateGrid ( ! 0 ) } , onMoveEnd : function ( ) { this . updateGrid ( ) } , getViewBounds : function ( ) { var a = this . map . getExtent ( ) ;
if ( this . rotation ) { var b = this . getOrigin ( ) , b = new OpenLayers . Geometry . Point ( b . lon , b . lat ) , a = a . toGeometry ( ) ; a . rotate ( - this . rotation , b ) ; a = a . getBounds ( ) } return a } , updateGrid : function ( a ) { if ( a || this . invalidBounds ( ) ) { var b = this . getViewBounds ( ) , c = this . getOrigin ( ) , a = new OpenLayers . Geometry . Point ( c . lon , c . lat ) , d = b . getWidth ( ) , e = b . getHeight ( ) , f = d / e , g = Math . sqrt ( this . dx * this . dy * this . maxFeatures / f ) , d = Math . min ( d * this . ratio , g * f ) , e = Math . min ( e * this . ratio , g ) , b = b . getCenterLonLat ( ) ; this . gridBounds = new OpenLayers . Bounds ( b . lon -
d / 2 , b . lat - e / 2 , b . lon + d / 2 , b . lat + e / 2 ) ; for ( var b = Math . floor ( e / this . dy ) , d = Math . floor ( d / this . dx ) , e = c . lon + this . dx * Math . ceil ( ( this . gridBounds . left - c . lon ) / this . dx ) , c = c . lat + this . dy * Math . ceil ( ( this . gridBounds . bottom - c . lat ) / this . dy ) , g = Array ( b * d ) , h , i = 0 ; i < d ; ++ i ) for ( var f = e + i * this . dx , j = 0 ; j < b ; ++ j ) h = c + j * this . dy , h = new OpenLayers . Geometry . Point ( f , h ) , this . rotation && h . rotate ( this . rotation , a ) , g [ i * b + j ] = new OpenLayers . Feature . Vector ( h ) ; this . destroyFeatures ( this . features , { silent : ! 0 } ) ; this . addFeatures ( g , { silent : ! 0 } ) } } , invalidBounds : function ( ) { return ! this . gridBounds ||
! this . gridBounds . containsBounds ( this . getViewBounds ( ) ) } , CLASS _NAME : "OpenLayers.Layer.PointGrid" } ) ; OpenLayers . Handler . MouseWheel = OpenLayers . Class ( OpenLayers . Handler , { wheelListener : null , mousePosition : null , interval : 0 , delta : 0 , cumulative : ! 0 , initialize : function ( a , b , c ) { OpenLayers . Handler . prototype . initialize . apply ( this , arguments ) ; this . wheelListener = OpenLayers . Function . bindAsEventListener ( this . onWheelEvent , this ) } , destroy : function ( ) { OpenLayers . Handler . prototype . destroy . apply ( this , arguments ) ; this . wheelListener = null } , onWheelEvent : function ( a ) { if ( this . map && this . checkModifiers ( a ) ) { for ( var b = ! 1 , c = ! 1 , d = ! 1 , e =
OpenLayers . Event . element ( a ) ; null != e && ! d && ! b ; ) { if ( ! b ) try { var f = e . currentStyle ? e . currentStyle . overflow : document . defaultView . getComputedStyle ( e , null ) . getPropertyValue ( "overflow" ) , b = f && "auto" == f || "scroll" == f } catch ( g ) { } if ( ! c ) for ( var d = 0 , h = this . map . layers . length ; d < h ; d ++ ) if ( e == this . map . layers [ d ] . div || e == this . map . layers [ d ] . pane ) { c = ! 0 ; break } d = e == this . map . div ; e = e . parentNode } ! b && d && ( c && ( ( b = 0 , a || ( a = window . event ) , a . wheelDelta ? ( b = a . wheelDelta / 120 , window . opera && 9.2 > window . opera . version ( ) && ( b = - b ) ) : a . detail && ( b = - a . detail /
3 ) , this . delta += b , this . interval ) ? ( window . clearTimeout ( this . _timeoutId ) , this . _timeoutId = window . setTimeout ( OpenLayers . Function . bind ( function ( ) { this . wheelZoom ( a ) } , this ) , this . interval ) ) : this . wheelZoom ( a ) ) , OpenLayers . Event . stop ( a ) ) } } , wheelZoom : function ( a ) { var b = this . delta ; this . delta = 0 ; b && ( this . mousePosition && ( a . xy = this . mousePosition ) , a . xy || ( a . xy = this . map . getPixelFromLonLat ( this . map . getCenter ( ) ) ) , 0 > b ? this . callback ( "down" , [ a , this . cumulative ? b : - 1 ] ) : this . callback ( "up" , [ a , this . cumulative ? b : 1 ] ) ) } , mousemove : function ( a ) { this . mousePosition =
a . xy } , activate : function ( a ) { if ( OpenLayers . Handler . prototype . activate . apply ( this , arguments ) ) { var b = this . wheelListener ; OpenLayers . Event . observe ( window , "DOMMouseScroll" , b ) ; OpenLayers . Event . observe ( window , "mousewheel" , b ) ; OpenLayers . Event . observe ( document , "mousewheel" , b ) ; return ! 0 } return ! 1 } , deactivate : function ( a ) { if ( OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) ) { var b = this . wheelListener ; OpenLayers . Event . stopObserving ( window , "DOMMouseScroll" , b ) ; OpenLayers . Event . stopObserving ( window , "mousewheel" ,
b ) ; OpenLayers . Event . stopObserving ( document , "mousewheel" , b ) ; return ! 0 } return ! 1 } , CLASS _NAME : "OpenLayers.Handler.MouseWheel" } ) ; OpenLayers . Symbolizer = OpenLayers . Class ( { zIndex : 0 , initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) } , clone : function ( ) { return new ( eval ( this . CLASS _NAME ) ) ( OpenLayers . Util . extend ( { } , this ) ) } , CLASS _NAME : "OpenLayers.Symbolizer" } ) ; OpenLayers . Symbolizer . Raster = OpenLayers . Class ( OpenLayers . Symbolizer , { initialize : function ( a ) { OpenLayers . Symbolizer . prototype . initialize . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Symbolizer.Raster" } ) ; OpenLayers . Rule = OpenLayers . Class ( { id : null , name : null , title : null , description : null , context : null , filter : null , elseFilter : ! 1 , symbolizer : null , symbolizers : null , minScaleDenominator : null , maxScaleDenominator : null , initialize : function ( a ) { this . symbolizer = { } ; OpenLayers . Util . extend ( this , a ) ; this . symbolizers && delete this . symbolizer ; this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) } , destroy : function ( ) { for ( var a in this . symbolizer ) this . symbolizer [ a ] = null ; this . symbolizer = null ; delete this . symbolizers } , evaluate : function ( a ) { var b =
this . getContext ( a ) , c = ! 0 ; if ( this . minScaleDenominator || this . maxScaleDenominator ) var d = a . layer . map . getScale ( ) ; this . minScaleDenominator && ( c = d >= OpenLayers . Style . createLiteral ( this . minScaleDenominator , b ) ) ; c && this . maxScaleDenominator && ( c = d < OpenLayers . Style . createLiteral ( this . maxScaleDenominator , b ) ) ; c && this . filter && ( c = "OpenLayers.Filter.FeatureId" == this . filter . CLASS _NAME ? this . filter . evaluate ( a ) : this . filter . evaluate ( b ) ) ; return c } , getContext : function ( a ) { var b = this . context ; b || ( b = a . attributes || a . data ) ; "function" ==
typeof this . context && ( b = this . context ( a ) ) ; return b } , clone : function ( ) { var a = OpenLayers . Util . extend ( { } , this ) ; if ( this . symbolizers ) { var b = this . symbolizers . length ; a . symbolizers = Array ( b ) ; for ( var c = 0 ; c < b ; ++ c ) a . symbolizers [ c ] = this . symbolizers [ c ] . clone ( ) } else { a . symbolizer = { } ; for ( var d in this . symbolizer ) b = this . symbolizer [ d ] , c = typeof b , "object" === c ? a . symbolizer [ d ] = OpenLayers . Util . extend ( { } , b ) : "string" === c && ( a . symbolizer [ d ] = b ) } a . filter = this . filter && this . filter . clone ( ) ; a . context = this . context && OpenLayers . Util . extend ( { } ,
this . context ) ; return new OpenLayers . Rule ( a ) } , CLASS _NAME : "OpenLayers.Rule" } ) ; OpenLayers . Filter . Spatial = OpenLayers . Class ( OpenLayers . Filter , { type : null , property : null , value : null , distance : null , distanceUnits : null , evaluate : function ( a ) { var b = ! 1 ; switch ( this . type ) { case OpenLayers . Filter . Spatial . BBOX : case OpenLayers . Filter . Spatial . INTERSECTS : if ( a . geometry ) { var c = this . value ; "OpenLayers.Bounds" == this . value . CLASS _NAME && ( c = this . value . toGeometry ( ) ) ; a . geometry . intersects ( c ) && ( b = ! 0 ) } break ; default : throw Error ( "evaluate is not implemented for this filter type." ) ; } return b } , clone : function ( ) { var a =
OpenLayers . Util . applyDefaults ( { value : this . value && this . value . clone && this . value . clone ( ) } , this ) ; return new OpenLayers . Filter . Spatial ( a ) } , CLASS _NAME : "OpenLayers.Filter.Spatial" } ) ; OpenLayers . Filter . Spatial . BBOX = "BBOX" ; OpenLayers . Filter . Spatial . INTERSECTS = "INTERSECTS" ; OpenLayers . Filter . Spatial . DWITHIN = "DWITHIN" ; OpenLayers . Filter . Spatial . WITHIN = "WITHIN" ; OpenLayers . Filter . Spatial . CONTAINS = "CONTAINS" ; OpenLayers . Format . SLD = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { profile : null , defaultVersion : "1.0.0" , stringifyOutput : ! 0 , namedLayersAsArray : ! 1 , CLASS _NAME : "OpenLayers.Format.SLD" } ) ; OpenLayers . Symbolizer . Polygon = OpenLayers . Class ( OpenLayers . Symbolizer , { initialize : function ( a ) { OpenLayers . Symbolizer . prototype . initialize . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Symbolizer.Polygon" } ) ; OpenLayers . Format . GML . v2 = OpenLayers . Class ( OpenLayers . Format . GML . Base , { schemaLocation : "http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd" , initialize : function ( a ) { OpenLayers . Format . GML . Base . prototype . initialize . apply ( this , [ a ] ) } , readers : { gml : OpenLayers . Util . applyDefaults ( { outerBoundaryIs : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . outer = c . components [ 0 ] } , innerBoundaryIs : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . inner . push ( c . components [ 0 ] ) } , Box : function ( a , b ) { var c =
{ } ; this . readChildNodes ( a , c ) ; b . components || ( b . components = [ ] ) ; var d = c . points [ 0 ] , c = c . points [ 1 ] ; b . components . push ( new OpenLayers . Bounds ( d . x , d . y , c . x , c . y ) ) } } , OpenLayers . Format . GML . Base . prototype . readers . gml ) , feature : OpenLayers . Format . GML . Base . prototype . readers . feature , wfs : OpenLayers . Format . GML . Base . prototype . readers . wfs } , write : function ( a ) { a = this . writeNode ( OpenLayers . Util . isArray ( a ) ? "wfs:FeatureCollection" : "gml:featureMember" , a ) ; this . setAttributeNS ( a , this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ;
return OpenLayers . Format . XML . prototype . write . apply ( this , [ a ] ) } , writers : { gml : OpenLayers . Util . applyDefaults ( { Point : function ( a ) { var b = this . createElementNSPlus ( "gml:Point" ) ; this . writeNode ( "coordinates" , [ a ] , b ) ; return b } , coordinates : function ( a ) { for ( var b = a . length , c = Array ( b ) , d , e = 0 ; e < b ; ++ e ) d = a [ e ] , c [ e ] = this . xy ? d . x + "," + d . y : d . y + "," + d . x , void 0 != d . z && ( c [ e ] += "," + d . z ) ; return this . createElementNSPlus ( "gml:coordinates" , { attributes : { decimal : "." , cs : "," , ts : " " } , value : 1 == b ? c [ 0 ] : c . join ( " " ) } ) } , LineString : function ( a ) { var b =
this . createElementNSPlus ( "gml:LineString" ) ; this . writeNode ( "coordinates" , a . components , b ) ; return b } , Polygon : function ( a ) { var b = this . createElementNSPlus ( "gml:Polygon" ) ; this . writeNode ( "outerBoundaryIs" , a . components [ 0 ] , b ) ; for ( var c = 1 ; c < a . components . length ; ++ c ) this . writeNode ( "innerBoundaryIs" , a . components [ c ] , b ) ; return b } , outerBoundaryIs : function ( a ) { var b = this . createElementNSPlus ( "gml:outerBoundaryIs" ) ; this . writeNode ( "LinearRing" , a , b ) ; return b } , innerBoundaryIs : function ( a ) { var b = this . createElementNSPlus ( "gml:innerBoundaryIs" ) ;
this . writeNode ( "LinearRing" , a , b ) ; return b } , LinearRing : function ( a ) { var b = this . createElementNSPlus ( "gml:LinearRing" ) ; this . writeNode ( "coordinates" , a . components , b ) ; return b } , Box : function ( a ) { var b = this . createElementNSPlus ( "gml:Box" ) ; this . writeNode ( "coordinates" , [ { x : a . left , y : a . bottom } , { x : a . right , y : a . top } ] , b ) ; this . srsName && b . setAttribute ( "srsName" , this . srsName ) ; return b } } , OpenLayers . Format . GML . Base . prototype . writers . gml ) , feature : OpenLayers . Format . GML . Base . prototype . writers . feature , wfs : OpenLayers . Format . GML . Base . prototype . writers . wfs } ,
CLASS _NAME : "OpenLayers.Format.GML.v2" } ) ; OpenLayers . Format . Filter . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . GML . v2 , OpenLayers . Format . Filter . v1 , { VERSION : "1.0.0" , schemaLocation : "http://www.opengis.net/ogc/filter/1.0.0/filter.xsd" , initialize : function ( a ) { OpenLayers . Format . GML . v2 . prototype . initialize . apply ( this , [ a ] ) } , readers : { ogc : OpenLayers . Util . applyDefaults ( { PropertyIsEqualTo : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . EQUAL _TO } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsNotEqualTo : function ( a ,
b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . NOT _EQUAL _TO } ) ; this . readChildNodes ( a , c ) ; b . filters . push ( c ) } , PropertyIsLike : function ( a , b ) { var c = new OpenLayers . Filter . Comparison ( { type : OpenLayers . Filter . Comparison . LIKE } ) ; this . readChildNodes ( a , c ) ; var d = a . getAttribute ( "wildCard" ) , e = a . getAttribute ( "singleChar" ) , f = a . getAttribute ( "escape" ) ; c . value2regex ( d , e , f ) ; b . filters . push ( c ) } } , OpenLayers . Format . Filter . v1 . prototype . readers . ogc ) , gml : OpenLayers . Format . GML . v2 . prototype . readers . gml ,
feature : OpenLayers . Format . GML . v2 . prototype . readers . feature } , writers : { ogc : OpenLayers . Util . applyDefaults ( { PropertyIsEqualTo : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsEqualTo" ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsNotEqualTo : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsNotEqualTo" ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeOgcExpression ( a . value , b ) ; return b } , PropertyIsLike : function ( a ) { var b = this . createElementNSPlus ( "ogc:PropertyIsLike" ,
{ attributes : { wildCard : "*" , singleChar : "." , escape : "!" } } ) ; this . writeNode ( "PropertyName" , a , b ) ; this . writeNode ( "Literal" , a . regex2value ( ) , b ) ; return b } , BBOX : function ( a ) { var b = this . createElementNSPlus ( "ogc:BBOX" ) ; a . property && this . writeNode ( "PropertyName" , a , b ) ; var c = this . writeNode ( "gml:Box" , a . value , b ) ; a . projection && c . setAttribute ( "srsName" , a . projection ) ; return b } } , OpenLayers . Format . Filter . v1 . prototype . writers . ogc ) , gml : OpenLayers . Format . GML . v2 . prototype . writers . gml , feature : OpenLayers . Format . GML . v2 . prototype . writers . feature } ,
writeSpatial : function ( a , b ) { var c = this . createElementNSPlus ( "ogc:" + b ) ; this . writeNode ( "PropertyName" , a , c ) ; if ( a . value instanceof OpenLayers . Filter . Function ) this . writeNode ( "Function" , a . value , c ) ; else { var d ; d = a . value instanceof OpenLayers . Geometry ? this . writeNode ( "feature:_geometry" , a . value ) . firstChild : this . writeNode ( "gml:Box" , a . value ) ; a . projection && d . setAttribute ( "srsName" , a . projection ) ; c . appendChild ( d ) } return c } , CLASS _NAME : "OpenLayers.Format.Filter.v1_0_0" } ) ; OpenLayers . Format . WFST . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . Filter . v1 _0 _0 , OpenLayers . Format . WFST . v1 , { version : "1.0.0" , srsNameInQuery : ! 1 , schemaLocations : { wfs : "http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" } , initialize : function ( a ) { OpenLayers . Format . Filter . v1 _0 _0 . prototype . initialize . apply ( this , [ a ] ) ; OpenLayers . Format . WFST . v1 . prototype . initialize . apply ( this , [ a ] ) } , readNode : function ( a , b ) { return OpenLayers . Format . GML . v2 . prototype . readNode . apply ( this , [ a , b ] ) } , readers : { wfs : OpenLayers . Util . applyDefaults ( { WFS _TransactionResponse : function ( a ,
b ) { b . insertIds = [ ] ; b . success = ! 1 ; this . readChildNodes ( a , b ) } , InsertResult : function ( a , b ) { var c = { fids : [ ] } ; this . readChildNodes ( a , c ) ; b . insertIds . push ( c . fids [ 0 ] ) } , TransactionResult : function ( a , b ) { this . readChildNodes ( a , b ) } , Status : function ( a , b ) { this . readChildNodes ( a , b ) } , SUCCESS : function ( a , b ) { b . success = ! 0 } } , OpenLayers . Format . WFST . v1 . prototype . readers . wfs ) , gml : OpenLayers . Format . GML . v2 . prototype . readers . gml , feature : OpenLayers . Format . GML . v2 . prototype . readers . feature , ogc : OpenLayers . Format . Filter . v1 _0 _0 . prototype . readers . ogc } ,
writers : { wfs : OpenLayers . Util . applyDefaults ( { Query : function ( a ) { var a = OpenLayers . Util . extend ( { featureNS : this . featureNS , featurePrefix : this . featurePrefix , featureType : this . featureType , srsName : this . srsName , srsNameInQuery : this . srsNameInQuery } , a ) , b = a . featurePrefix , c = this . createElementNSPlus ( "wfs:Query" , { attributes : { typeName : ( b ? b + ":" : "" ) + a . featureType } } ) ; a . srsNameInQuery && a . srsName && c . setAttribute ( "srsName" , a . srsName ) ; a . featureNS && c . setAttribute ( "xmlns:" + b , a . featureNS ) ; if ( a . propertyNames ) for ( var b = 0 , d = a . propertyNames . length ; b <
d ; b ++ ) this . writeNode ( "ogc:PropertyName" , { property : a . propertyNames [ b ] } , c ) ; a . filter && ( this . setFilterProperty ( a . filter ) , this . writeNode ( "ogc:Filter" , a . filter , c ) ) ; return c } } , OpenLayers . Format . WFST . v1 . prototype . writers . wfs ) , gml : OpenLayers . Format . GML . v2 . prototype . writers . gml , feature : OpenLayers . Format . GML . v2 . prototype . writers . feature , ogc : OpenLayers . Format . Filter . v1 _0 _0 . prototype . writers . ogc } , CLASS _NAME : "OpenLayers.Format.WFST.v1_0_0" } ) ; OpenLayers . ElementsIndexer = OpenLayers . Class ( { maxZIndex : null , order : null , indices : null , compare : null , initialize : function ( a ) { this . compare = a ? OpenLayers . ElementsIndexer . IndexingMethods . Z _ORDER _Y _ORDER : OpenLayers . ElementsIndexer . IndexingMethods . Z _ORDER _DRAWING _ORDER ; this . clear ( ) } , insert : function ( a ) { this . exists ( a ) && this . remove ( a ) ; var b = a . id ; this . determineZIndex ( a ) ; for ( var c = - 1 , d = this . order . length , e ; 1 < d - c ; ) e = parseInt ( ( c + d ) / 2 ) , 0 < this . compare ( this , a , OpenLayers . Util . getElement ( this . order [ e ] ) ) ? c = e : d = e ; this . order . splice ( d ,
0 , b ) ; this . indices [ b ] = this . getZIndex ( a ) ; return this . getNextElement ( d ) } , remove : function ( a ) { var a = a . id , b = OpenLayers . Util . indexOf ( this . order , a ) ; 0 <= b && ( this . order . splice ( b , 1 ) , delete this . indices [ a ] , this . maxZIndex = 0 < this . order . length ? this . indices [ this . order [ this . order . length - 1 ] ] : 0 ) } , clear : function ( ) { this . order = [ ] ; this . indices = { } ; this . maxZIndex = 0 } , exists : function ( a ) { return null != this . indices [ a . id ] } , getZIndex : function ( a ) { return a . _style . graphicZIndex } , determineZIndex : function ( a ) { var b = a . _style . graphicZIndex ;
null == b ? ( b = this . maxZIndex , a . _style . graphicZIndex = b ) : b > this . maxZIndex && ( this . maxZIndex = b ) } , getNextElement : function ( a ) { a += 1 ; if ( a < this . order . length ) { var b = OpenLayers . Util . getElement ( this . order [ a ] ) ; void 0 == b && ( b = this . getNextElement ( a ) ) ; return b } return null } , CLASS _NAME : "OpenLayers.ElementsIndexer" } ) ;
OpenLayers . ElementsIndexer . IndexingMethods = { Z _ORDER : function ( a , b , c ) { var b = a . getZIndex ( b ) , d = 0 ; c && ( a = a . getZIndex ( c ) , d = b - a ) ; return d } , Z _ORDER _DRAWING _ORDER : function ( a , b , c ) { a = OpenLayers . ElementsIndexer . IndexingMethods . Z _ORDER ( a , b , c ) ; c && 0 == a && ( a = 1 ) ; return a } , Z _ORDER _Y _ORDER : function ( a , b , c ) { a = OpenLayers . ElementsIndexer . IndexingMethods . Z _ORDER ( a , b , c ) ; c && 0 === a && ( b = c . _boundsBottom - b . _boundsBottom , a = 0 === b ? 1 : b ) ; return a } } ;
OpenLayers . Renderer . Elements = OpenLayers . Class ( OpenLayers . Renderer , { rendererRoot : null , root : null , vectorRoot : null , textRoot : null , xmlns : null , xOffset : 0 , indexer : null , BACKGROUND _ID _SUFFIX : "_background" , LABEL _ID _SUFFIX : "_label" , LABEL _OUTLINE _SUFFIX : "_outline" , initialize : function ( a , b ) { OpenLayers . Renderer . prototype . initialize . apply ( this , arguments ) ; this . rendererRoot = this . createRenderRoot ( ) ; this . root = this . createRoot ( "_root" ) ; this . vectorRoot = this . createRoot ( "_vroot" ) ; this . textRoot = this . createRoot ( "_troot" ) ; this . root . appendChild ( this . vectorRoot ) ;
this . root . appendChild ( this . textRoot ) ; this . rendererRoot . appendChild ( this . root ) ; this . container . appendChild ( this . rendererRoot ) ; if ( b && ( b . zIndexing || b . yOrdering ) ) this . indexer = new OpenLayers . ElementsIndexer ( b . yOrdering ) } , destroy : function ( ) { this . clear ( ) ; this . xmlns = this . root = this . rendererRoot = null ; OpenLayers . Renderer . prototype . destroy . apply ( this , arguments ) } , clear : function ( ) { var a , b = this . vectorRoot ; if ( b ) for ( ; a = b . firstChild ; ) b . removeChild ( a ) ; if ( b = this . textRoot ) for ( ; a = b . firstChild ; ) b . removeChild ( a ) ; this . indexer &&
this . indexer . clear ( ) } , setExtent : function ( a , b ) { var c = OpenLayers . Renderer . prototype . setExtent . apply ( this , arguments ) , d = this . getResolution ( ) ; if ( this . map . baseLayer && this . map . baseLayer . wrapDateLine ) { var e , f = a . getWidth ( ) / this . map . getExtent ( ) . getWidth ( ) , a = a . scale ( 1 / f ) , f = this . map . getMaxExtent ( ) ; f . right > a . left && f . right < a . right ? e = ! 0 : f . left > a . left && f . left < a . right && ( e = ! 1 ) ; if ( e !== this . rightOfDateLine || b ) c = ! 1 , this . xOffset = ! 0 === e ? f . getWidth ( ) / d : 0 ; this . rightOfDateLine = e } return c } , getNodeType : function ( ) { } , drawGeometry : function ( a ,
b , c ) { var d = a . CLASS _NAME , e = ! 0 ; if ( "OpenLayers.Geometry.Collection" == d || "OpenLayers.Geometry.MultiPoint" == d || "OpenLayers.Geometry.MultiLineString" == d || "OpenLayers.Geometry.MultiPolygon" == d ) { for ( var d = 0 , f = a . components . length ; d < f ; d ++ ) e = this . drawGeometry ( a . components [ d ] , b , c ) && e ; return e } d = e = ! 1 ; "none" != b . display && ( b . backgroundGraphic ? this . redrawBackgroundNode ( a . id , a , b , c ) : d = ! 0 , e = this . redrawNode ( a . id , a , b , c ) ) ; if ( ! 1 == e && ( b = document . getElementById ( a . id ) ) ) b . _style . backgroundGraphic && ( d = ! 0 ) , b . parentNode . removeChild ( b ) ;
d && ( b = document . getElementById ( a . id + this . BACKGROUND _ID _SUFFIX ) ) && b . parentNode . removeChild ( b ) ; return e } , redrawNode : function ( a , b , c , d ) { c = this . applyDefaultSymbolizer ( c ) ; a = this . nodeFactory ( a , this . getNodeType ( b , c ) ) ; a . _featureId = d ; a . _boundsBottom = b . getBounds ( ) . bottom ; a . _geometryClass = b . CLASS _NAME ; a . _style = c ; b = this . drawGeometryNode ( a , b , c ) ; if ( ! 1 === b ) return ! 1 ; a = b . node ; this . indexer ? ( c = this . indexer . insert ( a ) ) ? this . vectorRoot . insertBefore ( a , c ) : this . vectorRoot . appendChild ( a ) : a . parentNode !== this . vectorRoot && this . vectorRoot . appendChild ( a ) ;
this . postDraw ( a ) ; return b . complete } , redrawBackgroundNode : function ( a , b , c ) { c = OpenLayers . Util . extend ( { } , c ) ; c . externalGraphic = c . backgroundGraphic ; c . graphicXOffset = c . backgroundXOffset ; c . graphicYOffset = c . backgroundYOffset ; c . graphicZIndex = c . backgroundGraphicZIndex ; c . graphicWidth = c . backgroundWidth || c . graphicWidth ; c . graphicHeight = c . backgroundHeight || c . graphicHeight ; c . backgroundGraphic = null ; c . backgroundXOffset = null ; c . backgroundYOffset = null ; c . backgroundGraphicZIndex = null ; return this . redrawNode ( a + this . BACKGROUND _ID _SUFFIX ,
b , c , null ) } , drawGeometryNode : function ( a , b , c ) { var c = c || a . _style , d = { isFilled : void 0 === c . fill ? ! 0 : c . fill , isStroked : void 0 === c . stroke ? ! ! c . strokeWidth : c . stroke } , e ; switch ( b . CLASS _NAME ) { case "OpenLayers.Geometry.Point" : ! 1 === c . graphic && ( d . isFilled = ! 1 , d . isStroked = ! 1 ) ; e = this . drawPoint ( a , b ) ; break ; case "OpenLayers.Geometry.LineString" : d . isFilled = ! 1 ; e = this . drawLineString ( a , b ) ; break ; case "OpenLayers.Geometry.LinearRing" : e = this . drawLinearRing ( a , b ) ; break ; case "OpenLayers.Geometry.Polygon" : e = this . drawPolygon ( a , b ) ; break ;
case "OpenLayers.Geometry.Rectangle" : e = this . drawRectangle ( a , b ) } a . _options = d ; return ! 1 != e ? { node : this . setStyle ( a , c , d , b ) , complete : e } : ! 1 } , postDraw : function ( ) { } , drawPoint : function ( ) { } , drawLineString : function ( ) { } , drawLinearRing : function ( ) { } , drawPolygon : function ( ) { } , drawRectangle : function ( ) { } , drawCircle : function ( ) { } , removeText : function ( a ) { var b = document . getElementById ( a + this . LABEL _ID _SUFFIX ) ; b && this . textRoot . removeChild ( b ) ; ( a = document . getElementById ( a + this . LABEL _OUTLINE _SUFFIX ) ) && this . textRoot . removeChild ( a ) } ,
getFeatureIdFromEvent : function ( a ) { var b = a . target , c = b && b . correspondingUseElement ; return ( c ? c : b || a . srcElement ) . _featureId } , eraseGeometry : function ( a , b ) { if ( "OpenLayers.Geometry.MultiPoint" == a . CLASS _NAME || "OpenLayers.Geometry.MultiLineString" == a . CLASS _NAME || "OpenLayers.Geometry.MultiPolygon" == a . CLASS _NAME || "OpenLayers.Geometry.Collection" == a . CLASS _NAME ) for ( var c = 0 , d = a . components . length ; c < d ; c ++ ) this . eraseGeometry ( a . components [ c ] , b ) ; else if ( ( c = OpenLayers . Util . getElement ( a . id ) ) && c . parentNode ) if ( c . geometry &&
( c . geometry . destroy ( ) , c . geometry = null ) , c . parentNode . removeChild ( c ) , this . indexer && this . indexer . remove ( c ) , c . _style . backgroundGraphic ) ( c = OpenLayers . Util . getElement ( a . id + this . BACKGROUND _ID _SUFFIX ) ) && c . parentNode && c . parentNode . removeChild ( c ) } , nodeFactory : function ( a , b ) { var c = OpenLayers . Util . getElement ( a ) ; c ? this . nodeTypeCompare ( c , b ) || ( c . parentNode . removeChild ( c ) , c = this . nodeFactory ( a , b ) ) : c = this . createNode ( b , a ) ; return c } , nodeTypeCompare : function ( ) { } , createNode : function ( ) { } , moveRoot : function ( a ) { var b = this . root ;
a . root . parentNode == this . rendererRoot && ( b = a . root ) ; b . parentNode . removeChild ( b ) ; a . rendererRoot . appendChild ( b ) } , getRenderLayerId : function ( ) { return this . root . parentNode . parentNode . id } , isComplexSymbol : function ( a ) { return "circle" != a && ! ! a } , CLASS _NAME : "OpenLayers.Renderer.Elements" } ) ; OpenLayers . Control . ArgParser = OpenLayers . Class ( OpenLayers . Control , { center : null , zoom : null , layers : null , displayProjection : null , getParameters : function ( a ) { var a = a || window . location . href , b = OpenLayers . Util . getParameters ( a ) , c = a . indexOf ( "#" ) ; 0 < c && ( a = "?" + a . substring ( c + 1 , a . length ) , OpenLayers . Util . extend ( b , OpenLayers . Util . getParameters ( a ) ) ) ; return b } , setMap : function ( a ) { OpenLayers . Control . prototype . setMap . apply ( this , arguments ) ; for ( var b = 0 , c = this . map . controls . length ; b < c ; b ++ ) { var d = this . map . controls [ b ] ; if ( d != this &&
"OpenLayers.Control.ArgParser" == d . CLASS _NAME ) { d . displayProjection != this . displayProjection && ( this . displayProjection = d . displayProjection ) ; break } } if ( b == this . map . controls . length && ( b = this . getParameters ( ) , b . layers && ( this . layers = b . layers , this . map . events . register ( "addlayer" , this , this . configureLayers ) , this . configureLayers ( ) ) , b . lat && b . lon ) ) this . center = new OpenLayers . LonLat ( parseFloat ( b . lon ) , parseFloat ( b . lat ) ) , b . zoom && ( this . zoom = parseFloat ( b . zoom ) ) , this . map . events . register ( "changebaselayer" , this , this . setCenter ) ,
this . setCenter ( ) } , setCenter : function ( ) { this . map . baseLayer && ( this . map . events . unregister ( "changebaselayer" , this , this . setCenter ) , this . displayProjection && this . center . transform ( this . displayProjection , this . map . getProjectionObject ( ) ) , this . map . setCenter ( this . center , this . zoom ) ) } , configureLayers : function ( ) { if ( this . layers . length == this . map . layers . length ) { this . map . events . unregister ( "addlayer" , this , this . configureLayers ) ; for ( var a = 0 , b = this . layers . length ; a < b ; a ++ ) { var c = this . map . layers [ a ] , d = this . layers . charAt ( a ) ;
"B" == d ? this . map . setBaseLayer ( c ) : ( "T" == d || "F" == d ) && c . setVisibility ( "T" == d ) } } } , CLASS _NAME : "OpenLayers.Control.ArgParser" } ) ; OpenLayers . Control . Permalink = OpenLayers . Class ( OpenLayers . Control , { argParserClass : OpenLayers . Control . ArgParser , element : null , anchor : ! 1 , base : "" , displayProjection : null , initialize : function ( a , b , c ) { null !== a && "object" == typeof a && ! OpenLayers . Util . isElement ( a ) ? ( this . base = document . location . href , OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) , null != this . element && ( this . element = OpenLayers . Util . getElement ( this . element ) ) ) : ( OpenLayers . Control . prototype . initialize . apply ( this , [ c ] ) , this . element = OpenLayers . Util . getElement ( a ) ,
this . base = b || document . location . href ) } , destroy : function ( ) { this . element && this . element . parentNode == this . div && ( this . div . removeChild ( this . element ) , this . element = null ) ; this . map && this . map . events . unregister ( "moveend" , this , this . updateLink ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , setMap : function ( a ) { OpenLayers . Control . prototype . setMap . apply ( this , arguments ) ; for ( var b = 0 , c = this . map . controls . length ; b < c ; b ++ ) { var d = this . map . controls [ b ] ; if ( d . CLASS _NAME == this . argParserClass . CLASS _NAME ) { d . displayProjection !=
this . displayProjection && ( this . displayProjection = d . displayProjection ) ; break } } b == this . map . controls . length && this . map . addControl ( new this . argParserClass ( { displayProjection : this . displayProjection } ) ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; ! this . element && ! this . anchor && ( this . element = document . createElement ( "a" ) , this . element . innerHTML = OpenLayers . i18n ( "Permalink" ) , this . element . href = "" , this . div . appendChild ( this . element ) ) ; this . map . events . on ( { moveend : this . updateLink , changelayer : this . updateLink ,
changebaselayer : this . updateLink , scope : this } ) ; this . updateLink ( ) ; return this . div } , updateLink : function ( ) { var a = this . anchor ? "#" : "?" , b = this . base ; - 1 != b . indexOf ( a ) && ( b = b . substring ( 0 , b . indexOf ( a ) ) ) ; b += a + OpenLayers . Util . getParameterString ( this . createParams ( ) ) ; this . anchor && ! this . element ? window . location . href = b : this . element . href = b } , createParams : function ( a , b , c ) { var a = a || this . map . getCenter ( ) , d = OpenLayers . Util . getParameters ( this . base ) ; if ( a ) { d . zoom = b || this . map . getZoom ( ) ; b = a . lat ; a = a . lon ; this . displayProjection && ( b =
OpenLayers . Projection . transform ( { x : a , y : b } , this . map . getProjectionObject ( ) , this . displayProjection ) , a = b . x , b = b . y ) ; d . lat = Math . round ( 1E5 * b ) / 1E5 ; d . lon = Math . round ( 1E5 * a ) / 1E5 ; c = c || this . map . layers ; d . layers = "" ; a = 0 ; for ( b = c . length ; a < b ; a ++ ) { var e = c [ a ] ; d . layers = e . isBaseLayer ? d . layers + ( e == this . map . baseLayer ? "B" : "0" ) : d . layers + ( e . getVisibility ( ) ? "T" : "F" ) } } return d } , CLASS _NAME : "OpenLayers.Control.Permalink" } ) ; OpenLayers . Layer . TMS = OpenLayers . Class ( OpenLayers . Layer . Grid , { serviceVersion : "1.0.0" , layername : null , type : null , isBaseLayer : ! 0 , tileOrigin : null , serverResolutions : null , zoomOffset : 0 , initialize : function ( a , b , c ) { var d = [ ] ; d . push ( a , b , { } , c ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , d ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . TMS ( this . name , this . url , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = this . getServerResolution ( ) ,
c = Math . round ( ( a . left - this . tileOrigin . lon ) / ( b * this . tileSize . w ) ) , a = Math . round ( ( a . bottom - this . tileOrigin . lat ) / ( b * this . tileSize . h ) ) , c = this . serviceVersion + "/" + this . layername + "/" + this . getServerZoom ( ) + "/" + c + "/" + a + "." + this . type , a = this . url ; OpenLayers . Util . isArray ( a ) && ( a = this . selectUrl ( c , a ) ) ; return a + c } , setMap : function ( a ) { OpenLayers . Layer . Grid . prototype . setMap . apply ( this , arguments ) ; this . tileOrigin || ( this . tileOrigin = new OpenLayers . LonLat ( this . map . maxExtent . left , this . map . maxExtent . bottom ) ) } , CLASS _NAME : "OpenLayers.Layer.TMS" } ) ; OpenLayers . Strategy . Fixed = OpenLayers . Class ( OpenLayers . Strategy , { preload : ! 1 , activate : function ( ) { if ( OpenLayers . Strategy . prototype . activate . apply ( this , arguments ) ) { this . layer . events . on ( { refresh : this . load , scope : this } ) ; if ( ! 0 == this . layer . visibility || this . preload ) this . load ( ) ; else this . layer . events . on ( { visibilitychanged : this . load , scope : this } ) ; return ! 0 } return ! 1 } , deactivate : function ( ) { var a = OpenLayers . Strategy . prototype . deactivate . call ( this ) ; a && this . layer . events . un ( { refresh : this . load , visibilitychanged : this . load ,
scope : this } ) ; return a } , load : function ( a ) { var b = this . layer ; b . events . triggerEvent ( "loadstart" ) ; b . protocol . read ( OpenLayers . Util . applyDefaults ( { callback : OpenLayers . Function . bind ( this . merge , this , b . map . getProjectionObject ( ) ) , filter : b . filter } , a ) ) ; b . events . un ( { visibilitychanged : this . load , scope : this } ) } , merge : function ( a , b ) { var c = this . layer ; c . destroyFeatures ( ) ; var d = b . features ; if ( d && 0 < d . length ) { if ( ! a . equals ( c . projection ) ) for ( var e , f = 0 , g = d . length ; f < g ; ++ f ) ( e = d [ f ] . geometry ) && e . transform ( c . projection , a ) ; c . addFeatures ( d ) } c . events . triggerEvent ( "loadend" ) } ,
CLASS _NAME : "OpenLayers.Strategy.Fixed" } ) ; OpenLayers . Control . Zoom = OpenLayers . Class ( OpenLayers . Control , { zoomInText : "+" , zoomInId : "olZoomInLink" , zoomOutText : "-" , zoomOutId : "olZoomOutLink" , draw : function ( ) { var a = OpenLayers . Control . prototype . draw . apply ( this ) , b = this . getOrCreateLinks ( a ) , c = b . zoomIn , b = b . zoomOut , d = this . map . events ; b . parentNode !== a && ( d = this . events , d . attachToElement ( b . parentNode ) ) ; d . register ( "buttonclick" , this , this . onZoomClick ) ; this . zoomInLink = c ; this . zoomOutLink = b ; return a } , getOrCreateLinks : function ( a ) { var b = document . getElementById ( this . zoomInId ) ,
c = document . getElementById ( this . zoomOutId ) ; b || ( b = document . createElement ( "a" ) , b . href = "#zoomIn" , b . appendChild ( document . createTextNode ( this . zoomInText ) ) , b . className = "olControlZoomIn" , a . appendChild ( b ) ) ; OpenLayers . Element . addClass ( b , "olButton" ) ; c || ( c = document . createElement ( "a" ) , c . href = "#zoomOut" , c . appendChild ( document . createTextNode ( this . zoomOutText ) ) , c . className = "olControlZoomOut" , a . appendChild ( c ) ) ; OpenLayers . Element . addClass ( c , "olButton" ) ; return { zoomIn : b , zoomOut : c } } , onZoomClick : function ( a ) { a = a . buttonElement ;
a === this . zoomInLink ? this . map . zoomIn ( ) : a === this . zoomOutLink && this . map . zoomOut ( ) } , destroy : function ( ) { this . map && this . map . events . unregister ( "buttonclick" , this , this . onZoomClick ) ; delete this . zoomInLink ; delete this . zoomOutLink ; OpenLayers . Control . prototype . destroy . apply ( this ) } , CLASS _NAME : "OpenLayers.Control.Zoom" } ) ; OpenLayers . Layer . PointTrack = OpenLayers . Class ( OpenLayers . Layer . Vector , { dataFrom : null , styleFrom : null , addNodes : function ( a , b ) { if ( 2 > a . length ) throw Error ( "At least two point features have to be added to create a line from" ) ; for ( var c = Array ( a . length - 1 ) , d , e , f , g = 0 , h = a . length ; g < h ; g ++ ) { d = a [ g ] ; if ( f = d . geometry ) { if ( "OpenLayers.Geometry.Point" != f . CLASS _NAME ) throw new TypeError ( "Only features with point geometries are supported." ) ; } else f = d . lonlat , f = new OpenLayers . Geometry . Point ( f . lon , f . lat ) ; if ( 0 < g ) { d = null != this . dataFrom ?
a [ g + this . dataFrom ] . data || a [ g + this . dataFrom ] . attributes : null ; var i = null != this . styleFrom ? a [ g + this . styleFrom ] . style : null ; e = new OpenLayers . Geometry . LineString ( [ e , f ] ) ; c [ g - 1 ] = new OpenLayers . Feature . Vector ( e , d , i ) } e = f } this . addFeatures ( c , b ) } , CLASS _NAME : "OpenLayers.Layer.PointTrack" } ) ; OpenLayers . Layer . PointTrack . SOURCE _NODE = - 1 ; OpenLayers . Layer . PointTrack . TARGET _NODE = 0 ; OpenLayers . Layer . PointTrack . dataFrom = { SOURCE _NODE : - 1 , TARGET _NODE : 0 } ; OpenLayers . Protocol . WFS = function ( a ) { var a = OpenLayers . Util . applyDefaults ( a , OpenLayers . Protocol . WFS . DEFAULTS ) , b = OpenLayers . Protocol . WFS [ "v" + a . version . replace ( /\./g , "_" ) ] ; if ( ! b ) throw "Unsupported WFS version: " + a . version ; return new b ( a ) } ;
OpenLayers . Protocol . WFS . fromWMSLayer = function ( a , b ) { var c , d ; c = a . params . LAYERS ; c = ( OpenLayers . Util . isArray ( c ) ? c [ 0 ] : c ) . split ( ":" ) ; 1 < c . length && ( d = c [ 0 ] ) ; c = c . pop ( ) ; d = { url : a . url , featureType : c , featurePrefix : d , srsName : a . projection && a . projection . getCode ( ) || a . map && a . map . getProjectionObject ( ) . getCode ( ) , version : "1.1.0" } ; return new OpenLayers . Protocol . WFS ( OpenLayers . Util . applyDefaults ( b , d ) ) } ; OpenLayers . Protocol . WFS . DEFAULTS = { version : "1.0.0" } ; OpenLayers . Layer . Markers = OpenLayers . Class ( OpenLayers . Layer , { isBaseLayer : ! 1 , markers : null , drawn : ! 1 , initialize : function ( a , b ) { OpenLayers . Layer . prototype . initialize . apply ( this , arguments ) ; this . markers = [ ] } , destroy : function ( ) { this . clearMarkers ( ) ; this . markers = null ; OpenLayers . Layer . prototype . destroy . apply ( this , arguments ) } , setOpacity : function ( a ) { if ( a != this . opacity ) { this . opacity = a ; for ( var a = 0 , b = this . markers . length ; a < b ; a ++ ) this . markers [ a ] . setOpacity ( this . opacity ) } } , moveTo : function ( a , b , c ) { OpenLayers . Layer . prototype . moveTo . apply ( this ,
arguments ) ; if ( b || ! this . drawn ) { for ( var d = 0 , e = this . markers . length ; d < e ; d ++ ) this . drawMarker ( this . markers [ d ] ) ; this . drawn = ! 0 } } , addMarker : function ( a ) { this . markers . push ( a ) ; 1 > this . opacity && a . setOpacity ( this . opacity ) ; this . map && this . map . getExtent ( ) && ( a . map = this . map , this . drawMarker ( a ) ) } , removeMarker : function ( a ) { this . markers && this . markers . length && ( OpenLayers . Util . removeItem ( this . markers , a ) , a . erase ( ) ) } , clearMarkers : function ( ) { if ( null != this . markers ) for ( ; 0 < this . markers . length ; ) this . removeMarker ( this . markers [ 0 ] ) } ,
drawMarker : function ( a ) { var b = this . map . getLayerPxFromLonLat ( a . lonlat ) ; null == b ? a . display ( ! 1 ) : a . isDrawn ( ) ? a . icon && a . icon . moveTo ( b ) : this . div . appendChild ( a . draw ( b ) ) } , getDataExtent : function ( ) { var a = null ; if ( this . markers && 0 < this . markers . length ) for ( var a = new OpenLayers . Bounds , b = 0 , c = this . markers . length ; b < c ; b ++ ) a . extend ( this . markers [ b ] . lonlat ) ; return a } , CLASS _NAME : "OpenLayers.Layer.Markers" } ) ; OpenLayers . Control . Pan = OpenLayers . Class ( OpenLayers . Control , { slideFactor : 50 , slideRatio : null , direction : null , type : OpenLayers . Control . TYPE _BUTTON , initialize : function ( a , b ) { this . direction = a ; this . CLASS _NAME += this . direction ; OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) } , trigger : function ( ) { var a = OpenLayers . Function . bind ( function ( a ) { return this . slideRatio ? this . map . getSize ( ) [ a ] * this . slideRatio : this . slideFactor } , this ) ; switch ( this . direction ) { case OpenLayers . Control . Pan . NORTH : this . map . pan ( 0 , - a ( "h" ) ) ;
break ; case OpenLayers . Control . Pan . SOUTH : this . map . pan ( 0 , a ( "h" ) ) ; break ; case OpenLayers . Control . Pan . WEST : this . map . pan ( - a ( "w" ) , 0 ) ; break ; case OpenLayers . Control . Pan . EAST : this . map . pan ( a ( "w" ) , 0 ) } } , CLASS _NAME : "OpenLayers.Control.Pan" } ) ; OpenLayers . Control . Pan . NORTH = "North" ; OpenLayers . Control . Pan . SOUTH = "South" ; OpenLayers . Control . Pan . EAST = "East" ; OpenLayers . Control . Pan . WEST = "West" ; OpenLayers . Format . CSWGetDomain = function ( a ) { var a = OpenLayers . Util . applyDefaults ( a , OpenLayers . Format . CSWGetDomain . DEFAULTS ) , b = OpenLayers . Format . CSWGetDomain [ "v" + a . version . replace ( /\./g , "_" ) ] ; if ( ! b ) throw "Unsupported CSWGetDomain version: " + a . version ; return new b ( a ) } ; OpenLayers . Format . CSWGetDomain . DEFAULTS = { version : "2.0.2" } ; OpenLayers . Format . CSWGetDomain . v2 _0 _2 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" , csw : "http://www.opengis.net/cat/csw/2.0.2" } , defaultPrefix : "csw" , version : "2.0.2" , schemaLocation : "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" , PropertyName : null , ParameterName : null , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 ==
a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; return b } , readers : { csw : { GetDomainResponse : function ( a , b ) { this . readChildNodes ( a , b ) } , DomainValues : function ( a , b ) { OpenLayers . Util . isArray ( b . DomainValues ) || ( b . DomainValues = [ ] ) ; for ( var c = a . attributes , d = { } , e = 0 , f = c . length ; e < f ; ++ e ) d [ c [ e ] . name ] = c [ e ] . nodeValue ; this . readChildNodes ( a , d ) ; b . DomainValues . push ( d ) } , PropertyName : function ( a , b ) { b . PropertyName = this . getChildValue ( a ) } , ParameterName : function ( a , b ) { b . ParameterName = this . getChildValue ( a ) } , ListOfValues : function ( a ,
b ) { OpenLayers . Util . isArray ( b . ListOfValues ) || ( b . ListOfValues = [ ] ) ; this . readChildNodes ( a , b . ListOfValues ) } , Value : function ( a , b ) { for ( var c = a . attributes , d = { } , e = 0 , f = c . length ; e < f ; ++ e ) d [ c [ e ] . name ] = c [ e ] . nodeValue ; d . value = this . getChildValue ( a ) ; b . push ( { Value : d } ) } , ConceptualScheme : function ( a , b ) { b . ConceptualScheme = { } ; this . readChildNodes ( a , b . ConceptualScheme ) } , Name : function ( a , b ) { b . Name = this . getChildValue ( a ) } , Document : function ( a , b ) { b . Document = this . getChildValue ( a ) } , Authority : function ( a , b ) { b . Authority = this . getChildValue ( a ) } ,
RangeOfValues : function ( a , b ) { b . RangeOfValues = { } ; this . readChildNodes ( a , b . RangeOfValues ) } , MinValue : function ( a , b ) { for ( var c = a . attributes , d = { } , e = 0 , f = c . length ; e < f ; ++ e ) d [ c [ e ] . name ] = c [ e ] . nodeValue ; d . value = this . getChildValue ( a ) ; b . MinValue = d } , MaxValue : function ( a , b ) { for ( var c = a . attributes , d = { } , e = 0 , f = c . length ; e < f ; ++ e ) d [ c [ e ] . name ] = c [ e ] . nodeValue ; d . value = this . getChildValue ( a ) ; b . MaxValue = d } } } , write : function ( a ) { a = this . writeNode ( "csw:GetDomain" , a ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ a ] ) } , writers : { csw : { GetDomain : function ( a ) { var b =
this . createElementNSPlus ( "csw:GetDomain" , { attributes : { service : "CSW" , version : this . version } } ) ; if ( a . PropertyName || this . PropertyName ) this . writeNode ( "csw:PropertyName" , a . PropertyName || this . PropertyName , b ) ; else if ( a . ParameterName || this . ParameterName ) this . writeNode ( "csw:ParameterName" , a . ParameterName || this . ParameterName , b ) ; this . readChildNodes ( b , a ) ; return b } , PropertyName : function ( a ) { return this . createElementNSPlus ( "csw:PropertyName" , { value : a } ) } , ParameterName : function ( a ) { return this . createElementNSPlus ( "csw:ParameterName" ,
{ value : a } ) } } } , CLASS _NAME : "OpenLayers.Format.CSWGetDomain.v2_0_2" } ) ; OpenLayers . Format . ArcXML . Features = OpenLayers . Class ( OpenLayers . Format . XML , { read : function ( a ) { return ( new OpenLayers . Format . ArcXML ) . read ( a ) . features . feature } } ) ; OpenLayers . Control . Snapping = OpenLayers . Class ( OpenLayers . Control , { DEFAULTS : { tolerance : 10 , node : ! 0 , edge : ! 0 , vertex : ! 0 } , greedy : ! 0 , precedence : [ "node" , "vertex" , "edge" ] , resolution : null , geoToleranceCache : null , layer : null , feature : null , point : null , initialize : function ( a ) { OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . options = a || { } ; this . options . layer && this . setLayer ( this . options . layer ) ; a = OpenLayers . Util . extend ( { } , this . options . defaults ) ; this . defaults = OpenLayers . Util . applyDefaults ( a , this . DEFAULTS ) ; this . setTargets ( this . options . targets ) ;
0 === this . targets . length && this . layer && this . addTargetLayer ( this . layer ) ; this . geoToleranceCache = { } } , setLayer : function ( a ) { this . active ? ( this . deactivate ( ) , this . layer = a , this . activate ( ) ) : this . layer = a } , setTargets : function ( a ) { this . targets = [ ] ; if ( a && a . length ) for ( var b , c = 0 , d = a . length ; c < d ; ++ c ) b = a [ c ] , b instanceof OpenLayers . Layer . Vector ? this . addTargetLayer ( b ) : this . addTarget ( b ) } , addTargetLayer : function ( a ) { this . addTarget ( { layer : a } ) } , addTarget : function ( a ) { a = OpenLayers . Util . applyDefaults ( a , this . defaults ) ; a . nodeTolerance =
a . nodeTolerance || a . tolerance ; a . vertexTolerance = a . vertexTolerance || a . tolerance ; a . edgeTolerance = a . edgeTolerance || a . tolerance ; this . targets . push ( a ) } , removeTargetLayer : function ( a ) { for ( var b , c = this . targets . length - 1 ; 0 <= c ; -- c ) b = this . targets [ c ] , b . layer === a && this . removeTarget ( b ) } , removeTarget : function ( a ) { return OpenLayers . Util . removeItem ( this . targets , a ) } , activate : function ( ) { var a = OpenLayers . Control . prototype . activate . call ( this ) ; if ( a && this . layer && this . layer . events ) this . layer . events . on ( { sketchstarted : this . onSketchModified ,
sketchmodified : this . onSketchModified , vertexmodified : this . onVertexModified , scope : this } ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Control . prototype . deactivate . call ( this ) ; a && this . layer && this . layer . events && this . layer . events . un ( { sketchstarted : this . onSketchModified , sketchmodified : this . onSketchModified , vertexmodified : this . onVertexModified , scope : this } ) ; this . point = this . feature = null ; return a } , onSketchModified : function ( a ) { this . feature = a . feature ; this . considerSnapping ( a . vertex , a . vertex ) } , onVertexModified : function ( a ) { this . feature =
a . feature ; var b = this . layer . map . getLonLatFromViewPortPx ( a . pixel ) ; this . considerSnapping ( a . vertex , new OpenLayers . Geometry . Point ( b . lon , b . lat ) ) } , considerSnapping : function ( a , b ) { for ( var c = { rank : Number . POSITIVE _INFINITY , dist : Number . POSITIVE _INFINITY , x : null , y : null } , d = ! 1 , e , f , g = 0 , h = this . targets . length ; g < h ; ++ g ) if ( f = this . targets [ g ] , e = this . testTarget ( f , b ) ) if ( this . greedy ) { c = e ; c . target = f ; d = ! 0 ; break } else if ( e . rank < c . rank || e . rank === c . rank && e . dist < c . dist ) c = e , c . target = f , d = ! 0 ; d && ( ! 1 !== this . events . triggerEvent ( "beforesnap" ,
{ point : a , x : c . x , y : c . y , distance : c . dist , layer : c . target . layer , snapType : this . precedence [ c . rank ] } ) ? ( a . x = c . x , a . y = c . y , this . point = a , this . events . triggerEvent ( "snap" , { point : a , snapType : this . precedence [ c . rank ] , layer : c . target . layer , distance : c . dist } ) ) : d = ! 1 ) ; this . point && ! d && ( a . x = b . x , a . y = b . y , this . point = null , this . events . triggerEvent ( "unsnap" , { point : a } ) ) } , testTarget : function ( a , b ) { var c = this . layer . map . getResolution ( ) ; if ( "minResolution" in a && c < a . minResolution || "maxResolution" in a && c >= a . maxResolution ) return null ; for ( var c =
{ node : this . getGeoTolerance ( a . nodeTolerance , c ) , vertex : this . getGeoTolerance ( a . vertexTolerance , c ) , edge : this . getGeoTolerance ( a . edgeTolerance , c ) } , d = Math . max ( c . node , c . vertex , c . edge ) , e = { rank : Number . POSITIVE _INFINITY , dist : Number . POSITIVE _INFINITY } , f = ! 1 , g = a . layer . features , h , i , j , k , l , m , n = this . precedence . length , o = new OpenLayers . LonLat ( b . x , b . y ) , p = 0 , q = g . length ; p < q ; ++ p ) if ( h = g [ p ] , h !== this . feature && ( ! h . _sketch && h . state !== OpenLayers . State . DELETE && ( ! a . filter || a . filter . evaluate ( h ) ) ) && h . atPoint ( o , d , d ) ) for ( var r = 0 , s = Math . min ( e . rank +
1 , n ) ; r < s ; ++ r ) if ( i = this . precedence [ r ] , a [ i ] ) if ( "edge" === i ) { if ( j = h . geometry . distanceTo ( b , { details : ! 0 } ) , l = j . distance , l <= c [ i ] && l < e . dist ) { e = { rank : r , dist : l , x : j . x0 , y : j . y0 } ; f = ! 0 ; break } } else { j = h . geometry . getVertices ( "node" === i ) ; m = ! 1 ; for ( var t = 0 , u = j . length ; t < u ; ++ t ) if ( k = j [ t ] , l = k . distanceTo ( b ) , l <= c [ i ] && ( r < e . rank || r === e . rank && l < e . dist ) ) e = { rank : r , dist : l , x : k . x , y : k . y } , m = f = ! 0 ; if ( m ) break } return f ? e : null } , getGeoTolerance : function ( a , b ) { b !== this . resolution && ( this . resolution = b , this . geoToleranceCache = { } ) ; var c = this . geoToleranceCache [ a ] ;
void 0 === c && ( c = a * b , this . geoToleranceCache [ a ] = c ) ; return c } , destroy : function ( ) { this . active && this . deactivate ( ) ; delete this . layer ; delete this . targets ; OpenLayers . Control . prototype . destroy . call ( this ) } , CLASS _NAME : "OpenLayers.Control.Snapping" } ) ; OpenLayers . Date = { toISOString : function ( ) { if ( "toISOString" in Date . prototype ) return function ( a ) { return a . toISOString ( ) } ; var a = function ( a , c ) { for ( var d = a + "" ; d . length < c ; ) d = "0" + d ; return d } ; return function ( b ) { return isNaN ( b . getTime ( ) ) ? "Invalid Date" : b . getUTCFullYear ( ) + "-" + a ( b . getUTCMonth ( ) + 1 , 2 ) + "-" + a ( b . getUTCDate ( ) , 2 ) + "T" + a ( b . getUTCHours ( ) , 2 ) + ":" + a ( b . getUTCMinutes ( ) , 2 ) + ":" + a ( b . getUTCSeconds ( ) , 2 ) + "." + a ( b . getUTCMilliseconds ( ) , 3 ) + "Z" } } ( ) , parse : function ( a ) { var b ; if ( ( a = a . match ( /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/ ) ) &&
( a [ 1 ] || a [ 7 ] ) ) { b = parseInt ( a [ 1 ] , 10 ) || 0 ; var c = parseInt ( a [ 2 ] , 10 ) - 1 || 0 , d = parseInt ( a [ 3 ] , 10 ) || 1 ; b = new Date ( Date . UTC ( b , c , d ) ) ; if ( c = a [ 7 ] ) { var d = parseInt ( a [ 4 ] , 10 ) , e = parseInt ( a [ 5 ] , 10 ) , f = parseFloat ( a [ 6 ] ) , g = f | 0 , f = Math . round ( 1E3 * ( f - g ) ) ; b . setUTCHours ( d , e , g , f ) ; "Z" !== c && ( c = parseInt ( c , 10 ) , a = parseInt ( a [ 8 ] , 10 ) || 0 , b = new Date ( b . getTime ( ) + - 1E3 * ( 60 * 60 * c + 60 * a ) ) ) } } else b = new Date ( "invalid" ) ; return b } } ; ( function ( ) { function a ( ) { this . _object = f && ! i ? new f : new window . ActiveXObject ( "Microsoft.XMLHTTP" ) ; this . _listeners = [ ] } function b ( ) { return new a } function c ( a ) { b . onreadystatechange && b . onreadystatechange . apply ( a ) ; a . dispatchEvent ( { type : "readystatechange" , bubbles : ! 1 , cancelable : ! 1 , timeStamp : new Date + 0 } ) } function d ( a ) { try { a . responseText = a . _object . responseText } catch ( b ) { } try { var c ; var d = a . _object , e = d . responseXML , f = d . responseText ; h && ( f && e && ! e . documentElement && d . getResponseHeader ( "Content-Type" ) . match ( /[^\/]+\/[^\+]+\+xml/ ) ) &&
( e = new window . ActiveXObject ( "Microsoft.XMLDOM" ) , e . async = ! 1 , e . validateOnParse = ! 1 , e . loadXML ( f ) ) ; c = e && ( h && 0 != e . parseError || ! e . documentElement || e . documentElement && "parsererror" == e . documentElement . tagName ) ? null : e ; a . responseXML = c } catch ( g ) { } try { a . status = a . _object . status } catch ( i ) { } try { a . statusText = a . _object . statusText } catch ( r ) { } } function e ( a ) { a . _object . onreadystatechange = new window . Function } var f = window . XMLHttpRequest , g = ! ! window . controllers , h = window . document . all && ! window . opera , i = h && window . navigator . userAgent . match ( /MSIE 7.0/ ) ;
b . prototype = a . prototype ; g && f . wrapped && ( b . wrapped = f . wrapped ) ; b . UNSENT = 0 ; b . OPENED = 1 ; b . HEADERS _RECEIVED = 2 ; b . LOADING = 3 ; b . DONE = 4 ; b . prototype . readyState = b . UNSENT ; b . prototype . responseText = "" ; b . prototype . responseXML = null ; b . prototype . status = 0 ; b . prototype . statusText = "" ; b . prototype . priority = "NORMAL" ; b . prototype . onreadystatechange = null ; b . onreadystatechange = null ; b . onopen = null ; b . onsend = null ; b . onabort = null ; b . prototype . open = function ( a , f , i , m , n ) { delete this . _headers ; arguments . length < 3 && ( i = true ) ; this . _async = i ; var o =
this , p = this . readyState , q ; if ( h && i ) { q = function ( ) { if ( p != b . DONE ) { e ( o ) ; o . abort ( ) } } ; window . attachEvent ( "onunload" , q ) } b . onopen && b . onopen . apply ( this , arguments ) ; arguments . length > 4 ? this . _object . open ( a , f , i , m , n ) : arguments . length > 3 ? this . _object . open ( a , f , i , m ) : this . _object . open ( a , f , i ) ; this . readyState = b . OPENED ; c ( this ) ; this . _object . onreadystatechange = function ( ) { if ( ! g || i ) { o . readyState = o . _object . readyState ; d ( o ) ; if ( o . _aborted ) o . readyState = b . UNSENT ; else { if ( o . readyState == b . DONE ) { delete o . _data ; e ( o ) ; h && i && window . detachEvent ( "onunload" ,
q ) } p != o . readyState && c ( o ) ; p = o . readyState } } } } ; b . prototype . send = function ( a ) { b . onsend && b . onsend . apply ( this , arguments ) ; arguments . length || ( a = null ) ; if ( a && a . nodeType ) { a = window . XMLSerializer ? ( new window . XMLSerializer ) . serializeToString ( a ) : a . xml ; this . _headers [ "Content-Type" ] || this . _object . setRequestHeader ( "Content-Type" , "application/xml" ) } this . _data = a ; a : { this . _object . send ( this . _data ) ; if ( g && ! this . _async ) { this . readyState = b . OPENED ; for ( d ( this ) ; this . readyState < b . DONE ; ) { this . readyState ++ ; c ( this ) ; if ( this . _aborted ) break a } } } } ;
b . prototype . abort = function ( ) { b . onabort && b . onabort . apply ( this , arguments ) ; if ( this . readyState > b . UNSENT ) this . _aborted = true ; this . _object . abort ( ) ; e ( this ) ; this . readyState = b . UNSENT ; delete this . _data } ; b . prototype . getAllResponseHeaders = function ( ) { return this . _object . getAllResponseHeaders ( ) } ; b . prototype . getResponseHeader = function ( a ) { return this . _object . getResponseHeader ( a ) } ; b . prototype . setRequestHeader = function ( a , b ) { if ( ! this . _headers ) this . _headers = { } ; this . _headers [ a ] = b ; return this . _object . setRequestHeader ( a ,
b ) } ; b . prototype . addEventListener = function ( a , b , c ) { for ( var d = 0 , e ; e = this . _listeners [ d ] ; d ++ ) if ( e [ 0 ] == a && e [ 1 ] == b && e [ 2 ] == c ) return ; this . _listeners . push ( [ a , b , c ] ) } ; b . prototype . removeEventListener = function ( a , b , c ) { for ( var d = 0 , e ; e = this . _listeners [ d ] ; d ++ ) if ( e [ 0 ] == a && e [ 1 ] == b && e [ 2 ] == c ) break ; e && this . _listeners . splice ( d , 1 ) } ; b . prototype . dispatchEvent = function ( a ) { a = { type : a . type , target : this , currentTarget : this , eventPhase : 2 , bubbles : a . bubbles , cancelable : a . cancelable , timeStamp : a . timeStamp , stopPropagation : function ( ) { } , preventDefault : function ( ) { } ,
initEvent : function ( ) { } } ; a . type == "readystatechange" && this . onreadystatechange && ( this . onreadystatechange . handleEvent || this . onreadystatechange ) . apply ( this , [ a ] ) ; for ( var b = 0 , c ; c = this . _listeners [ b ] ; b ++ ) c [ 0 ] == a . type && ! c [ 2 ] && ( c [ 1 ] . handleEvent || c [ 1 ] ) . apply ( this , [ a ] ) } ; b . prototype . toString = function ( ) { return "[object XMLHttpRequest]" } ; b . toString = function ( ) { return "[XMLHttpRequest]" } ; window . Function . prototype . apply || ( window . Function . prototype . apply = function ( a , b ) { b || ( b = [ ] ) ; a . _ _func = this ; a . _ _func ( b [ 0 ] , b [ 1 ] , b [ 2 ] , b [ 3 ] ,
b [ 4 ] ) ; delete a . _ _func } ) ; OpenLayers . Request . XMLHttpRequest = b } ) ( ) ; OpenLayers . Format . KML = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { kml : "http://www.opengis.net/kml/2.2" , gx : "http://www.google.com/kml/ext/2.2" } , kmlns : "http://earth.google.com/kml/2.0" , placemarksDesc : "No description available" , foldersName : "OpenLayers export" , foldersDesc : "Exported on " + new Date , extractAttributes : ! 0 , kvpAttributes : ! 1 , extractStyles : ! 1 , extractTracks : ! 1 , trackAttributes : null , internalns : null , features : null , styles : null , styleBaseUrl : "" , fetched : null , maxDepth : 0 , initialize : function ( a ) { this . regExes =
{ trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g , kmlColor : /(\w{2})(\w{2})(\w{2})(\w{2})/ , kmlIconPalette : /root:\/\/icons\/palette-(\d+)(\.\w+)/ , straightBracket : /\$\[(.*?)\]/g } ; this . externalProjection = new OpenLayers . Projection ( "EPSG:4326" ) ; OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { this . features = [ ] ; this . styles = { } ; this . fetched = { } ; return this . parseData ( a , { depth : 0 , styleBaseUrl : this . styleBaseUrl } ) } , parseData : function ( a , b ) { "string" == typeof a &&
( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; for ( var c = [ "Link" , "NetworkLink" , "Style" , "StyleMap" , "Placemark" ] , d = 0 , e = c . length ; d < e ; ++ d ) { var f = c [ d ] , g = this . getElementsByTagNameNS ( a , "*" , f ) ; if ( 0 != g . length ) switch ( f . toLowerCase ( ) ) { case "link" : case "networklink" : this . parseLinks ( g , b ) ; break ; case "style" : this . extractStyles && this . parseStyles ( g , b ) ; break ; case "stylemap" : this . extractStyles && this . parseStyleMaps ( g , b ) ; break ; case "placemark" : this . parseFeatures ( g , b ) } } return this . features } , parseLinks : function ( a ,
b ) { if ( b . depth >= this . maxDepth ) return ! 1 ; var c = OpenLayers . Util . extend ( { } , b ) ; c . depth ++ ; for ( var d = 0 , e = a . length ; d < e ; d ++ ) { var f = this . parseProperty ( a [ d ] , "*" , "href" ) ; f && ! this . fetched [ f ] && ( this . fetched [ f ] = ! 0 , ( f = this . fetchLink ( f ) ) && this . parseData ( f , c ) ) } } , fetchLink : function ( a ) { if ( a = OpenLayers . Request . GET ( { url : a , async : ! 1 } ) ) return a . responseText } , parseStyles : function ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; c ++ ) { var e = this . parseStyle ( a [ c ] ) ; e && ( this . styles [ ( b . styleBaseUrl || "" ) + "#" + e . id ] = e ) } } , parseKmlColor : function ( a ) { var b =
null ; a && ( a = a . match ( this . regExes . kmlColor ) ) && ( b = { color : "#" + a [ 4 ] + a [ 3 ] + a [ 2 ] , opacity : parseInt ( a [ 1 ] , 16 ) / 255 } ) ; return b } , parseStyle : function ( a ) { for ( var b = { } , c = [ "LineStyle" , "PolyStyle" , "IconStyle" , "BalloonStyle" , "LabelStyle" ] , d , e , f = 0 , g = c . length ; f < g ; ++ f ) if ( d = c [ f ] , e = this . getElementsByTagNameNS ( a , "*" , d ) [ 0 ] ) switch ( d . toLowerCase ( ) ) { case "linestyle" : d = this . parseProperty ( e , "*" , "color" ) ; if ( d = this . parseKmlColor ( d ) ) b . strokeColor = d . color , b . strokeOpacity = d . opacity ; ( d = this . parseProperty ( e , "*" , "width" ) ) && ( b . strokeWidth =
d ) ; break ; case "polystyle" : d = this . parseProperty ( e , "*" , "color" ) ; if ( d = this . parseKmlColor ( d ) ) b . fillOpacity = d . opacity , b . fillColor = d . color ; "0" == this . parseProperty ( e , "*" , "fill" ) && ( b . fillColor = "none" ) ; "0" == this . parseProperty ( e , "*" , "outline" ) && ( b . strokeWidth = "0" ) ; break ; case "iconstyle" : var h = parseFloat ( this . parseProperty ( e , "*" , "scale" ) || 1 ) ; d = 32 * h ; var i = 32 * h , j = this . getElementsByTagNameNS ( e , "*" , "Icon" ) [ 0 ] ; if ( j ) { var k = this . parseProperty ( j , "*" , "href" ) ; if ( k ) { var l = this . parseProperty ( j , "*" , "w" ) , m = this . parseProperty ( j ,
"*" , "h" ) ; OpenLayers . String . startsWith ( k , "http://maps.google.com/mapfiles/kml" ) && ( ! l && ! m ) && ( m = l = 64 , h /= 2 ) ; l = l || m ; m = m || l ; l && ( d = parseInt ( l ) * h ) ; m && ( i = parseInt ( m ) * h ) ; if ( m = k . match ( this . regExes . kmlIconPalette ) ) l = m [ 1 ] , m = m [ 2 ] , k = this . parseProperty ( j , "*" , "x" ) , j = this . parseProperty ( j , "*" , "y" ) , k = "http://maps.google.com/mapfiles/kml/pal" + l + "/icon" + ( 8 * ( j ? 7 - j / 32 : 7 ) + ( k ? k / 32 : 0 ) ) + m ; b . graphicOpacity = 1 ; b . externalGraphic = k } } if ( e = this . getElementsByTagNameNS ( e , "*" , "hotSpot" ) [ 0 ] ) k = parseFloat ( e . getAttribute ( "x" ) ) , j = parseFloat ( e . getAttribute ( "y" ) ) ,
l = e . getAttribute ( "xunits" ) , "pixels" == l ? b . graphicXOffset = - k * h : "insetPixels" == l ? b . graphicXOffset = - d + k * h : "fraction" == l && ( b . graphicXOffset = - d * k ) , e = e . getAttribute ( "yunits" ) , "pixels" == e ? b . graphicYOffset = - i + j * h + 1 : "insetPixels" == e ? b . graphicYOffset = - ( j * h ) + 1 : "fraction" == e && ( b . graphicYOffset = - i * ( 1 - j ) + 1 ) ; b . graphicWidth = d ; b . graphicHeight = i ; break ; case "balloonstyle" : ( e = OpenLayers . Util . getXmlNodeValue ( e ) ) && ( b . balloonStyle = e . replace ( this . regExes . straightBracket , "${$1}" ) ) ; break ; case "labelstyle" : if ( d = this . parseProperty ( e ,
"*" , "color" ) , d = this . parseKmlColor ( d ) ) b . fontColor = d . color , b . fontOpacity = d . opacity } ! b . strokeColor && b . fillColor && ( b . strokeColor = b . fillColor ) ; if ( ( a = a . getAttribute ( "id" ) ) && b ) b . id = a ; return b } , parseStyleMaps : function ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; c ++ ) for ( var e = a [ c ] , f = this . getElementsByTagNameNS ( e , "*" , "Pair" ) , e = e . getAttribute ( "id" ) , g = 0 , h = f . length ; g < h ; g ++ ) { var i = f [ g ] , j = this . parseProperty ( i , "*" , "key" ) ; ( i = this . parseProperty ( i , "*" , "styleUrl" ) ) && "normal" == j && ( this . styles [ ( b . styleBaseUrl || "" ) + "#" + e ] = this . styles [ ( b . styleBaseUrl ||
"" ) + i ] ) } } , parseFeatures : function ( a , b ) { for ( var c = [ ] , d = 0 , e = a . length ; d < e ; d ++ ) { var f = a [ d ] , g = this . parseFeature . apply ( this , [ f ] ) ; if ( g ) { this . extractStyles && ( g . attributes && g . attributes . styleUrl ) && ( g . style = this . getStyle ( g . attributes . styleUrl , b ) ) ; if ( this . extractStyles ) { var h = this . getElementsByTagNameNS ( f , "*" , "Style" ) [ 0 ] ; if ( h && ( h = this . parseStyle ( h ) ) ) g . style = OpenLayers . Util . extend ( g . style , h ) } if ( this . extractTracks ) { if ( ( f = this . getElementsByTagNameNS ( f , this . namespaces . gx , "Track" ) ) && 0 < f . length ) g = { features : [ ] , feature : g } ,
this . readNode ( f [ 0 ] , g ) , 0 < g . features . length && c . push . apply ( c , g . features ) } else c . push ( g ) } else throw "Bad Placemark: " + d ; } this . features = this . features . concat ( c ) } , readers : { kml : { when : function ( a , b ) { b . whens . push ( OpenLayers . Date . parse ( this . getChildValue ( a ) ) ) } , _trackPointAttribute : function ( a , b ) { var c = a . nodeName . split ( ":" ) . pop ( ) ; b . attributes [ c ] . push ( this . getChildValue ( a ) ) } } , gx : { Track : function ( a , b ) { var c = { whens : [ ] , points : [ ] , angles : [ ] } ; if ( this . trackAttributes ) { var d ; c . attributes = { } ; for ( var e = 0 , f = this . trackAttributes . length ; e <
f ; ++ e ) d = this . trackAttributes [ e ] , c . attributes [ d ] = [ ] , d in this . readers . kml || ( this . readers . kml [ d ] = this . readers . kml . _trackPointAttribute ) } this . readChildNodes ( a , c ) ; if ( c . whens . length !== c . points . length ) throw Error ( "gx:Track with unequal number of when (" + c . whens . length + ") and gx:coord (" + c . points . length + ") elements." ) ; var g = 0 < c . angles . length ; if ( g && c . whens . length !== c . angles . length ) throw Error ( "gx:Track with unequal number of when (" + c . whens . length + ") and gx:angles (" + c . angles . length + ") elements." ) ; for ( var h ,
i , e = 0 , f = c . whens . length ; e < f ; ++ e ) { h = b . feature . clone ( ) ; h . fid = b . feature . fid || b . feature . id ; i = c . points [ e ] ; h . geometry = i ; "z" in i && ( h . attributes . altitude = i . z ) ; this . internalProjection && this . externalProjection && h . geometry . transform ( this . externalProjection , this . internalProjection ) ; if ( this . trackAttributes ) { i = 0 ; for ( var j = this . trackAttributes . length ; i < j ; ++ i ) h . attributes [ d ] = c . attributes [ this . trackAttributes [ i ] ] [ e ] } h . attributes . when = c . whens [ e ] ; h . attributes . trackId = b . feature . id ; g && ( i = c . angles [ e ] , h . attributes . heading =
parseFloat ( i [ 0 ] ) , h . attributes . tilt = parseFloat ( i [ 1 ] ) , h . attributes . roll = parseFloat ( i [ 2 ] ) ) ; b . features . push ( h ) } } , coord : function ( a , b ) { var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) . split ( /\s+/ ) , d = new OpenLayers . Geometry . Point ( c [ 0 ] , c [ 1 ] ) ; 2 < c . length && ( d . z = parseFloat ( c [ 2 ] ) ) ; b . points . push ( d ) } , angles : function ( a , b ) { var c = this . getChildValue ( a ) . replace ( this . regExes . trimSpace , "" ) . split ( /\s+/ ) ; b . angles . push ( c ) } } } , parseFeature : function ( a ) { for ( var b = [ "MultiGeometry" , "Polygon" , "LineString" , "Point" ] ,
c , d , e , f = 0 , g = b . length ; f < g ; ++ f ) if ( c = b [ f ] , this . internalns = a . namespaceURI ? a . namespaceURI : this . kmlns , d = this . getElementsByTagNameNS ( a , this . internalns , c ) , 0 < d . length ) { if ( b = this . parseGeometry [ c . toLowerCase ( ) ] ) e = b . apply ( this , [ d [ 0 ] ] ) , this . internalProjection && this . externalProjection && e . transform ( this . externalProjection , this . internalProjection ) ; else throw new TypeError ( "Unsupported geometry type: " + c ) ; break } var h ; this . extractAttributes && ( h = this . parseAttributes ( a ) ) ; c = new OpenLayers . Feature . Vector ( e , h ) ; a = a . getAttribute ( "id" ) ||
a . getAttribute ( "name" ) ; null != a && ( c . fid = a ) ; return c } , getStyle : function ( a , b ) { var c = OpenLayers . Util . removeTail ( a ) , d = OpenLayers . Util . extend ( { } , b ) ; d . depth ++ ; d . styleBaseUrl = c ; ! this . styles [ a ] && ! OpenLayers . String . startsWith ( a , "#" ) && d . depth <= this . maxDepth && ! this . fetched [ c ] && ( c = this . fetchLink ( c ) ) && this . parseData ( c , d ) ; return OpenLayers . Util . extend ( { } , this . styles [ a ] ) } , parseGeometry : { point : function ( a ) { var b = this . getElementsByTagNameNS ( a , this . internalns , "coordinates" ) , a = [ ] ; if ( 0 < b . length ) var c = b [ 0 ] . firstChild . nodeValue ,
c = c . replace ( this . regExes . removeSpace , "" ) , a = c . split ( "," ) ; b = null ; if ( 1 < a . length ) 2 == a . length && ( a [ 2 ] = null ) , b = new OpenLayers . Geometry . Point ( a [ 0 ] , a [ 1 ] , a [ 2 ] ) ; else throw "Bad coordinate string: " + c ; return b } , linestring : function ( a , b ) { var c = this . getElementsByTagNameNS ( a , this . internalns , "coordinates" ) , d = null ; if ( 0 < c . length ) { for ( var c = this . getChildValue ( c [ 0 ] ) , c = c . replace ( this . regExes . trimSpace , "" ) , c = c . replace ( this . regExes . trimComma , "," ) , d = c . split ( this . regExes . splitSpace ) , e = d . length , f = Array ( e ) , g , h , i = 0 ; i < e ; ++ i ) if ( g =
d [ i ] . split ( "," ) , h = g . length , 1 < h ) 2 == g . length && ( g [ 2 ] = null ) , f [ i ] = new OpenLayers . Geometry . Point ( g [ 0 ] , g [ 1 ] , g [ 2 ] ) ; else throw "Bad LineString point coordinates: " + d [ i ] ; if ( e ) d = b ? new OpenLayers . Geometry . LinearRing ( f ) : new OpenLayers . Geometry . LineString ( f ) ; else throw "Bad LineString coordinates: " + c ; } return d } , polygon : function ( a ) { var a = this . getElementsByTagNameNS ( a , this . internalns , "LinearRing" ) , b = a . length , c = Array ( b ) ; if ( 0 < b ) for ( var d = 0 , e = a . length ; d < e ; ++ d ) if ( b = this . parseGeometry . linestring . apply ( this , [ a [ d ] , ! 0 ] ) ) c [ d ] =
b ; else throw "Bad LinearRing geometry: " + d ; return new OpenLayers . Geometry . Polygon ( c ) } , multigeometry : function ( a ) { for ( var b , c = [ ] , d = a . childNodes , e = 0 , f = d . length ; e < f ; ++ e ) a = d [ e ] , 1 == a . nodeType && ( b = this . parseGeometry [ ( a . prefix ? a . nodeName . split ( ":" ) [ 1 ] : a . nodeName ) . toLowerCase ( ) ] ) && c . push ( b . apply ( this , [ a ] ) ) ; return new OpenLayers . Geometry . Collection ( c ) } } , parseAttributes : function ( a ) { var b = { } , c = a . getElementsByTagName ( "ExtendedData" ) ; c . length && ( b = this . parseExtendedData ( c [ 0 ] ) ) ; for ( var d , e , f , a = a . childNodes , c = 0 , g =
a . length ; c < g ; ++ c ) if ( d = a [ c ] , 1 == d . nodeType && ( e = d . childNodes , 1 <= e . length && 3 >= e . length ) ) { switch ( e . length ) { case 1 : f = e [ 0 ] ; break ; case 2 : f = e [ 0 ] ; e = e [ 1 ] ; f = 3 == f . nodeType || 4 == f . nodeType ? f : e ; break ; default : f = e [ 1 ] } if ( 3 == f . nodeType || 4 == f . nodeType ) if ( d = d . prefix ? d . nodeName . split ( ":" ) [ 1 ] : d . nodeName , f = OpenLayers . Util . getXmlNodeValue ( f ) ) f = f . replace ( this . regExes . trimSpace , "" ) , b [ d ] = f } return b } , parseExtendedData : function ( a ) { var b = { } , c , d , e , f , g = a . getElementsByTagName ( "Data" ) ; c = 0 ; for ( d = g . length ; c < d ; c ++ ) { e = g [ c ] ; f = e . getAttribute ( "name" ) ;
var h = { } , i = e . getElementsByTagName ( "value" ) ; i . length && ( h . value = this . getChildValue ( i [ 0 ] ) ) ; this . kvpAttributes ? b [ f ] = h . value : ( e = e . getElementsByTagName ( "displayName" ) , e . length && ( h . displayName = this . getChildValue ( e [ 0 ] ) ) , b [ f ] = h ) } a = a . getElementsByTagName ( "SimpleData" ) ; c = 0 ; for ( d = a . length ; c < d ; c ++ ) h = { } , e = a [ c ] , f = e . getAttribute ( "name" ) , h . value = this . getChildValue ( e ) , this . kvpAttributes ? b [ f ] = h . value : ( h . displayName = f , b [ f ] = h ) ; return b } , parseProperty : function ( a , b , c ) { var d , a = this . getElementsByTagNameNS ( a , b , c ) ; try { d = OpenLayers . Util . getXmlNodeValue ( a [ 0 ] ) } catch ( e ) { d =
null } return d } , write : function ( a ) { OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var b = this . createElementNS ( this . kmlns , "kml" ) , c = this . createFolderXML ( ) , d = 0 , e = a . length ; d < e ; ++ d ) c . appendChild ( this . createPlacemarkXML ( a [ d ] ) ) ; b . appendChild ( c ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) } , createFolderXML : function ( ) { var a = this . createElementNS ( this . kmlns , "Folder" ) ; if ( this . foldersName ) { var b = this . createElementNS ( this . kmlns , "name" ) , c = this . createTextNode ( this . foldersName ) ; b . appendChild ( c ) ; a . appendChild ( b ) } this . foldersDesc &&
( b = this . createElementNS ( this . kmlns , "description" ) , c = this . createTextNode ( this . foldersDesc ) , b . appendChild ( c ) , a . appendChild ( b ) ) ; return a } , createPlacemarkXML : function ( a ) { var b = this . createElementNS ( this . kmlns , "name" ) ; b . appendChild ( this . createTextNode ( a . style && a . style . label ? a . style . label : a . attributes . name || a . id ) ) ; var c = this . createElementNS ( this . kmlns , "description" ) ; c . appendChild ( this . createTextNode ( a . attributes . description || this . placemarksDesc ) ) ; var d = this . createElementNS ( this . kmlns , "Placemark" ) ; null !=
a . fid && d . setAttribute ( "id" , a . fid ) ; d . appendChild ( b ) ; d . appendChild ( c ) ; b = this . buildGeometryNode ( a . geometry ) ; d . appendChild ( b ) ; a . attributes && ( a = this . buildExtendedData ( a . attributes ) ) && d . appendChild ( a ) ; return d } , buildGeometryNode : function ( a ) { var b = a . CLASS _NAME , b = this . buildGeometry [ b . substring ( b . lastIndexOf ( "." ) + 1 ) . toLowerCase ( ) ] , c = null ; b && ( c = b . apply ( this , [ a ] ) ) ; return c } , buildGeometry : { point : function ( a ) { var b = this . createElementNS ( this . kmlns , "Point" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } , multipoint : function ( a ) { return this . buildGeometry . collection . apply ( this ,
[ a ] ) } , linestring : function ( a ) { var b = this . createElementNS ( this . kmlns , "LineString" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } , multilinestring : function ( a ) { return this . buildGeometry . collection . apply ( this , [ a ] ) } , linearring : function ( a ) { var b = this . createElementNS ( this . kmlns , "LinearRing" ) ; b . appendChild ( this . buildCoordinatesNode ( a ) ) ; return b } , polygon : function ( a ) { for ( var b = this . createElementNS ( this . kmlns , "Polygon" ) , a = a . components , c , d , e = 0 , f = a . length ; e < f ; ++ e ) c = 0 == e ? "outerBoundaryIs" : "innerBoundaryIs" ,
c = this . createElementNS ( this . kmlns , c ) , d = this . buildGeometry . linearring . apply ( this , [ a [ e ] ] ) , c . appendChild ( d ) , b . appendChild ( c ) ; return b } , multipolygon : function ( a ) { return this . buildGeometry . collection . apply ( this , [ a ] ) } , collection : function ( a ) { for ( var b = this . createElementNS ( this . kmlns , "MultiGeometry" ) , c , d = 0 , e = a . components . length ; d < e ; ++ d ) ( c = this . buildGeometryNode . apply ( this , [ a . components [ d ] ] ) ) && b . appendChild ( c ) ; return b } } , buildCoordinatesNode : function ( a ) { var b = this . createElementNS ( this . kmlns , "coordinates" ) ,
c ; if ( c = a . components ) { for ( var d = c . length , e = Array ( d ) , f = 0 ; f < d ; ++ f ) a = c [ f ] , e [ f ] = this . buildCoordinates ( a ) ; c = e . join ( " " ) } else c = this . buildCoordinates ( a ) ; c = this . createTextNode ( c ) ; b . appendChild ( c ) ; return b } , buildCoordinates : function ( a ) { this . internalProjection && this . externalProjection && ( a = a . clone ( ) , a . transform ( this . internalProjection , this . externalProjection ) ) ; return a . x + "," + a . y } , buildExtendedData : function ( a ) { var b = this . createElementNS ( this . kmlns , "ExtendedData" ) , c ; for ( c in a ) if ( a [ c ] && "name" != c && "description" !=
c && "styleUrl" != c ) { var d = this . createElementNS ( this . kmlns , "Data" ) ; d . setAttribute ( "name" , c ) ; var e = this . createElementNS ( this . kmlns , "value" ) ; if ( "object" == typeof a [ c ] ) { if ( a [ c ] . value && e . appendChild ( this . createTextNode ( a [ c ] . value ) ) , a [ c ] . displayName ) { var f = this . createElementNS ( this . kmlns , "displayName" ) ; f . appendChild ( this . getXMLDoc ( ) . createCDATASection ( a [ c ] . displayName ) ) ; d . appendChild ( f ) } } else e . appendChild ( this . createTextNode ( a [ c ] ) ) ; d . appendChild ( e ) ; b . appendChild ( d ) } return this . isSimpleContent ( b ) ? null : b } ,
CLASS _NAME : "OpenLayers.Format.KML" } ) ; OpenLayers . Popup = OpenLayers . Class ( { events : null , id : "" , lonlat : null , div : null , contentSize : null , size : null , contentHTML : null , backgroundColor : "" , opacity : "" , border : "" , contentDiv : null , groupDiv : null , closeDiv : null , autoSize : ! 1 , minSize : null , maxSize : null , displayClass : "olPopup" , contentDisplayClass : "olPopupContent" , padding : 0 , disableFirefoxOverflowHack : ! 1 , fixPadding : function ( ) { "number" == typeof this . padding && ( this . padding = new OpenLayers . Bounds ( this . padding , this . padding , this . padding , this . padding ) ) } , panMapIfOutOfView : ! 1 ,
keepInMap : ! 1 , closeOnMove : ! 1 , map : null , initialize : function ( a , b , c , d , e , f ) { null == a && ( a = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) ) ; this . id = a ; this . lonlat = b ; this . contentSize = null != c ? c : new OpenLayers . Size ( OpenLayers . Popup . WIDTH , OpenLayers . Popup . HEIGHT ) ; null != d && ( this . contentHTML = d ) ; this . backgroundColor = OpenLayers . Popup . COLOR ; this . opacity = OpenLayers . Popup . OPACITY ; this . border = OpenLayers . Popup . BORDER ; this . div = OpenLayers . Util . createDiv ( this . id , null , null , null , null , null , "hidden" ) ; this . div . className = this . displayClass ;
this . groupDiv = OpenLayers . Util . createDiv ( this . id + "_GroupDiv" , null , null , null , "relative" , null , "hidden" ) ; a = this . div . id + "_contentDiv" ; this . contentDiv = OpenLayers . Util . createDiv ( a , null , this . contentSize . clone ( ) , null , "relative" ) ; this . contentDiv . className = this . contentDisplayClass ; this . groupDiv . appendChild ( this . contentDiv ) ; this . div . appendChild ( this . groupDiv ) ; e && this . addCloseBox ( f ) ; this . registerEvents ( ) } , destroy : function ( ) { this . border = this . opacity = this . backgroundColor = this . contentHTML = this . size = this . lonlat = this . id =
null ; this . closeOnMove && this . map && this . map . events . unregister ( "movestart" , this , this . hide ) ; this . events . destroy ( ) ; this . events = null ; this . closeDiv && ( OpenLayers . Event . stopObservingElement ( this . closeDiv ) , this . groupDiv . removeChild ( this . closeDiv ) ) ; this . closeDiv = null ; this . div . removeChild ( this . groupDiv ) ; this . groupDiv = null ; null != this . map && this . map . removePopup ( this ) ; this . panMapIfOutOfView = this . padding = this . maxSize = this . minSize = this . autoSize = this . div = this . map = null } , draw : function ( a ) { null == a && null != this . lonlat && null !=
this . map && ( a = this . map . getLayerPxFromLonLat ( this . lonlat ) ) ; this . closeOnMove && this . map . events . register ( "movestart" , this , this . hide ) ; ! this . disableFirefoxOverflowHack && "firefox" == OpenLayers . BROWSER _NAME && ( this . map . events . register ( "movestart" , this , function ( ) { var a = document . defaultView . getComputedStyle ( this . contentDiv , null ) . getPropertyValue ( "overflow" ) ; "hidden" != a && ( this . contentDiv . _oldOverflow = a , this . contentDiv . style . overflow = "hidden" ) } ) , this . map . events . register ( "moveend" , this , function ( ) { var a = this . contentDiv . _oldOverflow ;
a && ( this . contentDiv . style . overflow = a , this . contentDiv . _oldOverflow = null ) } ) ) ; this . moveTo ( a ) ; ! this . autoSize && ! this . size && this . setSize ( this . contentSize ) ; this . setBackgroundColor ( ) ; this . setOpacity ( ) ; this . setBorder ( ) ; this . setContentHTML ( ) ; this . panMapIfOutOfView && this . panIntoView ( ) ; return this . div } , updatePosition : function ( ) { if ( this . lonlat && this . map ) { var a = this . map . getLayerPxFromLonLat ( this . lonlat ) ; a && this . moveTo ( a ) } } , moveTo : function ( a ) { null != a && null != this . div && ( this . div . style . left = a . x + "px" , this . div . style . top =
a . y + "px" ) } , visible : function ( ) { return OpenLayers . Element . visible ( this . div ) } , toggle : function ( ) { this . visible ( ) ? this . hide ( ) : this . show ( ) } , show : function ( ) { this . div . style . display = "" ; this . panMapIfOutOfView && this . panIntoView ( ) } , hide : function ( ) { this . div . style . display = "none" } , setSize : function ( a ) { this . size = a . clone ( ) ; var b = this . getContentDivPadding ( ) , c = b . left + b . right , d = b . top + b . bottom ; this . fixPadding ( ) ; c += this . padding . left + this . padding . right ; d += this . padding . top + this . padding . bottom ; if ( this . closeDiv ) var e = parseInt ( this . closeDiv . style . width ) ,
c = c + ( e + b . right ) ; this . size . w += c ; this . size . h += d ; "msie" == OpenLayers . BROWSER _NAME && ( this . contentSize . w += b . left + b . right , this . contentSize . h += b . bottom + b . top ) ; null != this . div && ( this . div . style . width = this . size . w + "px" , this . div . style . height = this . size . h + "px" ) ; null != this . contentDiv && ( this . contentDiv . style . width = a . w + "px" , this . contentDiv . style . height = a . h + "px" ) } , updateSize : function ( ) { var a = "<div class='" + this . contentDisplayClass + "'>" + this . contentDiv . innerHTML + "</div>" , b = this . map ? this . map . div : document . body , c = OpenLayers . Util . getRenderedDimensions ( a ,
null , { displayClass : this . displayClass , containerElement : b } ) , d = this . getSafeContentSize ( c ) , e = null ; d . equals ( c ) ? e = c : ( c = { w : d . w < c . w ? d . w : null , h : d . h < c . h ? d . h : null } , c . w && c . h ? e = d : ( a = OpenLayers . Util . getRenderedDimensions ( a , c , { displayClass : this . contentDisplayClass , containerElement : b } ) , "hidden" != OpenLayers . Element . getStyle ( this . contentDiv , "overflow" ) && a . equals ( d ) && ( d = OpenLayers . Util . getScrollbarWidth ( ) , c . w ? a . h += d : a . w += d ) , e = this . getSafeContentSize ( a ) ) ) ; this . setSize ( e ) } , setBackgroundColor : function ( a ) { void 0 != a && ( this . backgroundColor =
a ) ; null != this . div && ( this . div . style . backgroundColor = this . backgroundColor ) } , setOpacity : function ( a ) { void 0 != a && ( this . opacity = a ) ; null != this . div && ( this . div . style . opacity = this . opacity , this . div . style . filter = "alpha(opacity=" + 100 * this . opacity + ")" ) } , setBorder : function ( a ) { void 0 != a && ( this . border = a ) ; null != this . div && ( this . div . style . border = this . border ) } , setContentHTML : function ( a ) { null != a && ( this . contentHTML = a ) ; null != this . contentDiv && ( null != this . contentHTML && this . contentHTML != this . contentDiv . innerHTML ) && ( this . contentDiv . innerHTML =
this . contentHTML , this . autoSize && ( this . registerImageListeners ( ) , this . updateSize ( ) ) ) } , registerImageListeners : function ( ) { for ( var a = function ( ) { null !== this . popup . id && ( this . popup . updateSize ( ) , this . popup . visible ( ) && this . popup . panMapIfOutOfView && this . popup . panIntoView ( ) , OpenLayers . Event . stopObserving ( this . img , "load" , this . img . _onImageLoad ) ) } , b = this . contentDiv . getElementsByTagName ( "img" ) , c = 0 , d = b . length ; c < d ; c ++ ) { var e = b [ c ] ; if ( 0 == e . width || 0 == e . height ) e . _onImgLoad = OpenLayers . Function . bind ( a , { popup : this , img : e } ) ,
OpenLayers . Event . observe ( e , "load" , e . _onImgLoad ) } } , getSafeContentSize : function ( a ) { var a = a . clone ( ) , b = this . getContentDivPadding ( ) , c = b . left + b . right , d = b . top + b . bottom ; this . fixPadding ( ) ; c += this . padding . left + this . padding . right ; d += this . padding . top + this . padding . bottom ; if ( this . closeDiv ) var e = parseInt ( this . closeDiv . style . width ) , c = c + ( e + b . right ) ; this . minSize && ( a . w = Math . max ( a . w , this . minSize . w - c ) , a . h = Math . max ( a . h , this . minSize . h - d ) ) ; this . maxSize && ( a . w = Math . min ( a . w , this . maxSize . w - c ) , a . h = Math . min ( a . h , this . maxSize . h -
d ) ) ; if ( this . map && this . map . size ) { e = b = 0 ; if ( this . keepInMap && ! this . panMapIfOutOfView ) switch ( e = this . map . getPixelFromLonLat ( this . lonlat ) , this . relativePosition ) { case "tr" : b = e . x ; e = this . map . size . h - e . y ; break ; case "tl" : b = this . map . size . w - e . x ; e = this . map . size . h - e . y ; break ; case "bl" : b = this . map . size . w - e . x ; e = e . y ; break ; case "br" : b = e . x ; e = e . y ; break ; default : b = e . x , e = this . map . size . h - e . y } d = this . map . size . h - this . map . paddingForPopups . top - this . map . paddingForPopups . bottom - d - e ; a . w = Math . min ( a . w , this . map . size . w - this . map . paddingForPopups . left -
this . map . paddingForPopups . right - c - b ) ; a . h = Math . min ( a . h , d ) } return a } , getContentDivPadding : function ( ) { var a = this . _contentDivPadding ; if ( ! a && ( null == this . div . parentNode && ( this . div . style . display = "none" , document . body . appendChild ( this . div ) ) , this . _contentDivPadding = a = new OpenLayers . Bounds ( OpenLayers . Element . getStyle ( this . contentDiv , "padding-left" ) , OpenLayers . Element . getStyle ( this . contentDiv , "padding-bottom" ) , OpenLayers . Element . getStyle ( this . contentDiv , "padding-right" ) , OpenLayers . Element . getStyle ( this . contentDiv ,
"padding-top" ) ) , this . div . parentNode == document . body ) ) document . body . removeChild ( this . div ) , this . div . style . display = "" ; return a } , addCloseBox : function ( a ) { this . closeDiv = OpenLayers . Util . createDiv ( this . id + "_close" , null , { w : 17 , h : 17 } ) ; this . closeDiv . className = "olPopupCloseBox" ; var b = this . getContentDivPadding ( ) ; this . closeDiv . style . right = b . right + "px" ; this . closeDiv . style . top = b . top + "px" ; this . groupDiv . appendChild ( this . closeDiv ) ; a = a || function ( a ) { this . hide ( ) ; OpenLayers . Event . stop ( a ) } ; OpenLayers . Event . observe ( this . closeDiv ,
"touchend" , OpenLayers . Function . bindAsEventListener ( a , this ) ) ; OpenLayers . Event . observe ( this . closeDiv , "click" , OpenLayers . Function . bindAsEventListener ( a , this ) ) } , panIntoView : function ( ) { var a = this . map . getSize ( ) , b = this . map . getViewPortPxFromLayerPx ( new OpenLayers . Pixel ( parseInt ( this . div . style . left ) , parseInt ( this . div . style . top ) ) ) , c = b . clone ( ) ; b . x < this . map . paddingForPopups . left ? c . x = this . map . paddingForPopups . left : b . x + this . size . w > a . w - this . map . paddingForPopups . right && ( c . x = a . w - this . map . paddingForPopups . right - this . size . w ) ;
b . y < this . map . paddingForPopups . top ? c . y = this . map . paddingForPopups . top : b . y + this . size . h > a . h - this . map . paddingForPopups . bottom && ( c . y = a . h - this . map . paddingForPopups . bottom - this . size . h ) ; this . map . pan ( b . x - c . x , b . y - c . y ) } , registerEvents : function ( ) { this . events = new OpenLayers . Events ( this , this . div , null , ! 0 ) ; this . events . on ( { mousedown : this . onmousedown , mousemove : this . onmousemove , mouseup : this . onmouseup , click : this . onclick , mouseout : this . onmouseout , dblclick : this . ondblclick , touchstart : function ( a ) { OpenLayers . Event . stop ( a , ! 0 ) } ,
scope : this } ) } , onmousedown : function ( a ) { this . mousedown = ! 0 ; OpenLayers . Event . stop ( a , ! 0 ) } , onmousemove : function ( a ) { this . mousedown && OpenLayers . Event . stop ( a , ! 0 ) } , onmouseup : function ( a ) { this . mousedown && ( this . mousedown = ! 1 , OpenLayers . Event . stop ( a , ! 0 ) ) } , onclick : function ( a ) { OpenLayers . Event . stop ( a , ! 0 ) } , onmouseout : function ( ) { this . mousedown = ! 1 } , ondblclick : function ( a ) { OpenLayers . Event . stop ( a , ! 0 ) } , CLASS _NAME : "OpenLayers.Popup" } ) ; OpenLayers . Popup . WIDTH = 200 ; OpenLayers . Popup . HEIGHT = 200 ; OpenLayers . Popup . COLOR = "white" ;
OpenLayers . Popup . OPACITY = 1 ; OpenLayers . Popup . BORDER = "0px" ; OpenLayers . Popup . Anchored = OpenLayers . Class ( OpenLayers . Popup , { relativePosition : null , keepInMap : ! 0 , anchor : null , initialize : function ( a , b , c , d , e , f , g ) { OpenLayers . Popup . prototype . initialize . apply ( this , [ a , b , c , d , f , g ] ) ; this . anchor = null != e ? e : { size : new OpenLayers . Size ( 0 , 0 ) , offset : new OpenLayers . Pixel ( 0 , 0 ) } } , destroy : function ( ) { this . relativePosition = this . anchor = null ; OpenLayers . Popup . prototype . destroy . apply ( this , arguments ) } , show : function ( ) { this . updatePosition ( ) ; OpenLayers . Popup . prototype . show . apply ( this , arguments ) } ,
moveTo : function ( a ) { var b = this . relativePosition ; this . relativePosition = this . calculateRelativePosition ( a ) ; a = this . calculateNewPx ( a ) ; OpenLayers . Popup . prototype . moveTo . apply ( this , Array ( a ) ) ; this . relativePosition != b && this . updateRelativePosition ( ) } , setSize : function ( a ) { OpenLayers . Popup . prototype . setSize . apply ( this , arguments ) ; this . lonlat && this . map && this . moveTo ( this . map . getLayerPxFromLonLat ( this . lonlat ) ) } , calculateRelativePosition : function ( a ) { a = this . map . getLonLatFromLayerPx ( a ) ; a = this . map . getExtent ( ) . determineQuadrant ( a ) ;
return OpenLayers . Bounds . oppositeQuadrant ( a ) } , updateRelativePosition : function ( ) { } , calculateNewPx : function ( a ) { var a = a . offset ( this . anchor . offset ) , b = this . size || this . contentSize , c = "t" == this . relativePosition . charAt ( 0 ) ; a . y += c ? - b . h : this . anchor . size . h ; c = "l" == this . relativePosition . charAt ( 1 ) ; a . x += c ? - b . w : this . anchor . size . w ; return a } , CLASS _NAME : "OpenLayers.Popup.Anchored" } ) ; / *
Apache 2
Contains portions of Rico < http : //openrico.org/>
Copyright 2005 Sabre Airline Solutions
Licensed under the Apache License , Version 2.0 ( the "License" ) ; you
may not use this file except in compliance with the License . You
may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or
implied . See the License for the specific language governing
permissions and limitations under the License .
* /
OpenLayers . Console . warn ( "OpenLayers.Rico is deprecated" ) ; OpenLayers . Rico = OpenLayers . Rico || { } ;
OpenLayers . Rico . Color = OpenLayers . Class ( { initialize : function ( a , b , c ) { this . rgb = { r : a , g : b , b : c } } , setRed : function ( a ) { this . rgb . r = a } , setGreen : function ( a ) { this . rgb . g = a } , setBlue : function ( a ) { this . rgb . b = a } , setHue : function ( a ) { var b = this . asHSB ( ) ; b . h = a ; this . rgb = OpenLayers . Rico . Color . HSBtoRGB ( b . h , b . s , b . b ) } , setSaturation : function ( a ) { var b = this . asHSB ( ) ; b . s = a ; this . rgb = OpenLayers . Rico . Color . HSBtoRGB ( b . h , b . s , b . b ) } , setBrightness : function ( a ) { var b = this . asHSB ( ) ; b . b = a ; this . rgb = OpenLayers . Rico . Color . HSBtoRGB ( b . h , b . s , b . b ) } ,
darken : function ( a ) { var b = this . asHSB ( ) ; this . rgb = OpenLayers . Rico . Color . HSBtoRGB ( b . h , b . s , Math . max ( b . b - a , 0 ) ) } , brighten : function ( a ) { var b = this . asHSB ( ) ; this . rgb = OpenLayers . Rico . Color . HSBtoRGB ( b . h , b . s , Math . min ( b . b + a , 1 ) ) } , blend : function ( a ) { this . rgb . r = Math . floor ( ( this . rgb . r + a . rgb . r ) / 2 ) ; this . rgb . g = Math . floor ( ( this . rgb . g + a . rgb . g ) / 2 ) ; this . rgb . b = Math . floor ( ( this . rgb . b + a . rgb . b ) / 2 ) } , isBright : function ( ) { this . asHSB ( ) ; return 0.5 < this . asHSB ( ) . b } , isDark : function ( ) { return ! this . isBright ( ) } , asRGB : function ( ) { return "rgb(" +
this . rgb . r + "," + this . rgb . g + "," + this . rgb . b + ")" } , asHex : function ( ) { return "#" + this . rgb . r . toColorPart ( ) + this . rgb . g . toColorPart ( ) + this . rgb . b . toColorPart ( ) } , asHSB : function ( ) { return OpenLayers . Rico . Color . RGBtoHSB ( this . rgb . r , this . rgb . g , this . rgb . b ) } , toString : function ( ) { return this . asHex ( ) } } ) ;
OpenLayers . Rico . Color . createFromHex = function ( a ) { if ( 4 == a . length ) for ( var b = a , a = "#" , c = 1 ; 4 > c ; c ++ ) a += b . charAt ( c ) + b . charAt ( c ) ; 0 == a . indexOf ( "#" ) && ( a = a . substring ( 1 ) ) ; b = a . substring ( 0 , 2 ) ; c = a . substring ( 2 , 4 ) ; a = a . substring ( 4 , 6 ) ; return new OpenLayers . Rico . Color ( parseInt ( b , 16 ) , parseInt ( c , 16 ) , parseInt ( a , 16 ) ) } ;
OpenLayers . Rico . Color . createColorFromBackground = function ( a ) { var b = OpenLayers . Element . getStyle ( OpenLayers . Util . getElement ( a ) , "backgroundColor" ) ; return "transparent" == b && a . parentNode ? OpenLayers . Rico . Color . createColorFromBackground ( a . parentNode ) : null == b ? new OpenLayers . Rico . Color ( 255 , 255 , 255 ) : 0 == b . indexOf ( "rgb(" ) ? ( a = b . substring ( 4 , b . length - 1 ) . split ( "," ) , new OpenLayers . Rico . Color ( parseInt ( a [ 0 ] ) , parseInt ( a [ 1 ] ) , parseInt ( a [ 2 ] ) ) ) : 0 == b . indexOf ( "#" ) ? OpenLayers . Rico . Color . createFromHex ( b ) : new OpenLayers . Rico . Color ( 255 ,
255 , 255 ) } ;
OpenLayers . Rico . Color . HSBtoRGB = function ( a , b , c ) { var d = 0 , e = 0 , f = 0 ; if ( 0 == b ) f = e = d = parseInt ( 255 * c + 0.5 ) ; else { var a = 6 * ( a - Math . floor ( a ) ) , g = a - Math . floor ( a ) , h = c * ( 1 - b ) , i = c * ( 1 - b * g ) , b = c * ( 1 - b * ( 1 - g ) ) ; switch ( parseInt ( a ) ) { case 0 : d = 255 * c + 0.5 ; e = 255 * b + 0.5 ; f = 255 * h + 0.5 ; break ; case 1 : d = 255 * i + 0.5 ; e = 255 * c + 0.5 ; f = 255 * h + 0.5 ; break ; case 2 : d = 255 * h + 0.5 ; e = 255 * c + 0.5 ; f = 255 * b + 0.5 ; break ; case 3 : d = 255 * h + 0.5 ; e = 255 * i + 0.5 ; f = 255 * c + 0.5 ; break ; case 4 : d = 255 * b + 0.5 ; e = 255 * h + 0.5 ; f = 255 * c + 0.5 ; break ; case 5 : d = 255 * c + 0.5 , e = 255 * h + 0.5 , f = 255 * i + 0.5 } } return { r : parseInt ( d ) , g : parseInt ( e ) ,
b : parseInt ( f ) } } ; OpenLayers . Rico . Color . RGBtoHSB = function ( a , b , c ) { var d , e = a > b ? a : b ; c > e && ( e = c ) ; var f = a < b ? a : b ; c < f && ( f = c ) ; d = 0 != e ? ( e - f ) / e : 0 ; if ( 0 == d ) a = 0 ; else { var g = ( e - a ) / ( e - f ) , h = ( e - b ) / ( e - f ) , c = ( e - c ) / ( e - f ) , a = ( a == e ? c - h : b == e ? 2 + g - c : 4 + h - g ) / 6 ; 0 > a && ( a += 1 ) } return { h : a , s : d , b : e / 255 } } ; OpenLayers . Console . warn ( "OpenLayers.Rico is deprecated" ) ; OpenLayers . Rico = OpenLayers . Rico || { } ;
OpenLayers . Rico . Corner = { round : function ( a , b ) { a = OpenLayers . Util . getElement ( a ) ; this . _setOptions ( b ) ; var c = this . options . color ; "fromElement" == this . options . color && ( c = this . _background ( a ) ) ; var d = this . options . bgColor ; "fromParent" == this . options . bgColor && ( d = this . _background ( a . offsetParent ) ) ; this . _roundCornersImpl ( a , c , d ) } , changeColor : function ( a , b ) { a . style . backgroundColor = b ; for ( var c = a . parentNode . getElementsByTagName ( "span" ) , d = 0 ; d < c . length ; d ++ ) c [ d ] . style . backgroundColor = b } , changeOpacity : function ( a , b ) { var c = "alpha(opacity=" +
100 * b + ")" ; a . style . opacity = b ; a . style . filter = c ; for ( var d = a . parentNode . getElementsByTagName ( "span" ) , e = 0 ; e < d . length ; e ++ ) d [ e ] . style . opacity = b , d [ e ] . style . filter = c } , reRound : function ( a , b ) { var c = a . parentNode . childNodes [ 2 ] ; a . parentNode . removeChild ( a . parentNode . childNodes [ 0 ] ) ; a . parentNode . removeChild ( c ) ; this . round ( a . parentNode , b ) } , _roundCornersImpl : function ( a , b , c ) { this . options . border && this . _renderBorder ( a , c ) ; this . _isTopRounded ( ) && this . _roundTopCorners ( a , b , c ) ; this . _isBottomRounded ( ) && this . _roundBottomCorners ( a ,
b , c ) } , _renderBorder : function ( a , b ) { var c = "1px solid " + this . _borderColor ( b ) ; a . innerHTML = "<div " + ( "style='border-left: " + c + ";" + ( "border-right: " + c ) + "'" ) + ">" + a . innerHTML + "</div>" } , _roundTopCorners : function ( a , b , c ) { for ( var d = this . _createCorner ( c ) , e = 0 ; e < this . options . numSlices ; e ++ ) d . appendChild ( this . _createCornerSlice ( b , c , e , "top" ) ) ; a . style . paddingTop = 0 ; a . insertBefore ( d , a . firstChild ) } , _roundBottomCorners : function ( a , b , c ) { for ( var d = this . _createCorner ( c ) , e = this . options . numSlices - 1 ; 0 <= e ; e -- ) d . appendChild ( this . _createCornerSlice ( b ,
c , e , "bottom" ) ) ; a . style . paddingBottom = 0 ; a . appendChild ( d ) } , _createCorner : function ( a ) { var b = document . createElement ( "div" ) ; b . style . backgroundColor = this . _isTransparent ( ) ? "transparent" : a ; return b } , _createCornerSlice : function ( a , b , c , d ) { var e = document . createElement ( "span" ) , f = e . style ; f . backgroundColor = a ; f . display = "block" ; f . height = "1px" ; f . overflow = "hidden" ; f . fontSize = "1px" ; a = this . _borderColor ( a , b ) ; this . options . border && 0 == c ? ( f . borderTopStyle = "solid" , f . borderTopWidth = "1px" , f . borderLeftWidth = "0px" , f . borderRightWidth =
"0px" , f . borderBottomWidth = "0px" , f . height = "0px" , f . borderColor = a ) : a && ( f . borderColor = a , f . borderStyle = "solid" , f . borderWidth = "0px 1px" ) ; ! this . options . compact && c == this . options . numSlices - 1 && ( f . height = "2px" ) ; this . _setMargin ( e , c , d ) ; this . _setBorder ( e , c , d ) ; return e } , _setOptions : function ( a ) { this . options = { corners : "all" , color : "fromElement" , bgColor : "fromParent" , blend : ! 0 , border : ! 1 , compact : ! 1 } ; OpenLayers . Util . extend ( this . options , a || { } ) ; this . options . numSlices = this . options . compact ? 2 : 4 ; this . _isTransparent ( ) && ( this . options . blend =
! 1 ) } , _whichSideTop : function ( ) { return this . _hasString ( this . options . corners , "all" , "top" ) || 0 <= this . options . corners . indexOf ( "tl" ) && 0 <= this . options . corners . indexOf ( "tr" ) ? "" : 0 <= this . options . corners . indexOf ( "tl" ) ? "left" : 0 <= this . options . corners . indexOf ( "tr" ) ? "right" : "" } , _whichSideBottom : function ( ) { return this . _hasString ( this . options . corners , "all" , "bottom" ) || 0 <= this . options . corners . indexOf ( "bl" ) && 0 <= this . options . corners . indexOf ( "br" ) ? "" : 0 <= this . options . corners . indexOf ( "bl" ) ? "left" : 0 <= this . options . corners . indexOf ( "br" ) ?
"right" : "" } , _borderColor : function ( a , b ) { return "transparent" == a ? b : this . options . border ? this . options . border : this . options . blend ? this . _blend ( b , a ) : "" } , _setMargin : function ( a , b , c ) { b = this . _marginSize ( b ) ; c = "top" == c ? this . _whichSideTop ( ) : this . _whichSideBottom ( ) ; "left" == c ? ( a . style . marginLeft = b + "px" , a . style . marginRight = "0px" ) : "right" == c ? ( a . style . marginRight = b + "px" , a . style . marginLeft = "0px" ) : ( a . style . marginLeft = b + "px" , a . style . marginRight = b + "px" ) } , _setBorder : function ( a , b , c ) { b = this . _borderSize ( b ) ; c = "top" == c ? this . _whichSideTop ( ) :
this . _whichSideBottom ( ) ; "left" == c ? ( a . style . borderLeftWidth = b + "px" , a . style . borderRightWidth = "0px" ) : "right" == c ? ( a . style . borderRightWidth = b + "px" , a . style . borderLeftWidth = "0px" ) : ( a . style . borderLeftWidth = b + "px" , a . style . borderRightWidth = b + "px" ) ; ! 1 != this . options . border && ( a . style . borderLeftWidth = b + "px" , a . style . borderRightWidth = b + "px" ) } , _marginSize : function ( a ) { if ( this . _isTransparent ( ) ) return 0 ; var b = [ 5 , 3 , 2 , 1 ] , c = [ 3 , 2 , 1 , 0 ] , d = [ 2 , 1 ] , e = [ 1 , 0 ] ; return this . options . compact && this . options . blend ? e [ a ] : this . options . compact ?
d [ a ] : this . options . blend ? c [ a ] : b [ a ] } , _borderSize : function ( a ) { var b = [ 5 , 3 , 2 , 1 ] , c = [ 2 , 1 , 1 , 1 ] , d = [ 1 , 0 ] , e = [ 0 , 2 , 0 , 0 ] ; return this . options . compact && ( this . options . blend || this . _isTransparent ( ) ) ? 1 : this . options . compact ? d [ a ] : this . options . blend ? c [ a ] : this . options . border ? e [ a ] : this . _isTransparent ( ) ? b [ a ] : 0 } , _hasString : function ( a ) { for ( var b = 1 ; b < arguments . length ; b ++ ) if ( 0 <= a . indexOf ( arguments [ b ] ) ) return ! 0 ; return ! 1 } , _blend : function ( a , b ) { var c = OpenLayers . Rico . Color . createFromHex ( a ) ; c . blend ( OpenLayers . Rico . Color . createFromHex ( b ) ) ;
return c } , _background : function ( a ) { try { return OpenLayers . Rico . Color . createColorFromBackground ( a ) . asHex ( ) } catch ( b ) { return "#ffffff" } } , _isTransparent : function ( ) { return "transparent" == this . options . color } , _isTopRounded : function ( ) { return this . _hasString ( this . options . corners , "all" , "top" , "tl" , "tr" ) } , _isBottomRounded : function ( ) { return this . _hasString ( this . options . corners , "all" , "bottom" , "bl" , "br" ) } , _hasSingleTextChild : function ( a ) { return 1 == a . childNodes . length && 3 == a . childNodes [ 0 ] . nodeType } } ; OpenLayers . Popup . AnchoredBubble = OpenLayers . Class ( OpenLayers . Popup . Anchored , { rounded : ! 1 , initialize : function ( a , b , c , d , e , f , g ) { OpenLayers . Console . warn ( "AnchoredBubble is deprecated" ) ; this . padding = new OpenLayers . Bounds ( 0 , OpenLayers . Popup . AnchoredBubble . CORNER _SIZE , 0 , OpenLayers . Popup . AnchoredBubble . CORNER _SIZE ) ; OpenLayers . Popup . Anchored . prototype . initialize . apply ( this , arguments ) } , draw : function ( a ) { OpenLayers . Popup . Anchored . prototype . draw . apply ( this , arguments ) ; this . setContentHTML ( ) ; this . setBackgroundColor ( ) ;
this . setOpacity ( ) ; return this . div } , updateRelativePosition : function ( ) { this . setRicoCorners ( ) } , setSize : function ( a ) { OpenLayers . Popup . Anchored . prototype . setSize . apply ( this , arguments ) ; this . setRicoCorners ( ) } , setBackgroundColor : function ( a ) { void 0 != a && ( this . backgroundColor = a ) ; null != this . div && null != this . contentDiv && ( this . div . style . background = "transparent" , OpenLayers . Rico . Corner . changeColor ( this . groupDiv , this . backgroundColor ) ) } , setOpacity : function ( a ) { OpenLayers . Popup . Anchored . prototype . setOpacity . call ( this ,
a ) ; null != this . div && null != this . groupDiv && OpenLayers . Rico . Corner . changeOpacity ( this . groupDiv , this . opacity ) } , setBorder : function ( ) { this . border = 0 } , setRicoCorners : function ( ) { var a = { corners : this . getCornersToRound ( this . relativePosition ) , color : this . backgroundColor , bgColor : "transparent" , blend : ! 1 } ; this . rounded ? ( OpenLayers . Rico . Corner . reRound ( this . groupDiv , a ) , this . setBackgroundColor ( ) , this . setOpacity ( ) ) : ( OpenLayers . Rico . Corner . round ( this . div , a ) , this . rounded = ! 0 ) } , getCornersToRound : function ( ) { var a = [ "tl" , "tr" ,
"bl" , "br" ] , b = OpenLayers . Bounds . oppositeQuadrant ( this . relativePosition ) ; OpenLayers . Util . removeItem ( a , b ) ; return a . join ( " " ) } , CLASS _NAME : "OpenLayers.Popup.AnchoredBubble" } ) ; OpenLayers . Popup . AnchoredBubble . CORNER _SIZE = 5 ; OpenLayers . Protocol . WFS . v1 = OpenLayers . Class ( OpenLayers . Protocol , { version : null , srsName : "EPSG:4326" , featureType : null , featureNS : null , geometryName : "the_geom" , schema : null , featurePrefix : "feature" , formatOptions : null , readFormat : null , readOptions : null , initialize : function ( a ) { OpenLayers . Protocol . prototype . initialize . apply ( this , [ a ] ) ; a . format || ( this . format = OpenLayers . Format . WFST ( OpenLayers . Util . extend ( { version : this . version , featureType : this . featureType , featureNS : this . featureNS , featurePrefix : this . featurePrefix , geometryName : this . geometryName ,
srsName : this . srsName , schema : this . schema } , this . formatOptions ) ) ) ; ! a . geometryName && 1 < parseFloat ( this . format . version ) && this . setGeometryName ( null ) } , destroy : function ( ) { this . options && ! this . options . format && this . format . destroy ( ) ; this . format = null ; OpenLayers . Protocol . prototype . destroy . apply ( this ) } , read : function ( a ) { OpenLayers . Protocol . prototype . read . apply ( this , arguments ) ; a = OpenLayers . Util . extend ( { } , a ) ; OpenLayers . Util . applyDefaults ( a , this . options || { } ) ; var b = new OpenLayers . Protocol . Response ( { requestType : "read" } ) ,
c = OpenLayers . Format . XML . prototype . write . apply ( this . format , [ this . format . writeNode ( "wfs:GetFeature" , a ) ] ) ; b . priv = OpenLayers . Request . POST ( { url : a . url , callback : this . createCallback ( this . handleRead , b , a ) , params : a . params , headers : a . headers , data : c } ) ; return b } , setFeatureType : function ( a ) { this . featureType = a ; this . format . featureType = a } , setGeometryName : function ( a ) { this . geometryName = a ; this . format . geometryName = a } , handleRead : function ( a , b ) { b = OpenLayers . Util . extend ( { } , b ) ; OpenLayers . Util . applyDefaults ( b , this . options ) ; if ( b . callback ) { var c =
a . priv ; 200 <= c . status && 300 > c . status ? ( c = this . parseResponse ( c , b . readOptions ) ) && ! 1 !== c . success ? ( b . readOptions && "object" == b . readOptions . output ? OpenLayers . Util . extend ( a , c ) : a . features = c , a . code = OpenLayers . Protocol . Response . SUCCESS ) : ( a . code = OpenLayers . Protocol . Response . FAILURE , a . error = c ) : a . code = OpenLayers . Protocol . Response . FAILURE ; b . callback . call ( b . scope , a ) } } , parseResponse : function ( a , b ) { var c = a . responseXML ; if ( ! c || ! c . documentElement ) c = a . responseText ; if ( ! c || 0 >= c . length ) return null ; c = null !== this . readFormat ? this . readFormat . read ( c ) :
this . format . read ( c , b ) ; if ( ! this . featureNS ) { var d = this . readFormat || this . format ; this . featureNS = d . featureNS ; d . autoConfig = ! 1 ; this . geometryName || this . setGeometryName ( d . geometryName ) } return c } , commit : function ( a , b ) { b = OpenLayers . Util . extend ( { } , b ) ; OpenLayers . Util . applyDefaults ( b , this . options ) ; var c = new OpenLayers . Protocol . Response ( { requestType : "commit" , reqFeatures : a } ) ; c . priv = OpenLayers . Request . POST ( { url : b . url , headers : b . headers , data : this . format . write ( a , b ) , callback : this . createCallback ( this . handleCommit , c , b ) } ) ;
return c } , handleCommit : function ( a , b ) { if ( b . callback ) { var c = a . priv , d = c . responseXML ; if ( ! d || ! d . documentElement ) d = c . responseText ; c = this . format . read ( d ) || { } ; a . insertIds = c . insertIds || [ ] ; c . success ? a . code = OpenLayers . Protocol . Response . SUCCESS : ( a . code = OpenLayers . Protocol . Response . FAILURE , a . error = c ) ; b . callback . call ( b . scope , a ) } } , filterDelete : function ( a , b ) { b = OpenLayers . Util . extend ( { } , b ) ; OpenLayers . Util . applyDefaults ( b , this . options ) ; new OpenLayers . Protocol . Response ( { requestType : "commit" } ) ; var c = this . format . createElementNSPlus ( "wfs:Transaction" ,
{ attributes : { service : "WFS" , version : this . version } } ) , d = this . format . createElementNSPlus ( "wfs:Delete" , { attributes : { typeName : ( b . featureNS ? this . featurePrefix + ":" : "" ) + b . featureType } } ) ; b . featureNS && d . setAttribute ( "xmlns:" + this . featurePrefix , b . featureNS ) ; var e = this . format . writeNode ( "ogc:Filter" , a ) ; d . appendChild ( e ) ; c . appendChild ( d ) ; c = OpenLayers . Format . XML . prototype . write . apply ( this . format , [ c ] ) ; return OpenLayers . Request . POST ( { url : this . url , callback : b . callback || function ( ) { } , data : c } ) } , abort : function ( a ) { a && a . priv . abort ( ) } ,
CLASS _NAME : "OpenLayers.Protocol.WFS.v1" } ) ; OpenLayers . Handler . Point = OpenLayers . Class ( OpenLayers . Handler , { point : null , layer : null , multi : ! 1 , citeCompliant : ! 1 , mouseDown : ! 1 , stoppedDown : null , lastDown : null , lastUp : null , persist : ! 1 , stopDown : ! 1 , stopUp : ! 1 , layerOptions : null , pixelTolerance : 5 , touch : ! 1 , lastTouchPx : null , initialize : function ( a , b , c ) { if ( ! c || ! c . layerOptions || ! c . layerOptions . styleMap ) this . style = OpenLayers . Util . extend ( OpenLayers . Feature . Vector . style [ "default" ] , { } ) ; OpenLayers . Handler . prototype . initialize . apply ( this , arguments ) } , activate : function ( ) { if ( ! OpenLayers . Handler . prototype . activate . apply ( this ,
arguments ) ) return ! 1 ; var a = OpenLayers . Util . extend ( { displayInLayerSwitcher : ! 1 , calculateInRange : OpenLayers . Function . True , wrapDateLine : this . citeCompliant } , this . layerOptions ) ; this . layer = new OpenLayers . Layer . Vector ( this . CLASS _NAME , a ) ; this . map . addLayer ( this . layer ) ; return ! 0 } , createFeature : function ( a ) { a = this . layer . getLonLatFromViewPortPx ( a ) ; a = new OpenLayers . Geometry . Point ( a . lon , a . lat ) ; this . point = new OpenLayers . Feature . Vector ( a ) ; this . callback ( "create" , [ this . point . geometry , this . point ] ) ; this . point . geometry . clearBounds ( ) ;
this . layer . addFeatures ( [ this . point ] , { silent : ! 0 } ) } , deactivate : function ( ) { if ( ! OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) ) return ! 1 ; this . cancel ( ) ; null != this . layer . map && ( this . destroyFeature ( ! 0 ) , this . layer . destroy ( ! 1 ) ) ; this . layer = null ; this . touch = ! 1 ; return ! 0 } , destroyFeature : function ( a ) { this . layer && ( a || ! this . persist ) && this . layer . destroyFeatures ( ) ; this . point = null } , destroyPersistedFeature : function ( ) { var a = this . layer ; a && 1 < a . features . length && this . layer . features [ 0 ] . destroy ( ) } , finalize : function ( a ) { this . mouseDown =
! 1 ; this . lastTouchPx = this . lastUp = this . lastDown = null ; this . callback ( a ? "cancel" : "done" , [ this . geometryClone ( ) ] ) ; this . destroyFeature ( a ) } , cancel : function ( ) { this . finalize ( ! 0 ) } , click : function ( a ) { OpenLayers . Event . stop ( a ) ; return ! 1 } , dblclick : function ( a ) { OpenLayers . Event . stop ( a ) ; return ! 1 } , modifyFeature : function ( a ) { this . point || this . createFeature ( a ) ; a = this . layer . getLonLatFromViewPortPx ( a ) ; this . point . geometry . x = a . lon ; this . point . geometry . y = a . lat ; this . callback ( "modify" , [ this . point . geometry , this . point , ! 1 ] ) ; this . point . geometry . clearBounds ( ) ;
this . drawFeature ( ) } , drawFeature : function ( ) { this . layer . drawFeature ( this . point , this . style ) } , getGeometry : function ( ) { var a = this . point && this . point . geometry ; a && this . multi && ( a = new OpenLayers . Geometry . MultiPoint ( [ a ] ) ) ; return a } , geometryClone : function ( ) { var a = this . getGeometry ( ) ; return a && a . clone ( ) } , mousedown : function ( a ) { return this . down ( a ) } , touchstart : function ( a ) { this . touch || ( this . touch = ! 0 , this . map . events . un ( { mousedown : this . mousedown , mouseup : this . mouseup , mousemove : this . mousemove , click : this . click , dblclick : this . dblclick ,
scope : this } ) ) ; this . lastTouchPx = a . xy ; return this . down ( a ) } , mousemove : function ( a ) { return this . move ( a ) } , touchmove : function ( a ) { this . lastTouchPx = a . xy ; return this . move ( a ) } , mouseup : function ( a ) { return this . up ( a ) } , touchend : function ( a ) { a . xy = this . lastTouchPx ; return this . up ( a ) } , down : function ( a ) { this . mouseDown = ! 0 ; this . lastDown = a . xy ; this . touch || this . modifyFeature ( a . xy ) ; this . stoppedDown = this . stopDown ; return ! this . stopDown } , move : function ( a ) { ! this . touch && ( ! this . mouseDown || this . stoppedDown ) && this . modifyFeature ( a . xy ) ;
return ! 0 } , up : function ( a ) { this . mouseDown = ! 1 ; this . stoppedDown = this . stopDown ; return this . checkModifiers ( a ) && ( ! this . lastUp || ! this . lastUp . equals ( a . xy ) ) && this . lastDown && this . passesTolerance ( this . lastDown , a . xy , this . pixelTolerance ) ? ( this . touch && this . modifyFeature ( a . xy ) , this . persist && this . destroyPersistedFeature ( ) , this . lastUp = a . xy , this . finalize ( ) , ! this . stopUp ) : ! 0 } , mouseout : function ( a ) { OpenLayers . Util . mouseLeft ( a , this . map . viewPortDiv ) && ( this . stoppedDown = this . stopDown , this . mouseDown = ! 1 ) } , passesTolerance : function ( a ,
b , c ) { var d = ! 0 ; null != c && a && b && a . distanceTo ( b ) > c && ( d = ! 1 ) ; return d } , CLASS _NAME : "OpenLayers.Handler.Point" } ) ; OpenLayers . Handler . Path = OpenLayers . Class ( OpenLayers . Handler . Point , { line : null , maxVertices : null , doubleTouchTolerance : 20 , freehand : ! 1 , freehandToggle : "shiftKey" , timerId : null , redoStack : null , createFeature : function ( a ) { a = this . layer . getLonLatFromViewPortPx ( a ) ; a = new OpenLayers . Geometry . Point ( a . lon , a . lat ) ; this . point = new OpenLayers . Feature . Vector ( a ) ; this . line = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . LineString ( [ this . point . geometry ] ) ) ; this . callback ( "create" , [ this . point . geometry , this . getSketch ( ) ] ) ;
this . point . geometry . clearBounds ( ) ; this . layer . addFeatures ( [ this . line , this . point ] , { silent : ! 0 } ) } , destroyFeature : function ( a ) { OpenLayers . Handler . Point . prototype . destroyFeature . call ( this , a ) ; this . line = null } , destroyPersistedFeature : function ( ) { var a = this . layer ; a && 2 < a . features . length && this . layer . features [ 0 ] . destroy ( ) } , removePoint : function ( ) { this . point && this . layer . removeFeatures ( [ this . point ] ) } , addPoint : function ( a ) { this . layer . removeFeatures ( [ this . point ] ) ; a = this . layer . getLonLatFromViewPortPx ( a ) ; this . point = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Point ( a . lon ,
a . lat ) ) ; this . line . geometry . addComponent ( this . point . geometry , this . line . geometry . components . length ) ; this . layer . addFeatures ( [ this . point ] ) ; this . callback ( "point" , [ this . point . geometry , this . getGeometry ( ) ] ) ; this . callback ( "modify" , [ this . point . geometry , this . getSketch ( ) ] ) ; this . drawFeature ( ) ; delete this . redoStack } , insertXY : function ( a , b ) { this . line . geometry . addComponent ( new OpenLayers . Geometry . Point ( a , b ) , this . getCurrentPointIndex ( ) ) ; this . drawFeature ( ) ; delete this . redoStack } , insertDeltaXY : function ( a , b ) { var c = this . line . geometry . components [ this . getCurrentPointIndex ( ) -
1 ] ; c && ( ! isNaN ( c . x ) && ! isNaN ( c . y ) ) && this . insertXY ( c . x + a , c . y + b ) } , insertDirectionLength : function ( a , b ) { var a = a * ( Math . PI / 180 ) , c = b * Math . cos ( a ) , d = b * Math . sin ( a ) ; this . insertDeltaXY ( c , d ) } , insertDeflectionLength : function ( a , b ) { var c = this . getCurrentPointIndex ( ) - 1 ; if ( 0 < c ) { var d = this . line . geometry . components [ c ] , c = this . line . geometry . components [ c - 1 ] ; this . insertDirectionLength ( 180 * Math . atan2 ( d . y - c . y , d . x - c . x ) / Math . PI + a , b ) } } , getCurrentPointIndex : function ( ) { return this . line . geometry . components . length - 1 } , undo : function ( ) { var a =
this . line . geometry , b = a . components , c = this . getCurrentPointIndex ( ) - 1 , b = b [ c ] ; if ( a = a . removeComponent ( b ) ) this . redoStack || ( this . redoStack = [ ] ) , this . redoStack . push ( b ) , this . drawFeature ( ) ; return a } , redo : function ( ) { var a = this . redoStack && this . redoStack . pop ( ) ; a && ( this . line . geometry . addComponent ( a , this . getCurrentPointIndex ( ) ) , this . drawFeature ( ) ) ; return ! ! a } , freehandMode : function ( a ) { return this . freehandToggle && a [ this . freehandToggle ] ? ! this . freehand : this . freehand } , modifyFeature : function ( a , b ) { this . line || this . createFeature ( a ) ;
var c = this . layer . getLonLatFromViewPortPx ( a ) ; this . point . geometry . x = c . lon ; this . point . geometry . y = c . lat ; this . callback ( "modify" , [ this . point . geometry , this . getSketch ( ) , b ] ) ; this . point . geometry . clearBounds ( ) ; this . drawFeature ( ) } , drawFeature : function ( ) { this . layer . drawFeature ( this . line , this . style ) ; this . layer . drawFeature ( this . point , this . style ) } , getSketch : function ( ) { return this . line } , getGeometry : function ( ) { var a = this . line && this . line . geometry ; a && this . multi && ( a = new OpenLayers . Geometry . MultiLineString ( [ a ] ) ) ; return a } ,
touchstart : function ( a ) { if ( this . timerId && this . passesTolerance ( this . lastTouchPx , a . xy , this . doubleTouchTolerance ) ) return this . finishGeometry ( ) , window . clearTimeout ( this . timerId ) , this . timerId = null , ! 1 ; this . timerId && ( window . clearTimeout ( this . timerId ) , this . timerId = null ) ; this . timerId = window . setTimeout ( OpenLayers . Function . bind ( function ( ) { this . timerId = null } , this ) , 300 ) ; return OpenLayers . Handler . Point . prototype . touchstart . call ( this , a ) } , down : function ( a ) { var b = this . stopDown ; this . freehandMode ( a ) && ( b = ! 0 , this . touch &&
( this . modifyFeature ( a . xy , ! ! this . lastUp ) , OpenLayers . Event . stop ( a ) ) ) ; ! this . touch && ( ! this . lastDown || ! this . passesTolerance ( this . lastDown , a . xy , this . pixelTolerance ) ) && this . modifyFeature ( a . xy , ! ! this . lastUp ) ; this . mouseDown = ! 0 ; this . lastDown = a . xy ; this . stoppedDown = b ; return ! b } , move : function ( a ) { if ( this . stoppedDown && this . freehandMode ( a ) ) return this . persist && this . destroyPersistedFeature ( ) , this . maxVertices && this . line && this . line . geometry . components . length === this . maxVertices ? ( this . removePoint ( ) , this . finalize ( ) ) : this . addPoint ( a . xy ) ,
! 1 ; ! this . touch && ( ! this . mouseDown || this . stoppedDown ) && this . modifyFeature ( a . xy , ! ! this . lastUp ) ; return ! 0 } , up : function ( a ) { if ( this . mouseDown && ( ! this . lastUp || ! this . lastUp . equals ( a . xy ) ) ) this . stoppedDown && this . freehandMode ( a ) ? ( this . persist && this . destroyPersistedFeature ( ) , this . removePoint ( ) , this . finalize ( ) ) : this . passesTolerance ( this . lastDown , a . xy , this . pixelTolerance ) && ( this . touch && this . modifyFeature ( a . xy ) , null == this . lastUp && this . persist && this . destroyPersistedFeature ( ) , this . addPoint ( a . xy ) , this . lastUp = a . xy , this . line . geometry . components . length ===
this . maxVertices + 1 && this . finishGeometry ( ) ) ; this . stoppedDown = this . stopDown ; this . mouseDown = ! 1 ; return ! this . stopUp } , finishGeometry : function ( ) { this . line . geometry . removeComponent ( this . line . geometry . components [ this . line . geometry . components . length - 1 ] ) ; this . removePoint ( ) ; this . finalize ( ) } , dblclick : function ( a ) { this . freehandMode ( a ) || this . finishGeometry ( ) ; return ! 1 } , CLASS _NAME : "OpenLayers.Handler.Path" } ) ; OpenLayers . Spherical = OpenLayers . Spherical || { } ; OpenLayers . Spherical . DEFAULT _RADIUS = 6378137 ; OpenLayers . Spherical . computeDistanceBetween = function ( a , b , c ) { var c = c || OpenLayers . Spherical . DEFAULT _RADIUS , d = Math . sin ( Math . PI * ( b . lon - a . lon ) / 360 ) , e = Math . sin ( Math . PI * ( b . lat - a . lat ) / 360 ) , a = e * e + d * d * Math . cos ( Math . PI * a . lat / 180 ) * Math . cos ( Math . PI * b . lat / 180 ) ; return 2 * c * Math . atan2 ( Math . sqrt ( a ) , Math . sqrt ( 1 - a ) ) } ;
OpenLayers . Spherical . computeHeading = function ( a , b ) { var c = Math . sin ( Math . PI * ( a . lon - b . lon ) / 180 ) * Math . cos ( Math . PI * b . lat / 180 ) , d = Math . cos ( Math . PI * a . lat / 180 ) * Math . sin ( Math . PI * b . lat / 180 ) - Math . sin ( Math . PI * a . lat / 180 ) * Math . cos ( Math . PI * b . lat / 180 ) * Math . cos ( Math . PI * ( a . lon - b . lon ) / 180 ) ; return 180 * Math . atan2 ( c , d ) / Math . PI } ; OpenLayers . Control . CacheWrite = OpenLayers . Class ( OpenLayers . Control , { layers : null , imageFormat : "image/png" , quotaRegEx : /quota/i , setMap : function ( a ) { OpenLayers . Control . prototype . setMap . apply ( this , arguments ) ; var b , c = this . layers || a . layers ; for ( b = c . length - 1 ; 0 <= b ; -- b ) this . addLayer ( { layer : c [ b ] } ) ; if ( ! this . layers ) a . events . on ( { addlayer : this . addLayer , removeLayer : this . removeLayer , scope : this } ) } , addLayer : function ( a ) { a . layer . events . on ( { tileloadstart : this . makeSameOrigin , tileloaded : this . cache , scope : this } ) } , removeLayer : function ( a ) { a . layer . events . un ( { tileloadstart : this . makeSameOrigin ,
tileloaded : this . cache , scope : this } ) } , makeSameOrigin : function ( a ) { if ( this . active && ( a = a . tile , a instanceof OpenLayers . Tile . Image && ! a . crossOriginKeyword && "data:" !== a . url . substr ( 0 , 5 ) ) ) { var b = OpenLayers . Request . makeSameOrigin ( a . url , OpenLayers . ProxyHost ) ; OpenLayers . Control . CacheWrite . urlMap [ b ] = a . url ; a . url = b } } , cache : function ( a ) { if ( this . active && window . localStorage && ( a = a . tile , a instanceof OpenLayers . Tile . Image && "data:" !== a . url . substr ( 0 , 5 ) ) ) try { var b = a . getCanvasContext ( ) ; if ( b ) { var c = OpenLayers . Control . CacheWrite . urlMap ;
window . localStorage . setItem ( "olCache_" + ( c [ a . url ] || a . url ) , b . canvas . toDataURL ( this . imageFormat ) ) ; delete c [ a . url ] } } catch ( d ) { ( b = d . name || d . message ) && this . quotaRegEx . test ( b ) ? this . events . triggerEvent ( "cachefull" , { tile : a } ) : OpenLayers . Console . error ( d . toString ( ) ) } } , destroy : function ( ) { if ( this . layers || this . map ) { var a , b = this . layers || this . map . layers ; for ( a = b . length - 1 ; 0 <= a ; -- a ) this . removeLayer ( { layer : b [ a ] } ) } this . map && this . map . events . un ( { addlayer : this . addLayer , removeLayer : this . removeLayer , scope : this } ) ; OpenLayers . Control . prototype . destroy . apply ( this ,
arguments ) } , CLASS _NAME : "OpenLayers.Control.CacheWrite" } ) ; OpenLayers . Control . CacheWrite . clearCache = function ( ) { if ( window . localStorage ) { var a , b ; for ( a = window . localStorage . length - 1 ; 0 <= a ; -- a ) b = window . localStorage . key ( a ) , "olCache_" === b . substr ( 0 , 8 ) && window . localStorage . removeItem ( b ) } } ; OpenLayers . Control . CacheWrite . urlMap = { } ; OpenLayers . Format . Context = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { layerOptions : null , layerParams : null , read : function ( a , b ) { var c = OpenLayers . Format . XML . VersionedOGC . prototype . read . apply ( this , arguments ) ; if ( b && b . map ) if ( this . context = c , b . map instanceof OpenLayers . Map ) c = this . mergeContextToMap ( c , b . map ) ; else { var d = b . map ; if ( OpenLayers . Util . isElement ( d ) || "string" == typeof d ) d = { div : d } ; c = this . contextToMap ( c , d ) } return c } , getLayerFromContext : function ( a ) { var b , c , d = { queryable : a . queryable , visibility : a . visibility ,
maxExtent : a . maxExtent , metadata : OpenLayers . Util . applyDefaults ( a . metadata , { styles : a . styles , formats : a . formats , "abstract" : a [ "abstract" ] , dataURL : a . dataURL } ) , numZoomLevels : a . numZoomLevels , units : a . units , isBaseLayer : a . isBaseLayer , opacity : a . opacity , displayInLayerSwitcher : a . displayInLayerSwitcher , singleTile : a . singleTile , tileSize : a . tileSize ? new OpenLayers . Size ( a . tileSize . width , a . tileSize . height ) : void 0 , minScale : a . minScale || a . maxScaleDenominator , maxScale : a . maxScale || a . minScaleDenominator , srs : a . srs , dimensions : a . dimensions ,
metadataURL : a . metadataURL } ; this . layerOptions && OpenLayers . Util . applyDefaults ( d , this . layerOptions ) ; var e = { layers : a . name , transparent : a . transparent , version : a . version } ; if ( a . formats && 0 < a . formats . length ) { e . format = a . formats [ 0 ] . value ; b = 0 ; for ( c = a . formats . length ; b < c ; b ++ ) { var f = a . formats [ b ] ; if ( ! 0 == f . current ) { e . format = f . value ; break } } } if ( a . styles && 0 < a . styles . length ) { b = 0 ; for ( c = a . styles . length ; b < c ; b ++ ) if ( f = a . styles [ b ] , ! 0 == f . current ) { f . href ? e . sld = f . href : f . body ? e . sld _body = f . body : e . styles = f . name ; break } } this . layerParams &&
OpenLayers . Util . applyDefaults ( e , this . layerParams ) ; b = null ; c = a . service ; c == OpenLayers . Format . Context . serviceTypes . WFS ? ( d . strategies = [ new OpenLayers . Strategy . BBOX ] , d . protocol = new OpenLayers . Protocol . WFS ( { url : a . url , featurePrefix : a . name . split ( ":" ) [ 0 ] , featureType : a . name . split ( ":" ) . pop ( ) } ) , b = new OpenLayers . Layer . Vector ( a . title || a . name , d ) ) : c == OpenLayers . Format . Context . serviceTypes . KML ? ( d . strategies = [ new OpenLayers . Strategy . Fixed ] , d . protocol = new OpenLayers . Protocol . HTTP ( { url : a . url , format : new OpenLayers . Format . KML } ) ,
b = new OpenLayers . Layer . Vector ( a . title || a . name , d ) ) : c == OpenLayers . Format . Context . serviceTypes . GML ? ( d . strategies = [ new OpenLayers . Strategy . Fixed ] , d . protocol = new OpenLayers . Protocol . HTTP ( { url : a . url , format : new OpenLayers . Format . GML } ) , b = new OpenLayers . Layer . Vector ( a . title || a . name , d ) ) : a . features ? ( b = new OpenLayers . Layer . Vector ( a . title || a . name , d ) , b . addFeatures ( a . features ) ) : ! 0 !== a . categoryLayer && ( b = new OpenLayers . Layer . WMS ( a . title || a . name , a . url , e , d ) ) ; return b } , getLayersFromContext : function ( a ) { for ( var b = [ ] , c =
0 , d = a . length ; c < d ; c ++ ) { var e = this . getLayerFromContext ( a [ c ] ) ; null !== e && b . push ( e ) } return b } , contextToMap : function ( a , b ) { b = OpenLayers . Util . applyDefaults ( { maxExtent : a . maxExtent , projection : a . projection , units : a . units } , b ) ; b . maxExtent && ( b . maxResolution = b . maxExtent . getWidth ( ) / OpenLayers . Map . TILE _WIDTH ) ; b . metadata = { contactInformation : a . contactInformation , "abstract" : a [ "abstract" ] , keywords : a . keywords , logo : a . logo , descriptionURL : a . descriptionURL } ; var c = new OpenLayers . Map ( b ) ; c . addLayers ( this . getLayersFromContext ( a . layersContext ) ) ;
c . setCenter ( a . bounds . getCenterLonLat ( ) , c . getZoomForExtent ( a . bounds , ! 0 ) ) ; return c } , mergeContextToMap : function ( a , b ) { b . addLayers ( this . getLayersFromContext ( a . layersContext ) ) ; return b } , write : function ( a , b ) { a = this . toContext ( a ) ; return OpenLayers . Format . XML . VersionedOGC . prototype . write . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Format.Context" } ) ;
OpenLayers . Format . Context . serviceTypes = { WMS : "urn:ogc:serviceType:WMS" , WFS : "urn:ogc:serviceType:WFS" , WCS : "urn:ogc:serviceType:WCS" , GML : "urn:ogc:serviceType:GML" , SLD : "urn:ogc:serviceType:SLD" , FES : "urn:ogc:serviceType:FES" , KML : "urn:ogc:serviceType:KML" } ; OpenLayers . Format . WMC = OpenLayers . Class ( OpenLayers . Format . Context , { defaultVersion : "1.1.0" , layerToContext : function ( a ) { var b = this . getParser ( ) , c = { queryable : a . queryable , visibility : a . visibility , name : a . params . LAYERS , title : a . name , "abstract" : a . metadata [ "abstract" ] , dataURL : a . metadata . dataURL , metadataURL : a . metadataURL , server : { version : a . params . VERSION , url : a . url } , maxExtent : a . maxExtent , transparent : a . params . TRANSPARENT , numZoomLevels : a . numZoomLevels , units : a . units , isBaseLayer : a . isBaseLayer , opacity : 1 == a . opacity ? void 0 :
a . opacity , displayInLayerSwitcher : a . displayInLayerSwitcher , singleTile : a . singleTile , tileSize : a . singleTile || ! a . tileSize ? void 0 : { width : a . tileSize . w , height : a . tileSize . h } , minScale : a . options . resolutions || a . options . scales || a . options . maxResolution || a . options . minScale ? a . minScale : void 0 , maxScale : a . options . resolutions || a . options . scales || a . options . minResolution || a . options . maxScale ? a . maxScale : void 0 , formats : [ ] , styles : [ ] , srs : a . srs , dimensions : a . dimensions } ; a . metadata . servertitle && ( c . server . title = a . metadata . servertitle ) ;
if ( a . metadata . formats && 0 < a . metadata . formats . length ) for ( var d = 0 , e = a . metadata . formats . length ; d < e ; d ++ ) { var f = a . metadata . formats [ d ] ; c . formats . push ( { value : f . value , current : f . value == a . params . FORMAT } ) } else c . formats . push ( { value : a . params . FORMAT , current : ! 0 } ) ; if ( a . metadata . styles && 0 < a . metadata . styles . length ) { d = 0 ; for ( e = a . metadata . styles . length ; d < e ; d ++ ) b = a . metadata . styles [ d ] , b . current = b . href == a . params . SLD || b . body == a . params . SLD _BODY || b . name == a . params . STYLES ? ! 0 : ! 1 , c . styles . push ( b ) } else c . styles . push ( { href : a . params . SLD ,
body : a . params . SLD _BODY , name : a . params . STYLES || b . defaultStyleName , title : b . defaultStyleTitle , current : ! 0 } ) ; return c } , toContext : function ( a ) { var b = { } , c = a . layers ; if ( "OpenLayers.Map" == a . CLASS _NAME ) { var d = a . metadata || { } ; b . size = a . getSize ( ) ; b . bounds = a . getExtent ( ) ; b . projection = a . projection ; b . title = a . title ; b . keywords = d . keywords ; b [ "abstract" ] = d [ "abstract" ] ; b . logo = d . logo ; b . descriptionURL = d . descriptionURL ; b . contactInformation = d . contactInformation ; b . maxExtent = a . maxExtent } else OpenLayers . Util . applyDefaults ( b , a ) , void 0 !=
b . layers && delete b . layers ; void 0 == b . layersContext && ( b . layersContext = [ ] ) ; if ( void 0 != c && OpenLayers . Util . isArray ( c ) ) { a = 0 ; for ( d = c . length ; a < d ; a ++ ) { var e = c [ a ] ; e instanceof OpenLayers . Layer . WMS && b . layersContext . push ( this . layerToContext ( e ) ) } } return b } , CLASS _NAME : "OpenLayers.Format.WMC" } ) ; OpenLayers . Format . WMC . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ol : "http://openlayers.org/context" , wmc : "http://www.opengis.net/context" , sld : "http://www.opengis.net/sld" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , schemaLocation : "" , getNamespacePrefix : function ( a ) { var b = null ; if ( null == a ) b = this . namespaces [ this . defaultPrefix ] ; else for ( b in this . namespaces ) if ( this . namespaces [ b ] == a ) break ; return b } , defaultPrefix : "wmc" , rootPrefix : null , defaultStyleName : "" ,
defaultStyleTitle : "Default" , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a = a . documentElement ; this . rootPrefix = a . prefix ; var b = { version : a . getAttribute ( "version" ) } ; this . runChildNodes ( b , a ) ; return b } , runChildNodes : function ( a , b ) { for ( var c = b . childNodes , d , e , f , g = 0 , h = c . length ; g < h ; ++ g ) d = c [ g ] , 1 == d . nodeType && ( e = this . getNamespacePrefix ( d . namespaceURI ) , f = d . nodeName . split ( ":" ) . pop ( ) ,
( e = this [ "read_" + e + "_" + f ] ) && e . apply ( this , [ a , d ] ) ) } , read _wmc _General : function ( a , b ) { this . runChildNodes ( a , b ) } , read _wmc _BoundingBox : function ( a , b ) { a . projection = b . getAttribute ( "SRS" ) ; a . bounds = new OpenLayers . Bounds ( b . getAttribute ( "minx" ) , b . getAttribute ( "miny" ) , b . getAttribute ( "maxx" ) , b . getAttribute ( "maxy" ) ) } , read _wmc _LayerList : function ( a , b ) { a . layersContext = [ ] ; this . runChildNodes ( a , b ) } , read _wmc _Layer : function ( a , b ) { var c = { visibility : "1" != b . getAttribute ( "hidden" ) , queryable : "1" == b . getAttribute ( "queryable" ) , formats : [ ] ,
styles : [ ] , metadata : { } } ; this . runChildNodes ( c , b ) ; a . layersContext . push ( c ) } , read _wmc _Extension : function ( a , b ) { this . runChildNodes ( a , b ) } , read _ol _units : function ( a , b ) { a . units = this . getChildValue ( b ) } , read _ol _maxExtent : function ( a , b ) { var c = new OpenLayers . Bounds ( b . getAttribute ( "minx" ) , b . getAttribute ( "miny" ) , b . getAttribute ( "maxx" ) , b . getAttribute ( "maxy" ) ) ; a . maxExtent = c } , read _ol _transparent : function ( a , b ) { a . transparent = this . getChildValue ( b ) } , read _ol _numZoomLevels : function ( a , b ) { a . numZoomLevels = parseInt ( this . getChildValue ( b ) ) } ,
read _ol _opacity : function ( a , b ) { a . opacity = parseFloat ( this . getChildValue ( b ) ) } , read _ol _singleTile : function ( a , b ) { a . singleTile = "true" == this . getChildValue ( b ) } , read _ol _tileSize : function ( a , b ) { var c = { width : b . getAttribute ( "width" ) , height : b . getAttribute ( "height" ) } ; a . tileSize = c } , read _ol _isBaseLayer : function ( a , b ) { a . isBaseLayer = "true" == this . getChildValue ( b ) } , read _ol _displayInLayerSwitcher : function ( a , b ) { a . displayInLayerSwitcher = "true" == this . getChildValue ( b ) } , read _wmc _Server : function ( a , b ) { a . version = b . getAttribute ( "version" ) ;
a . url = this . getOnlineResource _href ( b ) ; a . metadata . servertitle = b . getAttribute ( "title" ) } , read _wmc _FormatList : function ( a , b ) { this . runChildNodes ( a , b ) } , read _wmc _Format : function ( a , b ) { var c = { value : this . getChildValue ( b ) } ; "1" == b . getAttribute ( "current" ) && ( c . current = ! 0 ) ; a . formats . push ( c ) } , read _wmc _StyleList : function ( a , b ) { this . runChildNodes ( a , b ) } , read _wmc _Style : function ( a , b ) { var c = { } ; this . runChildNodes ( c , b ) ; "1" == b . getAttribute ( "current" ) && ( c . current = ! 0 ) ; a . styles . push ( c ) } , read _wmc _SLD : function ( a , b ) { this . runChildNodes ( a ,
b ) } , read _sld _StyledLayerDescriptor : function ( a , b ) { var c = OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) ; a . body = c } , read _sld _FeatureTypeStyle : function ( a , b ) { var c = OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) ; a . body = c } , read _wmc _OnlineResource : function ( a , b ) { a . href = this . getAttributeNS ( b , this . namespaces . xlink , "href" ) } , read _wmc _Name : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . name = c ) } , read _wmc _Title : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . title = c ) } , read _wmc _MetadataURL : function ( a ,
b ) { a . metadataURL = this . getOnlineResource _href ( b ) } , read _wmc _KeywordList : function ( a , b ) { a . keywords = [ ] ; this . runChildNodes ( a . keywords , b ) } , read _wmc _Keyword : function ( a , b ) { a . push ( this . getChildValue ( b ) ) } , read _wmc _Abstract : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a [ "abstract" ] = c ) } , read _wmc _LogoURL : function ( a , b ) { a . logo = { width : b . getAttribute ( "width" ) , height : b . getAttribute ( "height" ) , format : b . getAttribute ( "format" ) , href : this . getOnlineResource _href ( b ) } } , read _wmc _DescriptionURL : function ( a , b ) { a . descriptionURL =
this . getOnlineResource _href ( b ) } , read _wmc _ContactInformation : function ( a , b ) { var c = { } ; this . runChildNodes ( c , b ) ; a . contactInformation = c } , read _wmc _ContactPersonPrimary : function ( a , b ) { var c = { } ; this . runChildNodes ( c , b ) ; a . personPrimary = c } , read _wmc _ContactPerson : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . person = c ) } , read _wmc _ContactOrganization : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . organization = c ) } , read _wmc _ContactPosition : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . position = c ) } , read _wmc _ContactAddress : function ( a ,
b ) { var c = { } ; this . runChildNodes ( c , b ) ; a . contactAddress = c } , read _wmc _AddressType : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . type = c ) } , read _wmc _Address : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . address = c ) } , read _wmc _City : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . city = c ) } , read _wmc _StateOrProvince : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . stateOrProvince = c ) } , read _wmc _PostCode : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . postcode = c ) } , read _wmc _Country : function ( a , b ) { var c = this . getChildValue ( b ) ;
c && ( a . country = c ) } , read _wmc _ContactVoiceTelephone : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . phone = c ) } , read _wmc _ContactFacsimileTelephone : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . fax = c ) } , read _wmc _ContactElectronicMailAddress : function ( a , b ) { var c = this . getChildValue ( b ) ; c && ( a . email = c ) } , read _wmc _DataURL : function ( a , b ) { a . dataURL = this . getOnlineResource _href ( b ) } , read _wmc _LegendURL : function ( a , b ) { var c = { width : b . getAttribute ( "width" ) , height : b . getAttribute ( "height" ) , format : b . getAttribute ( "format" ) ,
href : this . getOnlineResource _href ( b ) } ; a . legend = c } , read _wmc _DimensionList : function ( a , b ) { a . dimensions = { } ; this . runChildNodes ( a . dimensions , b ) } , read _wmc _Dimension : function ( a , b ) { var c = { name : b . getAttribute ( "name" ) . toLowerCase ( ) , units : b . getAttribute ( "units" ) || "" , unitSymbol : b . getAttribute ( "unitSymbol" ) || "" , userValue : b . getAttribute ( "userValue" ) || "" , nearestValue : "1" === b . getAttribute ( "nearestValue" ) , multipleValues : "1" === b . getAttribute ( "multipleValues" ) , current : "1" === b . getAttribute ( "current" ) , "default" : b . getAttribute ( "default" ) ||
"" } , d = this . getChildValue ( b ) ; c . values = d . split ( "," ) ; a [ c . name ] = c } , write : function ( a , b ) { var c = this . createElementDefaultNS ( "ViewContext" ) ; this . setAttributes ( c , { version : this . VERSION , id : b && "string" == typeof b . id ? b . id : OpenLayers . Util . createUniqueID ( "OpenLayers_Context_" ) } ) ; this . setAttributeNS ( c , this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ; c . appendChild ( this . write _wmc _General ( a ) ) ; c . appendChild ( this . write _wmc _LayerList ( a ) ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ c ] ) } , createElementDefaultNS : function ( a ,
b , c ) { a = this . createElementNS ( this . namespaces [ this . defaultPrefix ] , a ) ; b && a . appendChild ( this . createTextNode ( b ) ) ; c && this . setAttributes ( a , c ) ; return a } , setAttributes : function ( a , b ) { var c , d ; for ( d in b ) c = b [ d ] . toString ( ) , c . match ( /[A-Z]/ ) ? this . setAttributeNS ( a , null , d , c ) : a . setAttribute ( d , c ) } , write _wmc _General : function ( a ) { var b = this . createElementDefaultNS ( "General" ) ; a . size && b . appendChild ( this . createElementDefaultNS ( "Window" , null , { width : a . size . w , height : a . size . h } ) ) ; var c = a . bounds ; b . appendChild ( this . createElementDefaultNS ( "BoundingBox" ,
null , { minx : c . left . toPrecision ( 18 ) , miny : c . bottom . toPrecision ( 18 ) , maxx : c . right . toPrecision ( 18 ) , maxy : c . top . toPrecision ( 18 ) , SRS : a . projection } ) ) ; b . appendChild ( this . createElementDefaultNS ( "Title" , a . title ) ) ; a . keywords && b . appendChild ( this . write _wmc _KeywordList ( a . keywords ) ) ; a [ "abstract" ] && b . appendChild ( this . createElementDefaultNS ( "Abstract" , a [ "abstract" ] ) ) ; a . logo && b . appendChild ( this . write _wmc _URLType ( "LogoURL" , a . logo . href , a . logo ) ) ; a . descriptionURL && b . appendChild ( this . write _wmc _URLType ( "DescriptionURL" , a . descriptionURL ) ) ;
a . contactInformation && b . appendChild ( this . write _wmc _ContactInformation ( a . contactInformation ) ) ; b . appendChild ( this . write _ol _MapExtension ( a ) ) ; return b } , write _wmc _KeywordList : function ( a ) { for ( var b = this . createElementDefaultNS ( "KeywordList" ) , c = 0 , d = a . length ; c < d ; c ++ ) b . appendChild ( this . createElementDefaultNS ( "Keyword" , a [ c ] ) ) ; return b } , write _wmc _ContactInformation : function ( a ) { var b = this . createElementDefaultNS ( "ContactInformation" ) ; a . personPrimary && b . appendChild ( this . write _wmc _ContactPersonPrimary ( a . personPrimary ) ) ;
a . position && b . appendChild ( this . createElementDefaultNS ( "ContactPosition" , a . position ) ) ; a . contactAddress && b . appendChild ( this . write _wmc _ContactAddress ( a . contactAddress ) ) ; a . phone && b . appendChild ( this . createElementDefaultNS ( "ContactVoiceTelephone" , a . phone ) ) ; a . fax && b . appendChild ( this . createElementDefaultNS ( "ContactFacsimileTelephone" , a . fax ) ) ; a . email && b . appendChild ( this . createElementDefaultNS ( "ContactElectronicMailAddress" , a . email ) ) ; return b } , write _wmc _ContactPersonPrimary : function ( a ) { var b = this . createElementDefaultNS ( "ContactPersonPrimary" ) ;
a . person && b . appendChild ( this . createElementDefaultNS ( "ContactPerson" , a . person ) ) ; a . organization && b . appendChild ( this . createElementDefaultNS ( "ContactOrganization" , a . organization ) ) ; return b } , write _wmc _ContactAddress : function ( a ) { var b = this . createElementDefaultNS ( "ContactAddress" ) ; a . type && b . appendChild ( this . createElementDefaultNS ( "AddressType" , a . type ) ) ; a . address && b . appendChild ( this . createElementDefaultNS ( "Address" , a . address ) ) ; a . city && b . appendChild ( this . createElementDefaultNS ( "City" , a . city ) ) ; a . stateOrProvince &&
b . appendChild ( this . createElementDefaultNS ( "StateOrProvince" , a . stateOrProvince ) ) ; a . postcode && b . appendChild ( this . createElementDefaultNS ( "PostCode" , a . postcode ) ) ; a . country && b . appendChild ( this . createElementDefaultNS ( "Country" , a . country ) ) ; return b } , write _ol _MapExtension : function ( a ) { var b = this . createElementDefaultNS ( "Extension" ) ; if ( a = a . maxExtent ) { var c = this . createElementNS ( this . namespaces . ol , "ol:maxExtent" ) ; this . setAttributes ( c , { minx : a . left . toPrecision ( 18 ) , miny : a . bottom . toPrecision ( 18 ) , maxx : a . right . toPrecision ( 18 ) ,
maxy : a . top . toPrecision ( 18 ) } ) ; b . appendChild ( c ) } return b } , write _wmc _LayerList : function ( a ) { for ( var b = this . createElementDefaultNS ( "LayerList" ) , c = 0 , d = a . layersContext . length ; c < d ; ++ c ) b . appendChild ( this . write _wmc _Layer ( a . layersContext [ c ] ) ) ; return b } , write _wmc _Layer : function ( a ) { var b = this . createElementDefaultNS ( "Layer" , null , { queryable : a . queryable ? "1" : "0" , hidden : a . visibility ? "0" : "1" } ) ; b . appendChild ( this . write _wmc _Server ( a ) ) ; b . appendChild ( this . createElementDefaultNS ( "Name" , a . name ) ) ; b . appendChild ( this . createElementDefaultNS ( "Title" ,
a . title ) ) ; a [ "abstract" ] && b . appendChild ( this . createElementDefaultNS ( "Abstract" , a [ "abstract" ] ) ) ; a . dataURL && b . appendChild ( this . write _wmc _URLType ( "DataURL" , a . dataURL ) ) ; a . metadataURL && b . appendChild ( this . write _wmc _URLType ( "MetadataURL" , a . metadataURL ) ) ; return b } , write _wmc _LayerExtension : function ( a ) { var b = this . createElementDefaultNS ( "Extension" ) , c = a . maxExtent , d = this . createElementNS ( this . namespaces . ol , "ol:maxExtent" ) ; this . setAttributes ( d , { minx : c . left . toPrecision ( 18 ) , miny : c . bottom . toPrecision ( 18 ) , maxx : c . right . toPrecision ( 18 ) ,
maxy : c . top . toPrecision ( 18 ) } ) ; b . appendChild ( d ) ; a . tileSize && ! a . singleTile && ( c = this . createElementNS ( this . namespaces . ol , "ol:tileSize" ) , this . setAttributes ( c , a . tileSize ) , b . appendChild ( c ) ) ; for ( var c = "transparent numZoomLevels units isBaseLayer opacity displayInLayerSwitcher singleTile" . split ( " " ) , e = 0 , f = c . length ; e < f ; ++ e ) ( d = this . createOLPropertyNode ( a , c [ e ] ) ) && b . appendChild ( d ) ; return b } , createOLPropertyNode : function ( a , b ) { var c = null ; null != a [ b ] && ( c = this . createElementNS ( this . namespaces . ol , "ol:" + b ) , c . appendChild ( this . createTextNode ( a [ b ] . toString ( ) ) ) ) ;
return c } , write _wmc _Server : function ( a ) { var a = a . server , b = this . createElementDefaultNS ( "Server" ) , c = { service : "OGC:WMS" , version : a . version } ; a . title && ( c . title = a . title ) ; this . setAttributes ( b , c ) ; b . appendChild ( this . write _wmc _OnlineResource ( a . url ) ) ; return b } , write _wmc _URLType : function ( a , b , c ) { a = this . createElementDefaultNS ( a ) ; a . appendChild ( this . write _wmc _OnlineResource ( b ) ) ; if ( c ) for ( var b = [ "width" , "height" , "format" ] , d = 0 ; d < b . length ; d ++ ) b [ d ] in c && a . setAttribute ( b [ d ] , c [ b [ d ] ] ) ; return a } , write _wmc _DimensionList : function ( a ) { var b =
this . createElementDefaultNS ( "DimensionList" ) , c ; for ( c in a . dimensions ) { var d = { } , e = a . dimensions [ c ] , f ; for ( f in e ) d [ f ] = "boolean" == typeof e [ f ] ? Number ( e [ f ] ) : e [ f ] ; e = "" ; d . values && ( e = d . values . join ( "," ) , delete d . values ) ; b . appendChild ( this . createElementDefaultNS ( "Dimension" , e , d ) ) } return b } , write _wmc _FormatList : function ( a ) { for ( var b = this . createElementDefaultNS ( "FormatList" ) , c = 0 , d = a . formats . length ; c < d ; c ++ ) { var e = a . formats [ c ] ; b . appendChild ( this . createElementDefaultNS ( "Format" , e . value , e . current && ! 0 == e . current ? { current : "1" } :
null ) ) } return b } , write _wmc _StyleList : function ( a ) { var b = this . createElementDefaultNS ( "StyleList" ) ; if ( ( a = a . styles ) && OpenLayers . Util . isArray ( a ) ) for ( var c , d = 0 , e = a . length ; d < e ; d ++ ) { var f = a [ d ] , g = this . createElementDefaultNS ( "Style" , null , f . current && ! 0 == f . current ? { current : "1" } : null ) ; f . href ? ( c = this . createElementDefaultNS ( "SLD" ) , f . name && c . appendChild ( this . createElementDefaultNS ( "Name" , f . name ) ) , f . title && c . appendChild ( this . createElementDefaultNS ( "Title" , f . title ) ) , f . legend && c . appendChild ( this . write _wmc _URLType ( "LegendURL" ,
f . legend . href , f . legend ) ) , f = this . write _wmc _OnlineResource ( f . href ) , c . appendChild ( f ) , g . appendChild ( c ) ) : f . body ? ( c = this . createElementDefaultNS ( "SLD" ) , f . name && c . appendChild ( this . createElementDefaultNS ( "Name" , f . name ) ) , f . title && c . appendChild ( this . createElementDefaultNS ( "Title" , f . title ) ) , f . legend && c . appendChild ( this . write _wmc _URLType ( "LegendURL" , f . legend . href , f . legend ) ) , f = OpenLayers . Format . XML . prototype . read . apply ( this , [ f . body ] ) . documentElement , c . ownerDocument && c . ownerDocument . importNode && ( f = c . ownerDocument . importNode ( f ,
! 0 ) ) , c . appendChild ( f ) , g . appendChild ( c ) ) : ( g . appendChild ( this . createElementDefaultNS ( "Name" , f . name ) ) , g . appendChild ( this . createElementDefaultNS ( "Title" , f . title ) ) , f [ "abstract" ] && g . appendChild ( this . createElementDefaultNS ( "Abstract" , f [ "abstract" ] ) ) , f . legend && g . appendChild ( this . write _wmc _URLType ( "LegendURL" , f . legend . href , f . legend ) ) ) ; b . appendChild ( g ) } return b } , write _wmc _OnlineResource : function ( a ) { var b = this . createElementDefaultNS ( "OnlineResource" ) ; this . setAttributeNS ( b , this . namespaces . xlink , "xlink:type" ,
"simple" ) ; this . setAttributeNS ( b , this . namespaces . xlink , "xlink:href" , a ) ; return b } , getOnlineResource _href : function ( a ) { var b = { } , a = a . getElementsByTagName ( "OnlineResource" ) ; 0 < a . length && this . read _wmc _OnlineResource ( b , a [ 0 ] ) ; return b . href } , CLASS _NAME : "OpenLayers.Format.WMC.v1" } ) ; OpenLayers . Control . PanPanel = OpenLayers . Class ( OpenLayers . Control . Panel , { slideFactor : 50 , slideRatio : null , initialize : function ( a ) { OpenLayers . Control . Panel . prototype . initialize . apply ( this , [ a ] ) ; a = { slideFactor : this . slideFactor , slideRatio : this . slideRatio } ; this . addControls ( [ new OpenLayers . Control . Pan ( OpenLayers . Control . Pan . NORTH , a ) , new OpenLayers . Control . Pan ( OpenLayers . Control . Pan . SOUTH , a ) , new OpenLayers . Control . Pan ( OpenLayers . Control . Pan . EAST , a ) , new OpenLayers . Control . Pan ( OpenLayers . Control . Pan . WEST , a ) ] ) } ,
CLASS _NAME : "OpenLayers.Control.PanPanel" } ) ; OpenLayers . Control . Attribution = OpenLayers . Class ( OpenLayers . Control , { separator : ", " , template : "${layers}" , destroy : function ( ) { this . map . events . un ( { removelayer : this . updateAttribution , addlayer : this . updateAttribution , changelayer : this . updateAttribution , changebaselayer : this . updateAttribution , scope : this } ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; this . map . events . on ( { changebaselayer : this . updateAttribution , changelayer : this . updateAttribution ,
addlayer : this . updateAttribution , removelayer : this . updateAttribution , scope : this } ) ; this . updateAttribution ( ) ; return this . div } , updateAttribution : function ( ) { var a = [ ] ; if ( this . map && this . map . layers ) { for ( var b = 0 , c = this . map . layers . length ; b < c ; b ++ ) { var d = this . map . layers [ b ] ; d . attribution && d . getVisibility ( ) && - 1 === OpenLayers . Util . indexOf ( a , d . attribution ) && a . push ( d . attribution ) } this . div . innerHTML = OpenLayers . String . format ( this . template , { layers : a . join ( this . separator ) } ) } } , CLASS _NAME : "OpenLayers.Control.Attribution" } ) ; OpenLayers . Kinetic = OpenLayers . Class ( { threshold : 0 , deceleration : 0.0035 , nbPoints : 100 , delay : 200 , points : void 0 , timerId : void 0 , initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) } , begin : function ( ) { OpenLayers . Animation . stop ( this . timerId ) ; this . timerId = void 0 ; this . points = [ ] } , update : function ( a ) { this . points . unshift ( { xy : a , tick : ( new Date ) . getTime ( ) } ) ; this . points . length > this . nbPoints && this . points . pop ( ) } , end : function ( a ) { for ( var b , c = ( new Date ) . getTime ( ) , d = 0 , e = this . points . length , f ; d < e ; d ++ ) { f = this . points [ d ] ; if ( c -
f . tick > this . delay ) break ; b = f } if ( b && ( d = ( new Date ) . getTime ( ) - b . tick , c = Math . sqrt ( Math . pow ( a . x - b . xy . x , 2 ) + Math . pow ( a . y - b . xy . y , 2 ) ) , d = c / d , ! ( 0 == d || d < this . threshold ) ) ) return c = Math . asin ( ( a . y - b . xy . y ) / c ) , b . xy . x <= a . x && ( c = Math . PI - c ) , { speed : d , theta : c } } , move : function ( a , b ) { var c = a . speed , d = Math . cos ( a . theta ) , e = - Math . sin ( a . theta ) , f = ( new Date ) . getTime ( ) , g = 0 , h = 0 ; this . timerId = OpenLayers . Animation . start ( OpenLayers . Function . bind ( function ( ) { if ( null != this . timerId ) { var a = ( new Date ) . getTime ( ) - f , j = - this . deceleration * Math . pow ( a ,
2 ) / 2 + c * a , k = j * d , j = j * e , l , m ; l = ! 1 ; 0 >= - this . deceleration * a + c && ( OpenLayers . Animation . stop ( this . timerId ) , this . timerId = null , l = ! 0 ) ; a = k - g ; m = j - h ; g = k ; h = j ; b ( a , m , l ) } } , this ) ) } , CLASS _NAME : "OpenLayers.Kinetic" } ) ; OpenLayers . Layer . GeoRSS = OpenLayers . Class ( OpenLayers . Layer . Markers , { location : null , features : null , formatOptions : null , selectedFeature : null , icon : null , popupSize : null , useFeedTitle : ! 0 , initialize : function ( a , b , c ) { OpenLayers . Layer . Markers . prototype . initialize . apply ( this , [ a , c ] ) ; this . location = b ; this . features = [ ] } , destroy : function ( ) { OpenLayers . Layer . Markers . prototype . destroy . apply ( this , arguments ) ; this . clearFeatures ( ) ; this . features = null } , loadRSS : function ( ) { this . loaded || ( this . events . triggerEvent ( "loadstart" ) , OpenLayers . Request . GET ( { url : this . location ,
success : this . parseData , scope : this } ) , this . loaded = ! 0 ) } , moveTo : function ( a , b , c ) { OpenLayers . Layer . Markers . prototype . moveTo . apply ( this , arguments ) ; this . visibility && ! this . loaded && this . loadRSS ( ) } , parseData : function ( a ) { var b = a . responseXML ; if ( ! b || ! b . documentElement ) b = OpenLayers . Format . XML . prototype . read ( a . responseText ) ; if ( this . useFeedTitle ) { a = null ; try { a = b . getElementsByTagNameNS ( "*" , "title" ) [ 0 ] . firstChild . nodeValue } catch ( c ) { a = b . getElementsByTagName ( "title" ) [ 0 ] . firstChild . nodeValue } a && this . setName ( a ) } a = { } ; OpenLayers . Util . extend ( a ,
this . formatOptions ) ; this . map && ! this . projection . equals ( this . map . getProjectionObject ( ) ) && ( a . externalProjection = this . projection , a . internalProjection = this . map . getProjectionObject ( ) ) ; for ( var b = ( new OpenLayers . Format . GeoRSS ( a ) ) . read ( b ) , a = 0 , d = b . length ; a < d ; a ++ ) { var e = { } , f = b [ a ] ; if ( f . geometry ) { var g = f . attributes . title ? f . attributes . title : "Untitled" , h = f . attributes . description ? f . attributes . description : "No description." , i = f . attributes . link ? f . attributes . link : "" , f = f . geometry . getBounds ( ) . getCenterLonLat ( ) ; e . icon =
null == this . icon ? OpenLayers . Marker . defaultIcon ( ) : this . icon . clone ( ) ; e . popupSize = this . popupSize ? this . popupSize . clone ( ) : new OpenLayers . Size ( 250 , 120 ) ; if ( g || h ) { e . title = g ; e . description = h ; var j = '<div class="olLayerGeoRSSClose">[x]</div>' , j = j + '<div class="olLayerGeoRSSTitle">' ; i && ( j += '<a class="link" href="' + i + '" target="_blank">' ) ; j += g ; i && ( j += "</a>" ) ; j += "</div>" ; j += '<div style="" class="olLayerGeoRSSDescription">' ; j += h ; j += "</div>" ; e . popupContentHTML = j } f = new OpenLayers . Feature ( this , f , e ) ; this . features . push ( f ) ;
e = f . createMarker ( ) ; e . events . register ( "click" , f , this . markerClick ) ; this . addMarker ( e ) } } this . events . triggerEvent ( "loadend" ) } , markerClick : function ( a ) { var b = this == this . layer . selectedFeature ; this . layer . selectedFeature = ! b ? this : null ; for ( var c = 0 , d = this . layer . map . popups . length ; c < d ; c ++ ) this . layer . map . removePopup ( this . layer . map . popups [ c ] ) ; b || ( b = this . createPopup ( ) , OpenLayers . Event . observe ( b . div , "click" , OpenLayers . Function . bind ( function ( ) { for ( var a = 0 , b = this . layer . map . popups . length ; a < b ; a ++ ) this . layer . map . removePopup ( this . layer . map . popups [ a ] ) } ,
this ) ) , this . layer . map . addPopup ( b ) ) ; OpenLayers . Event . stop ( a ) } , clearFeatures : function ( ) { if ( null != this . features ) for ( ; 0 < this . features . length ; ) { var a = this . features [ 0 ] ; OpenLayers . Util . removeItem ( this . features , a ) ; a . destroy ( ) } } , CLASS _NAME : "OpenLayers.Layer.GeoRSS" } ) ; OpenLayers . Symbolizer . Point = OpenLayers . Class ( OpenLayers . Symbolizer , { initialize : function ( a ) { OpenLayers . Symbolizer . prototype . initialize . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Symbolizer.Point" } ) ; OpenLayers . Symbolizer . Line = OpenLayers . Class ( OpenLayers . Symbolizer , { initialize : function ( a ) { OpenLayers . Symbolizer . prototype . initialize . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Symbolizer.Line" } ) ; OpenLayers . Symbolizer . Text = OpenLayers . Class ( OpenLayers . Symbolizer , { initialize : function ( a ) { OpenLayers . Symbolizer . prototype . initialize . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Symbolizer.Text" } ) ; OpenLayers . Format . SLD . v1 = OpenLayers . Class ( OpenLayers . Format . Filter . v1 _0 _0 , { namespaces : { sld : "http://www.opengis.net/sld" , ogc : "http://www.opengis.net/ogc" , gml : "http://www.opengis.net/gml" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , defaultPrefix : "sld" , schemaLocation : null , multipleSymbolizers : ! 1 , featureTypeCounter : null , defaultSymbolizer : { fillColor : "#808080" , fillOpacity : 1 , strokeColor : "#000000" , strokeOpacity : 1 , strokeWidth : 1 , strokeDashstyle : "solid" , pointRadius : 3 ,
graphicName : "square" } , read : function ( a , b ) { var b = OpenLayers . Util . applyDefaults ( b , this . options ) , c = { namedLayers : ! 0 === b . namedLayersAsArray ? [ ] : { } } ; this . readChildNodes ( a , c ) ; return c } , readers : OpenLayers . Util . applyDefaults ( { sld : { StyledLayerDescriptor : function ( a , b ) { b . version = a . getAttribute ( "version" ) ; this . readChildNodes ( a , b ) } , Name : function ( a , b ) { b . name = this . getChildValue ( a ) } , Title : function ( a , b ) { b . title = this . getChildValue ( a ) } , Abstract : function ( a , b ) { b . description = this . getChildValue ( a ) } , NamedLayer : function ( a , b ) { var c =
{ userStyles : [ ] , namedStyles : [ ] } ; this . readChildNodes ( a , c ) ; for ( var d = 0 , e = c . userStyles . length ; d < e ; ++ d ) c . userStyles [ d ] . layerName = c . name ; OpenLayers . Util . isArray ( b . namedLayers ) ? b . namedLayers . push ( c ) : b . namedLayers [ c . name ] = c } , NamedStyle : function ( a , b ) { b . namedStyles . push ( this . getChildName ( a . firstChild ) ) } , UserStyle : function ( a , b ) { var c = { defaultsPerSymbolizer : ! 0 , rules : [ ] } ; this . featureTypeCounter = - 1 ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers ? ( delete c . defaultsPerSymbolizer , c = new OpenLayers . Style2 ( c ) ) : c = new OpenLayers . Style ( this . defaultSymbolizer ,
c ) ; b . userStyles . push ( c ) } , IsDefault : function ( a , b ) { "1" == this . getChildValue ( a ) && ( b . isDefault = ! 0 ) } , FeatureTypeStyle : function ( a , b ) { ++ this . featureTypeCounter ; var c = { rules : this . multipleSymbolizers ? b . rules : [ ] } ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers || ( b . rules = c . rules ) } , Rule : function ( a , b ) { var c ; this . multipleSymbolizers && ( c = { symbolizers : [ ] } ) ; c = new OpenLayers . Rule ( c ) ; this . readChildNodes ( a , c ) ; b . rules . push ( c ) } , ElseFilter : function ( a , b ) { b . elseFilter = ! 0 } , MinScaleDenominator : function ( a , b ) { b . minScaleDenominator =
parseFloat ( this . getChildValue ( a ) ) } , MaxScaleDenominator : function ( a , b ) { b . maxScaleDenominator = parseFloat ( this . getChildValue ( a ) ) } , TextSymbolizer : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers ? ( c . zIndex = this . featureTypeCounter , b . symbolizers . push ( new OpenLayers . Symbolizer . Text ( c ) ) ) : b . symbolizer . Text = OpenLayers . Util . applyDefaults ( c , b . symbolizer . Text ) } , LabelPlacement : function ( a , b ) { this . readChildNodes ( a , b ) } , PointPlacement : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; c . labelRotation =
c . rotation ; delete c . rotation ; var d , e = b . labelAnchorPointX , f = b . labelAnchorPointY ; e <= 1 / 3 ? d = "l" : e > 1 / 3 && e < 2 / 3 ? d = "c" : e >= 2 / 3 && ( d = "r" ) ; f <= 1 / 3 ? d += "b" : f > 1 / 3 && f < 2 / 3 ? d += "m" : f >= 2 / 3 && ( d += "t" ) ; c . labelAlign = d ; OpenLayers . Util . applyDefaults ( b , c ) } , AnchorPoint : function ( a , b ) { this . readChildNodes ( a , b ) } , AnchorPointX : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . labelAnchorPointX = c ) } , AnchorPointY : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . labelAnchorPointY = c ) } , Displacement : function ( a ,
b ) { this . readChildNodes ( a , b ) } , DisplacementX : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . labelXOffset = c ) } , DisplacementY : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . labelYOffset = c ) } , LinePlacement : function ( a , b ) { this . readChildNodes ( a , b ) } , PerpendicularOffset : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . labelPerpendicularOffset = c ) } , Label : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . label = c ) } , Font : function ( a , b ) { this . readChildNodes ( a ,
b ) } , Halo : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . haloRadius = c . haloRadius ; b . haloColor = c . fillColor ; b . haloOpacity = c . fillOpacity } , Radius : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; null != c && ( b . haloRadius = c ) } , RasterSymbolizer : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers ? ( c . zIndex = this . featureTypeCounter , b . symbolizers . push ( new OpenLayers . Symbolizer . Raster ( c ) ) ) : b . symbolizer . Raster = OpenLayers . Util . applyDefaults ( c , b . symbolizer . Raster ) } , Geometry : function ( a ,
b ) { b . geometry = { } ; this . readChildNodes ( a , b . geometry ) } , ColorMap : function ( a , b ) { b . colorMap = [ ] ; this . readChildNodes ( a , b . colorMap ) } , ColorMapEntry : function ( a , b ) { var c = a . getAttribute ( "quantity" ) , d = a . getAttribute ( "opacity" ) ; b . push ( { color : a . getAttribute ( "color" ) , quantity : null !== c ? parseFloat ( c ) : void 0 , label : a . getAttribute ( "label" ) || void 0 , opacity : null !== d ? parseFloat ( d ) : void 0 } ) } , LineSymbolizer : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers ? ( c . zIndex = this . featureTypeCounter , b . symbolizers . push ( new OpenLayers . Symbolizer . Line ( c ) ) ) :
b . symbolizer . Line = OpenLayers . Util . applyDefaults ( c , b . symbolizer . Line ) } , PolygonSymbolizer : function ( a , b ) { var c = { fill : ! 1 , stroke : ! 1 } ; this . multipleSymbolizers || ( c = b . symbolizer . Polygon || c ) ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers ? ( c . zIndex = this . featureTypeCounter , b . symbolizers . push ( new OpenLayers . Symbolizer . Polygon ( c ) ) ) : b . symbolizer . Polygon = c } , PointSymbolizer : function ( a , b ) { var c = { fill : ! 1 , stroke : ! 1 , graphic : ! 1 } ; this . multipleSymbolizers || ( c = b . symbolizer . Point || c ) ; this . readChildNodes ( a , c ) ; this . multipleSymbolizers ?
( c . zIndex = this . featureTypeCounter , b . symbolizers . push ( new OpenLayers . Symbolizer . Point ( c ) ) ) : b . symbolizer . Point = c } , Stroke : function ( a , b ) { b . stroke = ! 0 ; this . readChildNodes ( a , b ) } , Fill : function ( a , b ) { b . fill = ! 0 ; this . readChildNodes ( a , b ) } , CssParameter : function ( a , b ) { var c = a . getAttribute ( "name" ) , d = this . cssMap [ c ] ; b . label && ( "fill" === c ? d = "fontColor" : "fill-opacity" === c && ( d = "fontOpacity" ) ) ; d && ( c = this . readers . ogc . _expression . call ( this , a ) ) && ( b [ d ] = c ) } , Graphic : function ( a , b ) { b . graphic = ! 0 ; var c = { } ; this . readChildNodes ( a , c ) ;
for ( var d = "stroke strokeColor strokeWidth strokeOpacity strokeLinecap fill fillColor fillOpacity graphicName rotation graphicFormat" . split ( " " ) , e , f , g = 0 , h = d . length ; g < h ; ++ g ) e = d [ g ] , f = c [ e ] , void 0 != f && ( b [ e ] = f ) ; void 0 != c . opacity && ( b . graphicOpacity = c . opacity ) ; void 0 != c . size && ( isNaN ( c . size / 2 ) ? b . graphicWidth = c . size : b . pointRadius = c . size / 2 ) ; void 0 != c . href && ( b . externalGraphic = c . href ) ; void 0 != c . rotation && ( b . rotation = c . rotation ) } , ExternalGraphic : function ( a , b ) { this . readChildNodes ( a , b ) } , Mark : function ( a , b ) { this . readChildNodes ( a ,
b ) } , WellKnownName : function ( a , b ) { b . graphicName = this . getChildValue ( a ) } , Opacity : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . opacity = c ) } , Size : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . size = c ) } , Rotation : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . rotation = c ) } , OnlineResource : function ( a , b ) { b . href = this . getAttributeNS ( a , this . namespaces . xlink , "href" ) } , Format : function ( a , b ) { b . graphicFormat = this . getChildValue ( a ) } } } , OpenLayers . Format . Filter . v1 _0 _0 . prototype . readers ) ,
cssMap : { stroke : "strokeColor" , "stroke-opacity" : "strokeOpacity" , "stroke-width" : "strokeWidth" , "stroke-linecap" : "strokeLinecap" , "stroke-dasharray" : "strokeDashstyle" , fill : "fillColor" , "fill-opacity" : "fillOpacity" , "font-family" : "fontFamily" , "font-size" : "fontSize" , "font-weight" : "fontWeight" , "font-style" : "fontStyle" } , getCssProperty : function ( a ) { var b = null , c ; for ( c in this . cssMap ) if ( this . cssMap [ c ] == a ) { b = c ; break } return b } , getGraphicFormat : function ( a ) { var b , c ; for ( c in this . graphicFormats ) if ( this . graphicFormats [ c ] . test ( a ) ) { b =
c ; break } return b || this . defaultGraphicFormat } , defaultGraphicFormat : "image/png" , graphicFormats : { "image/jpeg" : /\.jpe?g$/i , "image/gif" : /\.gif$/i , "image/png" : /\.png$/i } , write : function ( a ) { return this . writers . sld . StyledLayerDescriptor . apply ( this , [ a ] ) } , writers : OpenLayers . Util . applyDefaults ( { sld : { _OGCExpression : function ( a , b ) { var c = this . createElementNSPlus ( a ) , d = "string" == typeof b ? b . split ( "${" ) : [ b ] ; c . appendChild ( this . createTextNode ( d [ 0 ] ) ) ; for ( var e , f , g = 1 , h = d . length ; g < h ; g ++ ) e = d [ g ] , f = e . indexOf ( "}" ) , 0 < f ? ( this . writeNode ( "ogc:PropertyName" ,
{ property : e . substring ( 0 , f ) } , c ) , c . appendChild ( this . createTextNode ( e . substring ( ++ f ) ) ) ) : c . appendChild ( this . createTextNode ( "${" + e ) ) ; return c } , StyledLayerDescriptor : function ( a ) { var b = this . createElementNSPlus ( "sld:StyledLayerDescriptor" , { attributes : { version : this . VERSION , "xsi:schemaLocation" : this . schemaLocation } } ) ; b . setAttribute ( "xmlns:ogc" , this . namespaces . ogc ) ; b . setAttribute ( "xmlns:gml" , this . namespaces . gml ) ; a . name && this . writeNode ( "Name" , a . name , b ) ; a . title && this . writeNode ( "Title" , a . title , b ) ; a . description &&
this . writeNode ( "Abstract" , a . description , b ) ; if ( OpenLayers . Util . isArray ( a . namedLayers ) ) for ( var c = 0 , d = a . namedLayers . length ; c < d ; ++ c ) this . writeNode ( "NamedLayer" , a . namedLayers [ c ] , b ) ; else for ( c in a . namedLayers ) this . writeNode ( "NamedLayer" , a . namedLayers [ c ] , b ) ; return b } , Name : function ( a ) { return this . createElementNSPlus ( "sld:Name" , { value : a } ) } , Title : function ( a ) { return this . createElementNSPlus ( "sld:Title" , { value : a } ) } , Abstract : function ( a ) { return this . createElementNSPlus ( "sld:Abstract" , { value : a } ) } , NamedLayer : function ( a ) { var b =
this . createElementNSPlus ( "sld:NamedLayer" ) ; this . writeNode ( "Name" , a . name , b ) ; if ( a . namedStyles ) for ( var c = 0 , d = a . namedStyles . length ; c < d ; ++ c ) this . writeNode ( "NamedStyle" , a . namedStyles [ c ] , b ) ; if ( a . userStyles ) { c = 0 ; for ( d = a . userStyles . length ; c < d ; ++ c ) this . writeNode ( "UserStyle" , a . userStyles [ c ] , b ) } return b } , NamedStyle : function ( a ) { var b = this . createElementNSPlus ( "sld:NamedStyle" ) ; this . writeNode ( "Name" , a , b ) ; return b } , UserStyle : function ( a ) { var b = this . createElementNSPlus ( "sld:UserStyle" ) ; a . name && this . writeNode ( "Name" ,
a . name , b ) ; a . title && this . writeNode ( "Title" , a . title , b ) ; a . description && this . writeNode ( "Abstract" , a . description , b ) ; a . isDefault && this . writeNode ( "IsDefault" , a . isDefault , b ) ; if ( this . multipleSymbolizers && a . rules ) { for ( var c = { "0" : [ ] } , d = [ 0 ] , e , f , g , h , i , j = 0 , k = a . rules . length ; j < k ; ++ j ) if ( e = a . rules [ j ] , e . symbolizers ) { f = { } ; for ( var l = 0 , m = e . symbolizers . length ; l < m ; ++ l ) g = e . symbolizers [ l ] , h = g . zIndex , h in f || ( i = e . clone ( ) , i . symbolizers = [ ] , f [ h ] = i ) , f [ h ] . symbolizers . push ( g . clone ( ) ) ; for ( h in f ) h in c || ( d . push ( h ) , c [ h ] = [ ] ) , c [ h ] . push ( f [ h ] ) } else c [ 0 ] . push ( e . clone ( ) ) ;
d . sort ( ) ; j = 0 ; for ( k = d . length ; j < k ; ++ j ) e = c [ d [ j ] ] , 0 < e . length && ( i = a . clone ( ) , i . rules = c [ d [ j ] ] , this . writeNode ( "FeatureTypeStyle" , i , b ) ) } else this . writeNode ( "FeatureTypeStyle" , a , b ) ; return b } , IsDefault : function ( a ) { return this . createElementNSPlus ( "sld:IsDefault" , { value : a ? "1" : "0" } ) } , FeatureTypeStyle : function ( a ) { for ( var b = this . createElementNSPlus ( "sld:FeatureTypeStyle" ) , c = 0 , d = a . rules . length ; c < d ; ++ c ) this . writeNode ( "Rule" , a . rules [ c ] , b ) ; return b } , Rule : function ( a ) { var b = this . createElementNSPlus ( "sld:Rule" ) ; a . name &&
this . writeNode ( "Name" , a . name , b ) ; a . title && this . writeNode ( "Title" , a . title , b ) ; a . description && this . writeNode ( "Abstract" , a . description , b ) ; a . elseFilter ? this . writeNode ( "ElseFilter" , null , b ) : a . filter && this . writeNode ( "ogc:Filter" , a . filter , b ) ; void 0 != a . minScaleDenominator && this . writeNode ( "MinScaleDenominator" , a . minScaleDenominator , b ) ; void 0 != a . maxScaleDenominator && this . writeNode ( "MaxScaleDenominator" , a . maxScaleDenominator , b ) ; var c , d ; if ( this . multipleSymbolizers && a . symbolizers ) for ( var e = 0 , f = a . symbolizers . length ; e <
f ; ++ e ) d = a . symbolizers [ e ] , c = d . CLASS _NAME . split ( "." ) . pop ( ) , this . writeNode ( c + "Symbolizer" , d , b ) ; else for ( var f = OpenLayers . Style . SYMBOLIZER _PREFIXES , e = 0 , g = f . length ; e < g ; ++ e ) c = f [ e ] , ( d = a . symbolizer [ c ] ) && this . writeNode ( c + "Symbolizer" , d , b ) ; return b } , ElseFilter : function ( ) { return this . createElementNSPlus ( "sld:ElseFilter" ) } , MinScaleDenominator : function ( a ) { return this . createElementNSPlus ( "sld:MinScaleDenominator" , { value : a } ) } , MaxScaleDenominator : function ( a ) { return this . createElementNSPlus ( "sld:MaxScaleDenominator" ,
{ value : a } ) } , LineSymbolizer : function ( a ) { var b = this . createElementNSPlus ( "sld:LineSymbolizer" ) ; this . writeNode ( "Stroke" , a , b ) ; return b } , Stroke : function ( a ) { var b = this . createElementNSPlus ( "sld:Stroke" ) ; void 0 != a . strokeColor && this . writeNode ( "CssParameter" , { symbolizer : a , key : "strokeColor" } , b ) ; void 0 != a . strokeOpacity && this . writeNode ( "CssParameter" , { symbolizer : a , key : "strokeOpacity" } , b ) ; void 0 != a . strokeWidth && this . writeNode ( "CssParameter" , { symbolizer : a , key : "strokeWidth" } , b ) ; void 0 != a . strokeDashstyle && "solid" !==
a . strokeDashstyle && this . writeNode ( "CssParameter" , { symbolizer : a , key : "strokeDashstyle" } , b ) ; void 0 != a . strokeLinecap && this . writeNode ( "CssParameter" , { symbolizer : a , key : "strokeLinecap" } , b ) ; return b } , CssParameter : function ( a ) { return this . createElementNSPlus ( "sld:CssParameter" , { attributes : { name : this . getCssProperty ( a . key ) } , value : a . symbolizer [ a . key ] } ) } , TextSymbolizer : function ( a ) { var b = this . createElementNSPlus ( "sld:TextSymbolizer" ) ; null != a . label && this . writeNode ( "Label" , a . label , b ) ; ( null != a . fontFamily || null != a . fontSize ||
null != a . fontWeight || null != a . fontStyle ) && this . writeNode ( "Font" , a , b ) ; ( null != a . labelAnchorPointX || null != a . labelAnchorPointY || null != a . labelAlign || null != a . labelXOffset || null != a . labelYOffset || null != a . labelRotation || null != a . labelPerpendicularOffset ) && this . writeNode ( "LabelPlacement" , a , b ) ; ( null != a . haloRadius || null != a . haloColor || null != a . haloOpacity ) && this . writeNode ( "Halo" , a , b ) ; ( null != a . fontColor || null != a . fontOpacity ) && this . writeNode ( "Fill" , { fillColor : a . fontColor , fillOpacity : a . fontOpacity } , b ) ; return b } , LabelPlacement : function ( a ) { var b =
this . createElementNSPlus ( "sld:LabelPlacement" ) ; ( null != a . labelAnchorPointX || null != a . labelAnchorPointY || null != a . labelAlign || null != a . labelXOffset || null != a . labelYOffset || null != a . labelRotation ) && null == a . labelPerpendicularOffset && this . writeNode ( "PointPlacement" , a , b ) ; null != a . labelPerpendicularOffset && this . writeNode ( "LinePlacement" , a , b ) ; return b } , LinePlacement : function ( a ) { var b = this . createElementNSPlus ( "sld:LinePlacement" ) ; this . writeNode ( "PerpendicularOffset" , a . labelPerpendicularOffset , b ) ; return b } , PerpendicularOffset : function ( a ) { return this . createElementNSPlus ( "sld:PerpendicularOffset" ,
{ value : a } ) } , PointPlacement : function ( a ) { var b = this . createElementNSPlus ( "sld:PointPlacement" ) ; ( null != a . labelAnchorPointX || null != a . labelAnchorPointY || null != a . labelAlign ) && this . writeNode ( "AnchorPoint" , a , b ) ; ( null != a . labelXOffset || null != a . labelYOffset ) && this . writeNode ( "Displacement" , a , b ) ; null != a . labelRotation && this . writeNode ( "Rotation" , a . labelRotation , b ) ; return b } , AnchorPoint : function ( a ) { var b = this . createElementNSPlus ( "sld:AnchorPoint" ) , c = a . labelAnchorPointX , d = a . labelAnchorPointY ; null != c && this . writeNode ( "AnchorPointX" ,
c , b ) ; null != d && this . writeNode ( "AnchorPointY" , d , b ) ; if ( null == c && null == d ) { var e = a . labelAlign . substr ( 0 , 1 ) , a = a . labelAlign . substr ( 1 , 1 ) ; "l" === e ? c = 0 : "c" === e ? c = 0.5 : "r" === e && ( c = 1 ) ; "b" === a ? d = 0 : "m" === a ? d = 0.5 : "t" === a && ( d = 1 ) ; this . writeNode ( "AnchorPointX" , c , b ) ; this . writeNode ( "AnchorPointY" , d , b ) } return b } , AnchorPointX : function ( a ) { return this . createElementNSPlus ( "sld:AnchorPointX" , { value : a } ) } , AnchorPointY : function ( a ) { return this . createElementNSPlus ( "sld:AnchorPointY" , { value : a } ) } , Displacement : function ( a ) { var b = this . createElementNSPlus ( "sld:Displacement" ) ;
null != a . labelXOffset && this . writeNode ( "DisplacementX" , a . labelXOffset , b ) ; null != a . labelYOffset && this . writeNode ( "DisplacementY" , a . labelYOffset , b ) ; return b } , DisplacementX : function ( a ) { return this . createElementNSPlus ( "sld:DisplacementX" , { value : a } ) } , DisplacementY : function ( a ) { return this . createElementNSPlus ( "sld:DisplacementY" , { value : a } ) } , Font : function ( a ) { var b = this . createElementNSPlus ( "sld:Font" ) ; a . fontFamily && this . writeNode ( "CssParameter" , { symbolizer : a , key : "fontFamily" } , b ) ; a . fontSize && this . writeNode ( "CssParameter" ,
{ symbolizer : a , key : "fontSize" } , b ) ; a . fontWeight && this . writeNode ( "CssParameter" , { symbolizer : a , key : "fontWeight" } , b ) ; a . fontStyle && this . writeNode ( "CssParameter" , { symbolizer : a , key : "fontStyle" } , b ) ; return b } , Label : function ( a ) { return this . writers . sld . _OGCExpression . call ( this , "sld:Label" , a ) } , Halo : function ( a ) { var b = this . createElementNSPlus ( "sld:Halo" ) ; a . haloRadius && this . writeNode ( "Radius" , a . haloRadius , b ) ; ( a . haloColor || a . haloOpacity ) && this . writeNode ( "Fill" , { fillColor : a . haloColor , fillOpacity : a . haloOpacity } , b ) ;
return b } , Radius : function ( a ) { return this . createElementNSPlus ( "sld:Radius" , { value : a } ) } , RasterSymbolizer : function ( a ) { var b = this . createElementNSPlus ( "sld:RasterSymbolizer" ) ; a . geometry && this . writeNode ( "Geometry" , a . geometry , b ) ; a . opacity && this . writeNode ( "Opacity" , a . opacity , b ) ; a . colorMap && this . writeNode ( "ColorMap" , a . colorMap , b ) ; return b } , Geometry : function ( a ) { var b = this . createElementNSPlus ( "sld:Geometry" ) ; a . property && this . writeNode ( "ogc:PropertyName" , a , b ) ; return b } , ColorMap : function ( a ) { for ( var b = this . createElementNSPlus ( "sld:ColorMap" ) ,
c = 0 , d = a . length ; c < d ; ++ c ) this . writeNode ( "ColorMapEntry" , a [ c ] , b ) ; return b } , ColorMapEntry : function ( a ) { var b = this . createElementNSPlus ( "sld:ColorMapEntry" ) ; b . setAttribute ( "color" , a . color ) ; void 0 !== a . opacity && b . setAttribute ( "opacity" , parseFloat ( a . opacity ) ) ; void 0 !== a . quantity && b . setAttribute ( "quantity" , parseFloat ( a . quantity ) ) ; void 0 !== a . label && b . setAttribute ( "label" , a . label ) ; return b } , PolygonSymbolizer : function ( a ) { var b = this . createElementNSPlus ( "sld:PolygonSymbolizer" ) ; ! 1 !== a . fill && this . writeNode ( "Fill" ,
a , b ) ; ! 1 !== a . stroke && this . writeNode ( "Stroke" , a , b ) ; return b } , Fill : function ( a ) { var b = this . createElementNSPlus ( "sld:Fill" ) ; a . fillColor && this . writeNode ( "CssParameter" , { symbolizer : a , key : "fillColor" } , b ) ; null != a . fillOpacity && this . writeNode ( "CssParameter" , { symbolizer : a , key : "fillOpacity" } , b ) ; return b } , PointSymbolizer : function ( a ) { var b = this . createElementNSPlus ( "sld:PointSymbolizer" ) ; this . writeNode ( "Graphic" , a , b ) ; return b } , Graphic : function ( a ) { var b = this . createElementNSPlus ( "sld:Graphic" ) ; void 0 != a . externalGraphic ?
this . writeNode ( "ExternalGraphic" , a , b ) : this . writeNode ( "Mark" , a , b ) ; void 0 != a . graphicOpacity && this . writeNode ( "Opacity" , a . graphicOpacity , b ) ; void 0 != a . pointRadius ? this . writeNode ( "Size" , 2 * a . pointRadius , b ) : void 0 != a . graphicWidth && this . writeNode ( "Size" , a . graphicWidth , b ) ; void 0 != a . rotation && this . writeNode ( "Rotation" , a . rotation , b ) ; return b } , ExternalGraphic : function ( a ) { var b = this . createElementNSPlus ( "sld:ExternalGraphic" ) ; this . writeNode ( "OnlineResource" , a . externalGraphic , b ) ; this . writeNode ( "Format" , a . graphicFormat ||
this . getGraphicFormat ( a . externalGraphic ) , b ) ; return b } , Mark : function ( a ) { var b = this . createElementNSPlus ( "sld:Mark" ) ; a . graphicName && this . writeNode ( "WellKnownName" , a . graphicName , b ) ; ! 1 !== a . fill && this . writeNode ( "Fill" , a , b ) ; ! 1 !== a . stroke && this . writeNode ( "Stroke" , a , b ) ; return b } , WellKnownName : function ( a ) { return this . createElementNSPlus ( "sld:WellKnownName" , { value : a } ) } , Opacity : function ( a ) { return this . createElementNSPlus ( "sld:Opacity" , { value : a } ) } , Size : function ( a ) { return this . writers . sld . _OGCExpression . call ( this ,
"sld:Size" , a ) } , Rotation : function ( a ) { return this . createElementNSPlus ( "sld:Rotation" , { value : a } ) } , OnlineResource : function ( a ) { return this . createElementNSPlus ( "sld:OnlineResource" , { attributes : { "xlink:type" : "simple" , "xlink:href" : a } } ) } , Format : function ( a ) { return this . createElementNSPlus ( "sld:Format" , { value : a } ) } } } , OpenLayers . Format . Filter . v1 _0 _0 . prototype . writers ) , CLASS _NAME : "OpenLayers.Format.SLD.v1" } ) ; OpenLayers . Layer . WMS = OpenLayers . Class ( OpenLayers . Layer . Grid , { DEFAULT _PARAMS : { service : "WMS" , version : "1.1.1" , request : "GetMap" , styles : "" , format : "image/jpeg" } , isBaseLayer : ! 0 , encodeBBOX : ! 1 , noMagic : ! 1 , yx : { } , initialize : function ( a , b , c , d ) { var e = [ ] , c = OpenLayers . Util . upperCaseObject ( c ) ; 1.3 <= parseFloat ( c . VERSION ) && ! c . EXCEPTIONS && ( c . EXCEPTIONS = "INIMAGE" ) ; e . push ( a , b , c , d ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , e ) ; OpenLayers . Util . applyDefaults ( this . params , OpenLayers . Util . upperCaseObject ( this . DEFAULT _PARAMS ) ) ;
if ( ! this . noMagic && this . params . TRANSPARENT && "true" == this . params . TRANSPARENT . toString ( ) . toLowerCase ( ) ) { if ( null == d || ! d . isBaseLayer ) this . isBaseLayer = ! 1 ; "image/jpeg" == this . params . FORMAT && ( this . params . FORMAT = OpenLayers . Util . alphaHack ( ) ? "image/gif" : "image/png" ) } } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . WMS ( this . name , this . url , this . params , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , reverseAxisOrder : function ( ) { var a = this . projection . getCode ( ) ; return 1.3 <= parseFloat ( this . params . VERSION ) &&
! ( ! this . yx [ a ] && ! OpenLayers . Projection . defaults [ a ] . yx ) } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = this . getImageSize ( ) , c = { } , d = this . reverseAxisOrder ( ) ; c . BBOX = this . encodeBBOX ? a . toBBOX ( null , d ) : a . toArray ( d ) ; c . WIDTH = b . w ; c . HEIGHT = b . h ; return this . getFullRequestString ( c ) } , mergeNewParams : function ( a ) { a = [ OpenLayers . Util . upperCaseObject ( a ) ] ; return OpenLayers . Layer . Grid . prototype . mergeNewParams . apply ( this , a ) } , getFullRequestString : function ( a , b ) { var c = this . map . getProjectionObject ( ) , c = this . projection && this . projection . equals ( c ) ?
this . projection . getCode ( ) : c . getCode ( ) , c = "none" == c ? null : c ; 1.3 <= parseFloat ( this . params . VERSION ) ? this . params . CRS = c : this . params . SRS = c ; "boolean" == typeof this . params . TRANSPARENT && ( a . TRANSPARENT = this . params . TRANSPARENT ? "TRUE" : "FALSE" ) ; return OpenLayers . Layer . Grid . prototype . getFullRequestString . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Layer.WMS" } ) ; OpenLayers . Format . WMC . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . WMC . v1 , { VERSION : "1.1.0" , schemaLocation : "http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd" , initialize : function ( a ) { OpenLayers . Format . WMC . v1 . prototype . initialize . apply ( this , [ a ] ) } , read _sld _MinScaleDenominator : function ( a , b ) { var c = parseFloat ( this . getChildValue ( b ) ) ; 0 < c && ( a . maxScale = c ) } , read _sld _MaxScaleDenominator : function ( a , b ) { a . minScale = parseFloat ( this . getChildValue ( b ) ) } , read _wmc _SRS : function ( a , b ) { "srs" in
a || ( a . srs = { } ) ; a . srs [ this . getChildValue ( b ) ] = ! 0 } , write _wmc _Layer : function ( a ) { var b = OpenLayers . Format . WMC . v1 . prototype . write _wmc _Layer . apply ( this , [ a ] ) ; if ( a . maxScale ) { var c = this . createElementNS ( this . namespaces . sld , "sld:MinScaleDenominator" ) ; c . appendChild ( this . createTextNode ( a . maxScale . toPrecision ( 16 ) ) ) ; b . appendChild ( c ) } a . minScale && ( c = this . createElementNS ( this . namespaces . sld , "sld:MaxScaleDenominator" ) , c . appendChild ( this . createTextNode ( a . minScale . toPrecision ( 16 ) ) ) , b . appendChild ( c ) ) ; if ( a . srs ) for ( var d in a . srs ) b . appendChild ( this . createElementDefaultNS ( "SRS" ,
d ) ) ; b . appendChild ( this . write _wmc _FormatList ( a ) ) ; b . appendChild ( this . write _wmc _StyleList ( a ) ) ; a . dimensions && b . appendChild ( this . write _wmc _DimensionList ( a ) ) ; b . appendChild ( this . write _wmc _LayerExtension ( a ) ) ; return b } , CLASS _NAME : "OpenLayers.Format.WMC.v1_1_0" } ) ; OpenLayers . Format . XLS = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.1.0" , stringifyOutput : ! 0 , CLASS _NAME : "OpenLayers.Format.XLS" } ) ; OpenLayers . Format . XLS . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { xls : "http://www.opengis.net/xls" , gml : "http://www.opengis.net/gml" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , xy : ! 0 , defaultPrefix : "xls" , schemaLocation : null , read : function ( a , b ) { OpenLayers . Util . applyDefaults ( b , this . options ) ; var c = { } ; this . readChildNodes ( a , c ) ; return c } , readers : { xls : { XLS : function ( a , b ) { b . version = a . getAttribute ( "version" ) ;
this . readChildNodes ( a , b ) } , Response : function ( a , b ) { this . readChildNodes ( a , b ) } , GeocodeResponse : function ( a , b ) { b . responseLists = [ ] ; this . readChildNodes ( a , b ) } , GeocodeResponseList : function ( a , b ) { var c = { features : [ ] , numberOfGeocodedAddresses : parseInt ( a . getAttribute ( "numberOfGeocodedAddresses" ) ) } ; b . responseLists . push ( c ) ; this . readChildNodes ( a , c ) } , GeocodedAddress : function ( a , b ) { var c = new OpenLayers . Feature . Vector ; b . features . push ( c ) ; this . readChildNodes ( a , c ) ; c . geometry = c . components [ 0 ] } , GeocodeMatchCode : function ( a , b ) { b . attributes . matchCode =
{ accuracy : parseFloat ( a . getAttribute ( "accuracy" ) ) , matchType : a . getAttribute ( "matchType" ) } } , Address : function ( a , b ) { var c = { countryCode : a . getAttribute ( "countryCode" ) , addressee : a . getAttribute ( "addressee" ) , street : [ ] , place : [ ] } ; b . attributes . address = c ; this . readChildNodes ( a , c ) } , freeFormAddress : function ( a , b ) { b . freeFormAddress = this . getChildValue ( a ) } , StreetAddress : function ( a , b ) { this . readChildNodes ( a , b ) } , Building : function ( a , b ) { b . building = { number : a . getAttribute ( "number" ) , subdivision : a . getAttribute ( "subdivision" ) ,
buildingName : a . getAttribute ( "buildingName" ) } } , Street : function ( a , b ) { b . street . push ( this . getChildValue ( a ) ) } , Place : function ( a , b ) { b . place [ a . getAttribute ( "type" ) ] = this . getChildValue ( a ) } , PostalCode : function ( a , b ) { b . postalCode = this . getChildValue ( a ) } } , gml : OpenLayers . Format . GML . v3 . prototype . readers . gml } , write : function ( a ) { return this . writers . xls . XLS . apply ( this , [ a ] ) } , writers : { xls : { XLS : function ( a ) { var b = this . createElementNSPlus ( "xls:XLS" , { attributes : { version : this . VERSION , "xsi:schemaLocation" : this . schemaLocation } } ) ;
this . writeNode ( "RequestHeader" , a . header , b ) ; this . writeNode ( "Request" , a , b ) ; return b } , RequestHeader : function ( ) { return this . createElementNSPlus ( "xls:RequestHeader" ) } , Request : function ( a ) { var b = this . createElementNSPlus ( "xls:Request" , { attributes : { methodName : "GeocodeRequest" , requestID : a . requestID || "" , version : this . VERSION } } ) ; this . writeNode ( "GeocodeRequest" , a . addresses , b ) ; return b } , GeocodeRequest : function ( a ) { for ( var b = this . createElementNSPlus ( "xls:GeocodeRequest" ) , c = 0 , d = a . length ; c < d ; c ++ ) this . writeNode ( "Address" ,
a [ c ] , b ) ; return b } , Address : function ( a ) { var b = this . createElementNSPlus ( "xls:Address" , { attributes : { countryCode : a . countryCode } } ) ; a . freeFormAddress ? this . writeNode ( "freeFormAddress" , a . freeFormAddress , b ) : ( a . street && this . writeNode ( "StreetAddress" , a , b ) , a . municipality && this . writeNode ( "Municipality" , a . municipality , b ) , a . countrySubdivision && this . writeNode ( "CountrySubdivision" , a . countrySubdivision , b ) , a . postalCode && this . writeNode ( "PostalCode" , a . postalCode , b ) ) ; return b } , freeFormAddress : function ( a ) { return this . createElementNSPlus ( "freeFormAddress" ,
{ value : a } ) } , StreetAddress : function ( a ) { var b = this . createElementNSPlus ( "xls:StreetAddress" ) ; a . building && this . writeNode ( b , "Building" , a . building ) ; a = a . street ; OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; for ( var c = 0 , d = a . length ; c < d ; c ++ ) this . writeNode ( "Street" , a [ c ] , b ) ; return b } , Building : function ( a ) { return this . createElementNSPlus ( "xls:Building" , { attributes : { number : a . number , subdivision : a . subdivision , buildingName : a . buildingName } } ) } , Street : function ( a ) { return this . createElementNSPlus ( "xls:Street" , { value : a } ) } , Municipality : function ( a ) { return this . createElementNSPlus ( "xls:Place" ,
{ attributes : { type : "Municipality" } , value : a } ) } , CountrySubdivision : function ( a ) { return this . createElementNSPlus ( "xls:Place" , { attributes : { type : "CountrySubdivision" } , value : a } ) } , PostalCode : function ( a ) { return this . createElementNSPlus ( "xls:PostalCode" , { value : a } ) } } } , CLASS _NAME : "OpenLayers.Format.XLS.v1" } ) ; OpenLayers . Format . XLS . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . XLS . v1 , { VERSION : "1.1" , schemaLocation : "http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd" , CLASS _NAME : "OpenLayers.Format.XLS.v1_1_0" } ) ; OpenLayers . Format . XLS . v1 _1 = OpenLayers . Format . XLS . v1 _1 _0 ; OpenLayers . Renderer . SVG = OpenLayers . Class ( OpenLayers . Renderer . Elements , { xmlns : "http://www.w3.org/2000/svg" , xlinkns : "http://www.w3.org/1999/xlink" , MAX _PIXEL : 15E3 , translationParameters : null , symbolMetrics : null , initialize : function ( a ) { this . supported ( ) && ( OpenLayers . Renderer . Elements . prototype . initialize . apply ( this , arguments ) , this . translationParameters = { x : 0 , y : 0 } , this . symbolMetrics = { } ) } , supported : function ( ) { return document . implementation && ( document . implementation . hasFeature ( "org.w3c.svg" , "1.0" ) || document . implementation . hasFeature ( "http://www.w3.org/TR/SVG11/feature#SVG" ,
"1.1" ) || document . implementation . hasFeature ( "http://www.w3.org/TR/SVG11/feature#BasicStructure" , "1.1" ) ) } , inValidRange : function ( a , b , c ) { a += c ? 0 : this . translationParameters . x ; b += c ? 0 : this . translationParameters . y ; return a >= - this . MAX _PIXEL && a <= this . MAX _PIXEL && b >= - this . MAX _PIXEL && b <= this . MAX _PIXEL } , setExtent : function ( a , b ) { var c = OpenLayers . Renderer . Elements . prototype . setExtent . apply ( this , arguments ) , d = this . getResolution ( ) , e = - a . left / d , d = a . top / d ; if ( b ) return this . left = e , this . top = d , this . rendererRoot . setAttributeNS ( null ,
"viewBox" , "0 0 " + this . size . w + " " + this . size . h ) , this . translate ( this . xOffset , 0 ) , ! 0 ; ( e = this . translate ( e - this . left + this . xOffset , d - this . top ) ) || this . setExtent ( a , ! 0 ) ; return c && e } , translate : function ( a , b ) { if ( this . inValidRange ( a , b , ! 0 ) ) { var c = "" ; if ( a || b ) c = "translate(" + a + "," + b + ")" ; this . root . setAttributeNS ( null , "transform" , c ) ; this . translationParameters = { x : a , y : b } ; return ! 0 } return ! 1 } , setSize : function ( a ) { OpenLayers . Renderer . prototype . setSize . apply ( this , arguments ) ; this . rendererRoot . setAttributeNS ( null , "width" , this . size . w ) ;
this . rendererRoot . setAttributeNS ( null , "height" , this . size . h ) } , getNodeType : function ( a , b ) { var c = null ; switch ( a . CLASS _NAME ) { case "OpenLayers.Geometry.Point" : c = b . externalGraphic ? "image" : this . isComplexSymbol ( b . graphicName ) ? "svg" : "circle" ; break ; case "OpenLayers.Geometry.Rectangle" : c = "rect" ; break ; case "OpenLayers.Geometry.LineString" : c = "polyline" ; break ; case "OpenLayers.Geometry.LinearRing" : c = "polygon" ; break ; case "OpenLayers.Geometry.Polygon" : case "OpenLayers.Geometry.Curve" : c = "path" } return c } , setStyle : function ( a ,
b , c ) { var b = b || a . _style , c = c || a . _options , d = parseFloat ( a . getAttributeNS ( null , "r" ) ) , e = 1 , f ; if ( "OpenLayers.Geometry.Point" == a . _geometryClass && d ) { a . style . visibility = "" ; if ( ! 1 === b . graphic ) a . style . visibility = "hidden" ; else if ( b . externalGraphic ) { f = this . getPosition ( a ) ; b . graphicTitle && ( a . setAttributeNS ( null , "title" , b . graphicTitle ) , d = a . getElementsByTagName ( "title" ) , 0 < d . length ? d [ 0 ] . firstChild . textContent = b . graphicTitle : ( d = this . nodeFactory ( null , "title" ) , d . textContent = b . graphicTitle , a . appendChild ( d ) ) ) ; b . graphicWidth &&
b . graphicHeight && a . setAttributeNS ( null , "preserveAspectRatio" , "none" ) ; var d = b . graphicWidth || b . graphicHeight , g = b . graphicHeight || b . graphicWidth , d = d ? d : 2 * b . pointRadius , g = g ? g : 2 * b . pointRadius , h = void 0 != b . graphicYOffset ? b . graphicYOffset : - ( 0.5 * g ) , i = b . graphicOpacity || b . fillOpacity ; a . setAttributeNS ( null , "x" , ( f . x + ( void 0 != b . graphicXOffset ? b . graphicXOffset : - ( 0.5 * d ) ) ) . toFixed ( ) ) ; a . setAttributeNS ( null , "y" , ( f . y + h ) . toFixed ( ) ) ; a . setAttributeNS ( null , "width" , d ) ; a . setAttributeNS ( null , "height" , g ) ; a . setAttributeNS ( this . xlinkns ,
"href" , b . externalGraphic ) ; a . setAttributeNS ( null , "style" , "opacity: " + i ) ; a . onclick = OpenLayers . Renderer . SVG . preventDefault } else if ( this . isComplexSymbol ( b . graphicName ) ) { var d = 3 * b . pointRadius , g = 2 * d , j = this . importSymbol ( b . graphicName ) ; f = this . getPosition ( a ) ; e = 3 * this . symbolMetrics [ j . id ] [ 0 ] / g ; h = a . parentNode ; i = a . nextSibling ; h && h . removeChild ( a ) ; a . firstChild && a . removeChild ( a . firstChild ) ; a . appendChild ( j . firstChild . cloneNode ( ! 0 ) ) ; a . setAttributeNS ( null , "viewBox" , j . getAttributeNS ( null , "viewBox" ) ) ; a . setAttributeNS ( null ,
"width" , g ) ; a . setAttributeNS ( null , "height" , g ) ; a . setAttributeNS ( null , "x" , f . x - d ) ; a . setAttributeNS ( null , "y" , f . y - d ) ; i ? h . insertBefore ( a , i ) : h && h . appendChild ( a ) } else a . setAttributeNS ( null , "r" , b . pointRadius ) ; d = b . rotation ; if ( ( void 0 !== d || void 0 !== a . _rotation ) && f ) a . _rotation = d , d |= 0 , "svg" !== a . nodeName ? a . setAttributeNS ( null , "transform" , "rotate(" + d + " " + f . x + " " + f . y + ")" ) : ( f = this . symbolMetrics [ j . id ] , a . firstChild . setAttributeNS ( null , "transform" , "rotate(" + d + " " + f [ 1 ] + " " + f [ 2 ] + ")" ) ) } c . isFilled ? ( a . setAttributeNS ( null ,
"fill" , b . fillColor ) , a . setAttributeNS ( null , "fill-opacity" , b . fillOpacity ) ) : a . setAttributeNS ( null , "fill" , "none" ) ; c . isStroked ? ( a . setAttributeNS ( null , "stroke" , b . strokeColor ) , a . setAttributeNS ( null , "stroke-opacity" , b . strokeOpacity ) , a . setAttributeNS ( null , "stroke-width" , b . strokeWidth * e ) , a . setAttributeNS ( null , "stroke-linecap" , b . strokeLinecap || "round" ) , a . setAttributeNS ( null , "stroke-linejoin" , "round" ) , b . strokeDashstyle && a . setAttributeNS ( null , "stroke-dasharray" , this . dashStyle ( b , e ) ) ) : a . setAttributeNS ( null , "stroke" ,
"none" ) ; b . pointerEvents && a . setAttributeNS ( null , "pointer-events" , b . pointerEvents ) ; null != b . cursor && a . setAttributeNS ( null , "cursor" , b . cursor ) ; return a } , dashStyle : function ( a , b ) { var c = a . strokeWidth * b , d = a . strokeDashstyle ; switch ( d ) { case "solid" : return "none" ; case "dot" : return [ 1 , 4 * c ] . join ( ) ; case "dash" : return [ 4 * c , 4 * c ] . join ( ) ; case "dashdot" : return [ 4 * c , 4 * c , 1 , 4 * c ] . join ( ) ; case "longdash" : return [ 8 * c , 4 * c ] . join ( ) ; case "longdashdot" : return [ 8 * c , 4 * c , 1 , 4 * c ] . join ( ) ; default : return OpenLayers . String . trim ( d ) . replace ( /\s+/g ,
"," ) } } , createNode : function ( a , b ) { var c = document . createElementNS ( this . xmlns , a ) ; b && c . setAttributeNS ( null , "id" , b ) ; return c } , nodeTypeCompare : function ( a , b ) { return b == a . nodeName } , createRenderRoot : function ( ) { var a = this . nodeFactory ( this . container . id + "_svgRoot" , "svg" ) ; a . style . display = "block" ; return a } , createRoot : function ( a ) { return this . nodeFactory ( this . container . id + a , "g" ) } , createDefs : function ( ) { var a = this . nodeFactory ( this . container . id + "_defs" , "defs" ) ; this . rendererRoot . appendChild ( a ) ; return a } , drawPoint : function ( a ,
b ) { return this . drawCircle ( a , b , 1 ) } , drawCircle : function ( a , b , c ) { var d = this . getResolution ( ) , e = ( b . x - this . featureDx ) / d + this . left , b = this . top - b . y / d ; return this . inValidRange ( e , b ) ? ( a . setAttributeNS ( null , "cx" , e ) , a . setAttributeNS ( null , "cy" , b ) , a . setAttributeNS ( null , "r" , c ) , a ) : ! 1 } , drawLineString : function ( a , b ) { var c = this . getComponentsString ( b . components ) ; return c . path ? ( a . setAttributeNS ( null , "points" , c . path ) , c . complete ? a : null ) : ! 1 } , drawLinearRing : function ( a , b ) { var c = this . getComponentsString ( b . components ) ; return c . path ?
( a . setAttributeNS ( null , "points" , c . path ) , c . complete ? a : null ) : ! 1 } , drawPolygon : function ( a , b ) { for ( var c = "" , d = ! 0 , e = ! 0 , f , g , h = 0 , i = b . components . length ; h < i ; h ++ ) c += " M" , f = this . getComponentsString ( b . components [ h ] . components , " " ) , ( g = f . path ) ? ( c += " " + g , e = f . complete && e ) : d = ! 1 ; return d ? ( a . setAttributeNS ( null , "d" , c + " z" ) , a . setAttributeNS ( null , "fill-rule" , "evenodd" ) , e ? a : null ) : ! 1 } , drawRectangle : function ( a , b ) { var c = this . getResolution ( ) , d = ( b . x - this . featureDx ) / c + this . left , e = this . top - b . y / c ; return this . inValidRange ( d , e ) ? ( a . setAttributeNS ( null ,
"x" , d ) , a . setAttributeNS ( null , "y" , e ) , a . setAttributeNS ( null , "width" , b . width / c ) , a . setAttributeNS ( null , "height" , b . height / c ) , a ) : ! 1 } , drawText : function ( a , b , c ) { var d = ! ! b . labelOutlineWidth ; if ( d ) { var e = OpenLayers . Util . extend ( { } , b ) ; e . fontColor = e . labelOutlineColor ; e . fontStrokeColor = e . labelOutlineColor ; e . fontStrokeWidth = b . labelOutlineWidth ; delete e . labelOutlineWidth ; this . drawText ( a , e , c ) } var f = this . getResolution ( ) , e = ( c . x - this . featureDx ) / f + this . left , g = c . y / f - this . top , d = d ? this . LABEL _OUTLINE _SUFFIX : this . LABEL _ID _SUFFIX ,
f = this . nodeFactory ( a + d , "text" ) ; f . setAttributeNS ( null , "x" , e ) ; f . setAttributeNS ( null , "y" , - g ) ; b . fontColor && f . setAttributeNS ( null , "fill" , b . fontColor ) ; b . fontStrokeColor && f . setAttributeNS ( null , "stroke" , b . fontStrokeColor ) ; b . fontStrokeWidth && f . setAttributeNS ( null , "stroke-width" , b . fontStrokeWidth ) ; b . fontOpacity && f . setAttributeNS ( null , "opacity" , b . fontOpacity ) ; b . fontFamily && f . setAttributeNS ( null , "font-family" , b . fontFamily ) ; b . fontSize && f . setAttributeNS ( null , "font-size" , b . fontSize ) ; b . fontWeight && f . setAttributeNS ( null ,
"font-weight" , b . fontWeight ) ; b . fontStyle && f . setAttributeNS ( null , "font-style" , b . fontStyle ) ; ! 0 === b . labelSelect ? ( f . setAttributeNS ( null , "pointer-events" , "visible" ) , f . _featureId = a ) : f . setAttributeNS ( null , "pointer-events" , "none" ) ; g = b . labelAlign || OpenLayers . Renderer . defaultSymbolizer . labelAlign ; f . setAttributeNS ( null , "text-anchor" , OpenLayers . Renderer . SVG . LABEL _ALIGN [ g [ 0 ] ] || "middle" ) ; ! 0 === OpenLayers . IS _GECKO && f . setAttributeNS ( null , "dominant-baseline" , OpenLayers . Renderer . SVG . LABEL _ALIGN [ g [ 1 ] ] || "central" ) ; for ( var h =
b . label . split ( "\n" ) , i = h . length ; f . childNodes . length > i ; ) f . removeChild ( f . lastChild ) ; for ( var j = 0 ; j < i ; j ++ ) { var k = this . nodeFactory ( a + d + "_tspan_" + j , "tspan" ) ; ! 0 === b . labelSelect && ( k . _featureId = a , k . _geometry = c , k . _geometryClass = c . CLASS _NAME ) ; ! 1 === OpenLayers . IS _GECKO && k . setAttributeNS ( null , "baseline-shift" , OpenLayers . Renderer . SVG . LABEL _VSHIFT [ g [ 1 ] ] || "-35%" ) ; k . setAttribute ( "x" , e ) ; if ( 0 == j ) { var l = OpenLayers . Renderer . SVG . LABEL _VFACTOR [ g [ 1 ] ] ; null == l && ( l = - 0.5 ) ; k . setAttribute ( "dy" , l * ( i - 1 ) + "em" ) } else k . setAttribute ( "dy" ,
"1em" ) ; k . textContent = "" === h [ j ] ? " " : h [ j ] ; k . parentNode || f . appendChild ( k ) } f . parentNode || this . textRoot . appendChild ( f ) } , getComponentsString : function ( a , b ) { for ( var c = [ ] , d = ! 0 , e = a . length , f = [ ] , g , h = 0 ; h < e ; h ++ ) g = a [ h ] , c . push ( g ) , ( g = this . getShortString ( g ) ) ? f . push ( g ) : ( 0 < h && this . getShortString ( a [ h - 1 ] ) && f . push ( this . clipLine ( a [ h ] , a [ h - 1 ] ) ) , h < e - 1 && this . getShortString ( a [ h + 1 ] ) && f . push ( this . clipLine ( a [ h ] , a [ h + 1 ] ) ) , d = ! 1 ) ; return { path : f . join ( b || "," ) , complete : d } } , clipLine : function ( a , b ) { if ( b . equals ( a ) ) return "" ; var c = this . getResolution ( ) ,
d = this . MAX _PIXEL - this . translationParameters . x , e = this . MAX _PIXEL - this . translationParameters . y , f = ( b . x - this . featureDx ) / c + this . left , g = this . top - b . y / c , h = ( a . x - this . featureDx ) / c + this . left , c = this . top - a . y / c , i ; if ( h < - d || h > d ) i = ( c - g ) / ( h - f ) , h = 0 > h ? - d : d , c = g + ( h - f ) * i ; if ( c < - e || c > e ) i = ( h - f ) / ( c - g ) , c = 0 > c ? - e : e , h = f + ( c - g ) * i ; return h + "," + c } , getShortString : function ( a ) { var b = this . getResolution ( ) , c = ( a . x - this . featureDx ) / b + this . left , a = this . top - a . y / b ; return this . inValidRange ( c , a ) ? c + "," + a : ! 1 } , getPosition : function ( a ) { return { x : parseFloat ( a . getAttributeNS ( null ,
"cx" ) ) , y : parseFloat ( a . getAttributeNS ( null , "cy" ) ) } } , importSymbol : function ( a ) { this . defs || ( this . defs = this . createDefs ( ) ) ; var b = this . container . id + "-" + a , c = document . getElementById ( b ) ; if ( null != c ) return c ; var d = OpenLayers . Renderer . symbol [ a ] ; if ( ! d ) throw Error ( a + " is not a valid symbol name" ) ; var a = this . nodeFactory ( b , "symbol" ) , e = this . nodeFactory ( null , "polygon" ) ; a . appendChild ( e ) ; for ( var c = new OpenLayers . Bounds ( Number . MAX _VALUE , Number . MAX _VALUE , 0 , 0 ) , f = [ ] , g , h , i = 0 ; i < d . length ; i += 2 ) g = d [ i ] , h = d [ i + 1 ] , c . left = Math . min ( c . left ,
g ) , c . bottom = Math . min ( c . bottom , h ) , c . right = Math . max ( c . right , g ) , c . top = Math . max ( c . top , h ) , f . push ( g , "," , h ) ; e . setAttributeNS ( null , "points" , f . join ( " " ) ) ; d = c . getWidth ( ) ; e = c . getHeight ( ) ; a . setAttributeNS ( null , "viewBox" , [ c . left - d , c . bottom - e , 3 * d , 3 * e ] . join ( " " ) ) ; this . symbolMetrics [ b ] = [ Math . max ( d , e ) , c . getCenterLonLat ( ) . lon , c . getCenterLonLat ( ) . lat ] ; this . defs . appendChild ( a ) ; return a } , getFeatureIdFromEvent : function ( a ) { var b = OpenLayers . Renderer . Elements . prototype . getFeatureIdFromEvent . apply ( this , arguments ) ; b || ( b = a . target ,
b = b . parentNode && b != this . rendererRoot ? b . parentNode . _featureId : void 0 ) ; return b } , CLASS _NAME : "OpenLayers.Renderer.SVG" } ) ; OpenLayers . Renderer . SVG . LABEL _ALIGN = { l : "start" , r : "end" , b : "bottom" , t : "hanging" } ; OpenLayers . Renderer . SVG . LABEL _VSHIFT = { t : "-70%" , b : "0" } ; OpenLayers . Renderer . SVG . LABEL _VFACTOR = { t : 0 , b : - 1 } ; OpenLayers . Renderer . SVG . preventDefault = function ( a ) { a . preventDefault && a . preventDefault ( ) } ; OpenLayers . Format . SLD . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . SLD . v1 , { VERSION : "1.0.0" , schemaLocation : "http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" , CLASS _NAME : "OpenLayers.Format.SLD.v1_0_0" } ) ; OpenLayers . Format . OWSContext = OpenLayers . Class ( OpenLayers . Format . Context , { defaultVersion : "0.3.1" , getVersion : function ( a , b ) { var c = OpenLayers . Format . XML . VersionedOGC . prototype . getVersion . apply ( this , arguments ) ; "0.3.0" === c && ( c = this . defaultVersion ) ; return c } , toContext : function ( a ) { var b = { } ; "OpenLayers.Map" == a . CLASS _NAME && ( b . bounds = a . getExtent ( ) , b . maxExtent = a . maxExtent , b . projection = a . projection , b . size = a . getSize ( ) , b . layers = a . layers ) ; return b } , CLASS _NAME : "OpenLayers.Format.OWSContext" } ) ; OpenLayers . Format . OWSContext . v0 _3 _1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { owc : "http://www.opengis.net/ows-context" , gml : "http://www.opengis.net/gml" , kml : "http://www.opengis.net/kml/2.2" , ogc : "http://www.opengis.net/ogc" , ows : "http://www.opengis.net/ows" , sld : "http://www.opengis.net/sld" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , VERSION : "0.3.1" , schemaLocation : "http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" ,
defaultPrefix : "owc" , extractAttributes : ! 0 , xy : ! 0 , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , featureNS : "http://mapserver.gis.umn.edu/mapserver" , featureType : "vector" , geometryName : "geometry" , nestingLayerLookup : null , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) ; OpenLayers . Format . GML . v2 . prototype . setGeometryTypes . call ( this ) } , setNestingPath : function ( a ) { if ( a . layersContext ) for ( var b = 0 , c = a . layersContext . length ; b < c ; b ++ ) { var d =
a . layersContext [ b ] , e = [ ] , f = a . title || "" ; a . metadata && a . metadata . nestingPath && ( e = a . metadata . nestingPath . slice ( ) ) ; "" != f && e . push ( f ) ; d . metadata . nestingPath = e ; d . layersContext && this . setNestingPath ( d ) } } , decomposeNestingPath : function ( a ) { var b = [ ] ; if ( OpenLayers . Util . isArray ( a ) ) { for ( a = a . slice ( ) ; 0 < a . length ; ) b . push ( a . slice ( ) ) , a . pop ( ) ; b . reverse ( ) } return b } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a ,
b ) ; this . setNestingPath ( { layersContext : b . layersContext } ) ; a = [ ] ; this . processLayer ( a , b ) ; delete b . layersContext ; b . layersContext = a ; return b } , processLayer : function ( a , b ) { if ( b . layersContext ) for ( var c = 0 , d = b . layersContext . length ; c < d ; c ++ ) { var e = b . layersContext [ c ] ; a . push ( e ) ; e . layersContext && this . processLayer ( a , e ) } } , write : function ( a , b ) { this . nestingLayerLookup = { } ; b = b || { } ; OpenLayers . Util . applyDefaults ( b , a ) ; var c = this . writeNode ( "OWSContext" , b ) ; this . nestingLayerLookup = null ; this . setAttributeNS ( c , this . namespaces . xsi ,
"xsi:schemaLocation" , this . schemaLocation ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ c ] ) } , readers : { kml : { Document : function ( a , b ) { b . features = ( new OpenLayers . Format . KML ( { kmlns : this . namespaces . kml , extractStyles : ! 0 } ) ) . read ( a ) } } , owc : { OWSContext : function ( a , b ) { this . readChildNodes ( a , b ) } , General : function ( a , b ) { this . readChildNodes ( a , b ) } , ResourceList : function ( a , b ) { this . readChildNodes ( a , b ) } , Layer : function ( a , b ) { var c = { metadata : { } , visibility : "1" != a . getAttribute ( "hidden" ) , queryable : "1" == a . getAttribute ( "queryable" ) ,
opacity : null != a . getAttribute ( "opacity" ) ? parseFloat ( a . getAttribute ( "opacity" ) ) : null , name : a . getAttribute ( "name" ) , categoryLayer : null == a . getAttribute ( "name" ) , formats : [ ] , styles : [ ] } ; b . layersContext || ( b . layersContext = [ ] ) ; b . layersContext . push ( c ) ; this . readChildNodes ( a , c ) } , InlineGeometry : function ( a , b ) { b . features = [ ] ; var c = this . getElementsByTagNameNS ( a , this . namespaces . gml , "featureMember" ) , d ; 1 <= c . length && ( d = c [ 0 ] ) ; d && d . firstChild && ( c = d . firstChild . nextSibling ? d . firstChild . nextSibling : d . firstChild , this . setNamespace ( "feature" ,
c . namespaceURI ) , this . featureType = c . localName || c . nodeName . split ( ":" ) . pop ( ) , this . readChildNodes ( a , b ) ) } , Server : function ( a , b ) { if ( ! b . service && ! b . version || b . service != OpenLayers . Format . Context . serviceTypes . WMS ) b . service = a . getAttribute ( "service" ) , b . version = a . getAttribute ( "version" ) , this . readChildNodes ( a , b ) } , Name : function ( a , b ) { b . name = this . getChildValue ( a ) ; this . readChildNodes ( a , b ) } , Title : function ( a , b ) { b . title = this . getChildValue ( a ) ; this . readChildNodes ( a , b ) } , StyleList : function ( a , b ) { this . readChildNodes ( a , b . styles ) } ,
Style : function ( a , b ) { var c = { } ; b . push ( c ) ; this . readChildNodes ( a , c ) } , LegendURL : function ( a , b ) { var c = { } ; b . legend = c ; this . readChildNodes ( a , c ) } , OnlineResource : function ( a , b ) { b . url = this . getAttributeNS ( a , this . namespaces . xlink , "href" ) ; this . readChildNodes ( a , b ) } } , ows : OpenLayers . Format . OWSCommon . v1 _0 _0 . prototype . readers . ows , gml : OpenLayers . Format . GML . v2 . prototype . readers . gml , sld : OpenLayers . Format . SLD . v1 _0 _0 . prototype . readers . sld , feature : OpenLayers . Format . GML . v2 . prototype . readers . feature } , writers : { owc : { OWSContext : function ( a ) { var b =
this . createElementNSPlus ( "OWSContext" , { attributes : { version : this . VERSION , id : a . id || OpenLayers . Util . createUniqueID ( "OpenLayers_OWSContext_" ) } } ) ; this . writeNode ( "General" , a , b ) ; this . writeNode ( "ResourceList" , a , b ) ; return b } , General : function ( a ) { var b = this . createElementNSPlus ( "General" ) ; this . writeNode ( "ows:BoundingBox" , a , b ) ; this . writeNode ( "ows:Title" , a . title || "OpenLayers OWSContext" , b ) ; return b } , ResourceList : function ( a ) { for ( var b = this . createElementNSPlus ( "ResourceList" ) , c = 0 , d = a . layers . length ; c < d ; c ++ ) { var e =
a . layers [ c ] , f = this . decomposeNestingPath ( e . metadata . nestingPath ) ; this . writeNode ( "_Layer" , { layer : e , subPaths : f } , b ) } return b } , Server : function ( a ) { var b = this . createElementNSPlus ( "Server" , { attributes : { version : a . version , service : a . service } } ) ; this . writeNode ( "OnlineResource" , a , b ) ; return b } , OnlineResource : function ( a ) { return this . createElementNSPlus ( "OnlineResource" , { attributes : { "xlink:href" : a . url } } ) } , InlineGeometry : function ( a ) { var b = this . createElementNSPlus ( "InlineGeometry" ) ; this . writeNode ( "gml:boundedBy" , a . getDataExtent ( ) ,
b ) ; for ( var c = 0 , d = a . features . length ; c < d ; c ++ ) this . writeNode ( "gml:featureMember" , a . features [ c ] , b ) ; return b } , StyleList : function ( a ) { for ( var b = this . createElementNSPlus ( "StyleList" ) , c = 0 , d = a . length ; c < d ; c ++ ) this . writeNode ( "Style" , a [ c ] , b ) ; return b } , Style : function ( a ) { var b = this . createElementNSPlus ( "Style" ) ; this . writeNode ( "Name" , a , b ) ; this . writeNode ( "Title" , a , b ) ; a . legend && this . writeNode ( "LegendURL" , a , b ) ; return b } , Name : function ( a ) { return this . createElementNSPlus ( "Name" , { value : a . name } ) } , Title : function ( a ) { return this . createElementNSPlus ( "Title" ,
{ value : a . title } ) } , LegendURL : function ( a ) { var b = this . createElementNSPlus ( "LegendURL" ) ; this . writeNode ( "OnlineResource" , a . legend , b ) ; return b } , _WMS : function ( a ) { var b = this . createElementNSPlus ( "Layer" , { attributes : { name : a . params . LAYERS , queryable : a . queryable ? "1" : "0" , hidden : a . visibility ? "0" : "1" , opacity : a . hasOwnProperty ( "opacity" ) ? a . opacity : null } } ) ; this . writeNode ( "ows:Title" , a . name , b ) ; this . writeNode ( "ows:OutputFormat" , a . params . FORMAT , b ) ; this . writeNode ( "Server" , { service : OpenLayers . Format . Context . serviceTypes . WMS ,
version : a . params . VERSION , url : a . url } , b ) ; a . metadata . styles && 0 < a . metadata . styles . length && this . writeNode ( "StyleList" , a . metadata . styles , b ) ; return b } , _Layer : function ( a ) { var b , c , d ; b = a . layer ; c = a . subPaths ; d = null ; 0 < c . length ? ( b = c [ 0 ] . join ( "/" ) , c = b . lastIndexOf ( "/" ) , d = this . nestingLayerLookup [ b ] , c = 0 < c ? b . substring ( c + 1 , b . length ) : b , d || ( d = this . createElementNSPlus ( "Layer" ) , this . writeNode ( "ows:Title" , c , d ) , this . nestingLayerLookup [ b ] = d ) , a . subPaths . shift ( ) , this . writeNode ( "_Layer" , a , d ) ) : ( b instanceof OpenLayers . Layer . WMS ?
d = this . writeNode ( "_WMS" , b ) : b instanceof OpenLayers . Layer . Vector && ( b . protocol instanceof OpenLayers . Protocol . WFS . v1 ? d = this . writeNode ( "_WFS" , b ) : b . protocol instanceof OpenLayers . Protocol . HTTP ? b . protocol . format instanceof OpenLayers . Format . GML ? ( b . protocol . format . version = "2.1.2" , d = this . writeNode ( "_GML" , b ) ) : b . protocol . format instanceof OpenLayers . Format . KML && ( b . protocol . format . version = "2.2" , d = this . writeNode ( "_KML" , b ) ) : ( this . setNamespace ( "feature" , this . featureNS ) , d = this . writeNode ( "_InlineGeometry" , b ) ) ) ,
b . options . maxScale && this . writeNode ( "sld:MinScaleDenominator" , b . options . maxScale , d ) , b . options . minScale && this . writeNode ( "sld:MaxScaleDenominator" , b . options . minScale , d ) , this . nestingLayerLookup [ b . name ] = d ) ; return d } , _WFS : function ( a ) { var b = this . createElementNSPlus ( "Layer" , { attributes : { name : a . protocol . featurePrefix + ":" + a . protocol . featureType , hidden : a . visibility ? "0" : "1" } } ) ; this . writeNode ( "ows:Title" , a . name , b ) ; this . writeNode ( "Server" , { service : OpenLayers . Format . Context . serviceTypes . WFS , version : a . protocol . version ,
url : a . protocol . url } , b ) ; return b } , _InlineGeometry : function ( a ) { var b = this . createElementNSPlus ( "Layer" , { attributes : { name : this . featureType , hidden : a . visibility ? "0" : "1" } } ) ; this . writeNode ( "ows:Title" , a . name , b ) ; this . writeNode ( "InlineGeometry" , a , b ) ; return b } , _GML : function ( a ) { var b = this . createElementNSPlus ( "Layer" ) ; this . writeNode ( "ows:Title" , a . name , b ) ; this . writeNode ( "Server" , { service : OpenLayers . Format . Context . serviceTypes . GML , url : a . protocol . url , version : a . protocol . format . version } , b ) ; return b } , _KML : function ( a ) { var b =
this . createElementNSPlus ( "Layer" ) ; this . writeNode ( "ows:Title" , a . name , b ) ; this . writeNode ( "Server" , { service : OpenLayers . Format . Context . serviceTypes . KML , version : a . protocol . format . version , url : a . protocol . url } , b ) ; return b } } , gml : OpenLayers . Util . applyDefaults ( { boundedBy : function ( a ) { var b = this . createElementNSPlus ( "gml:boundedBy" ) ; this . writeNode ( "gml:Box" , a , b ) ; return b } } , OpenLayers . Format . GML . v2 . prototype . writers . gml ) , ows : OpenLayers . Format . OWSCommon . v1 _0 _0 . prototype . writers . ows , sld : OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers . sld ,
feature : OpenLayers . Format . GML . v2 . prototype . writers . feature } , CLASS _NAME : "OpenLayers.Format.OWSContext.v0_3_1" } ) ; OpenLayers . Control . ScaleLine = OpenLayers . Class ( OpenLayers . Control , { maxWidth : 100 , topOutUnits : "km" , topInUnits : "m" , bottomOutUnits : "mi" , bottomInUnits : "ft" , eTop : null , eBottom : null , geodesic : ! 1 , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; this . eTop || ( this . eTop = document . createElement ( "div" ) , this . eTop . className = this . displayClass + "Top" , this . div . appendChild ( this . eTop ) , this . eTop . style . visibility = "" == this . topOutUnits || "" == this . topInUnits ? "hidden" : "visible" , this . eBottom = document . createElement ( "div" ) ,
this . eBottom . className = this . displayClass + "Bottom" , this . div . appendChild ( this . eBottom ) , this . eBottom . style . visibility = "" == this . bottomOutUnits || "" == this . bottomInUnits ? "hidden" : "visible" ) ; this . map . events . register ( "moveend" , this , this . update ) ; this . update ( ) ; return this . div } , getBarLen : function ( a ) { var b = parseInt ( Math . log ( a ) / Math . log ( 10 ) ) , b = Math . pow ( 10 , b ) , a = parseInt ( a / b ) ; return ( 5 < a ? 5 : 2 < a ? 2 : 1 ) * b } , update : function ( ) { var a = this . map . getResolution ( ) ; if ( a ) { var b = this . map . getUnits ( ) , c = OpenLayers . INCHES _PER _UNIT , d = this . maxWidth *
a * c [ b ] , e = 1 ; ! 0 === this . geodesic && ( e = ( this . map . getGeodesicPixelSize ( ) . w || 1.0 E - 6 ) * this . maxWidth / ( d / c . km ) , d *= e ) ; var f , g ; 1E5 < d ? ( f = this . topOutUnits , g = this . bottomOutUnits ) : ( f = this . topInUnits , g = this . bottomInUnits ) ; var h = d / c [ f ] , i = d / c [ g ] , d = this . getBarLen ( h ) , j = this . getBarLen ( i ) , h = d / c [ b ] * c [ f ] , i = j / c [ b ] * c [ g ] , b = h / a / e , a = i / a / e ; "visible" == this . eBottom . style . visibility && ( this . eBottom . style . width = Math . round ( a ) + "px" , this . eBottom . innerHTML = j + " " + g ) ; "visible" == this . eTop . style . visibility && ( this . eTop . style . width = Math . round ( b ) +
"px" , this . eTop . innerHTML = d + " " + f ) } } , CLASS _NAME : "OpenLayers.Control.ScaleLine" } ) ; OpenLayers . Icon = OpenLayers . Class ( { url : null , size : null , offset : null , calculateOffset : null , imageDiv : null , px : null , initialize : function ( a , b , c , d ) { this . url = a ; this . size = b || { w : 20 , h : 20 } ; this . offset = c || { x : - ( this . size . w / 2 ) , y : - ( this . size . h / 2 ) } ; this . calculateOffset = d ; a = OpenLayers . Util . createUniqueID ( "OL_Icon_" ) ; this . imageDiv = OpenLayers . Util . createAlphaImageDiv ( a ) } , destroy : function ( ) { this . erase ( ) ; OpenLayers . Event . stopObservingElement ( this . imageDiv . firstChild ) ; this . imageDiv . innerHTML = "" ; this . imageDiv = null } , clone : function ( ) { return new OpenLayers . Icon ( this . url ,
this . size , this . offset , this . calculateOffset ) } , setSize : function ( a ) { null != a && ( this . size = a ) ; this . draw ( ) } , setUrl : function ( a ) { null != a && ( this . url = a ) ; this . draw ( ) } , draw : function ( a ) { OpenLayers . Util . modifyAlphaImageDiv ( this . imageDiv , null , null , this . size , this . url , "absolute" ) ; this . moveTo ( a ) ; return this . imageDiv } , erase : function ( ) { null != this . imageDiv && null != this . imageDiv . parentNode && OpenLayers . Element . remove ( this . imageDiv ) } , setOpacity : function ( a ) { OpenLayers . Util . modifyAlphaImageDiv ( this . imageDiv , null , null , null , null ,
null , null , null , a ) } , moveTo : function ( a ) { null != a && ( this . px = a ) ; null != this . imageDiv && ( null == this . px ? this . display ( ! 1 ) : ( this . calculateOffset && ( this . offset = this . calculateOffset ( this . size ) ) , OpenLayers . Util . modifyAlphaImageDiv ( this . imageDiv , null , { x : this . px . x + this . offset . x , y : this . px . y + this . offset . y } ) ) ) } , display : function ( a ) { this . imageDiv . style . display = a ? "" : "none" } , isDrawn : function ( ) { return this . imageDiv && this . imageDiv . parentNode && 11 != this . imageDiv . parentNode . nodeType } , CLASS _NAME : "OpenLayers.Icon" } ) ; OpenLayers . Marker = OpenLayers . Class ( { icon : null , lonlat : null , events : null , map : null , initialize : function ( a , b ) { this . lonlat = a ; var c = b ? b : OpenLayers . Marker . defaultIcon ( ) ; null == this . icon ? this . icon = c : ( this . icon . url = c . url , this . icon . size = c . size , this . icon . offset = c . offset , this . icon . calculateOffset = c . calculateOffset ) ; this . events = new OpenLayers . Events ( this , this . icon . imageDiv ) } , destroy : function ( ) { this . erase ( ) ; this . map = null ; this . events . destroy ( ) ; this . events = null ; null != this . icon && ( this . icon . destroy ( ) , this . icon = null ) } ,
draw : function ( a ) { return this . icon . draw ( a ) } , erase : function ( ) { null != this . icon && this . icon . erase ( ) } , moveTo : function ( a ) { null != a && null != this . icon && this . icon . moveTo ( a ) ; this . lonlat = this . map . getLonLatFromLayerPx ( a ) } , isDrawn : function ( ) { return this . icon && this . icon . isDrawn ( ) } , onScreen : function ( ) { var a = ! 1 ; this . map && ( a = this . map . getExtent ( ) . containsLonLat ( this . lonlat ) ) ; return a } , inflate : function ( a ) { this . icon && this . icon . setSize ( { w : this . icon . size . w * a , h : this . icon . size . h * a } ) } , setOpacity : function ( a ) { this . icon . setOpacity ( a ) } ,
setUrl : function ( a ) { this . icon . setUrl ( a ) } , display : function ( a ) { this . icon . display ( a ) } , CLASS _NAME : "OpenLayers.Marker" } ) ; OpenLayers . Marker . defaultIcon = function ( ) { return new OpenLayers . Icon ( OpenLayers . Util . getImageLocation ( "marker.png" ) , { w : 21 , h : 25 } , { x : - 10.5 , y : - 25 } ) } ; OpenLayers . Layer . TileCache = OpenLayers . Class ( OpenLayers . Layer . Grid , { isBaseLayer : ! 0 , format : "image/png" , serverResolutions : null , initialize : function ( a , b , c , d ) { this . layername = c ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , [ a , b , { } , d ] ) ; this . extension = this . format . split ( "/" ) [ 1 ] . toLowerCase ( ) ; this . extension = "jpg" == this . extension ? "jpeg" : this . extension } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . TileCache ( this . name , this . url , this . layername , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this ,
[ a ] ) } , getURL : function ( a ) { function b ( a , b ) { for ( var a = "" + a , c = [ ] , d = 0 ; d < b ; ++ d ) c . push ( "0" ) ; return c . join ( "" ) . substring ( 0 , b - a . length ) + a } var c = this . getServerResolution ( ) , d = this . maxExtent , e = this . tileSize , f = Math . round ( ( a . left - d . left ) / ( c * e . w ) ) , a = Math . round ( ( a . bottom - d . bottom ) / ( c * e . h ) ) , c = null != this . serverResolutions ? OpenLayers . Util . indexOf ( this . serverResolutions , c ) : this . map . getZoom ( ) , f = [ this . layername , b ( c , 2 ) , b ( parseInt ( f / 1E6 ) , 3 ) , b ( parseInt ( f / 1E3 ) % 1E3 , 3 ) , b ( parseInt ( f ) % 1E3 , 3 ) , b ( parseInt ( a / 1E6 ) , 3 ) , b ( parseInt ( a /
1E3 ) % 1E3 , 3 ) , b ( parseInt ( a ) % 1E3 , 3 ) + "." + this . extension ] . join ( "/" ) , c = this . url ; OpenLayers . Util . isArray ( c ) && ( c = this . selectUrl ( f , c ) ) ; c = "/" == c . charAt ( c . length - 1 ) ? c : c + "/" ; return c + f } , CLASS _NAME : "OpenLayers.Layer.TileCache" } ) ; OpenLayers . Layer . KaMap = OpenLayers . Class ( OpenLayers . Layer . Grid , { isBaseLayer : ! 0 , DEFAULT _PARAMS : { i : "jpeg" , map : "" } , initialize : function ( a , b , c , d ) { OpenLayers . Layer . Grid . prototype . initialize . apply ( this , arguments ) ; this . params = OpenLayers . Util . applyDefaults ( this . params , this . DEFAULT _PARAMS ) } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = this . map . getResolution ( ) , c = Math . round ( 1E4 * this . map . getScale ( ) ) / 1E4 , d = Math . round ( a . left / b ) ; return this . getFullRequestString ( { t : - Math . round ( a . top / b ) , l : d , s : c } ) } , calculateGridLayout : function ( a ,
b , c ) { var b = c * this . tileSize . w , c = c * this . tileSize . h , d = a . left , e = Math . floor ( d / b ) - this . buffer , d = - ( d / b - e ) * this . tileSize . w , e = e * b , a = a . top , f = Math . ceil ( a / c ) + this . buffer ; return { tilelon : b , tilelat : c , tileoffsetlon : e , tileoffsetlat : f * c , tileoffsetx : d , tileoffsety : - ( f - a / c + 1 ) * this . tileSize . h } } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . KaMap ( this . name , this . url , this . params , this . getOptions ( ) ) ) ; a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) ; null != this . tileSize && ( a . tileSize = this . tileSize . clone ( ) ) ; a . grid =
[ ] ; return a } , getTileBounds : function ( a ) { var b = this . getResolution ( ) , c = b * this . tileSize . w , b = b * this . tileSize . h , d = this . getLonLatFromViewPortPx ( a ) , a = c * Math . floor ( d . lon / c ) , d = b * Math . floor ( d . lat / b ) ; return new OpenLayers . Bounds ( a , d , a + c , d + b ) } , CLASS _NAME : "OpenLayers.Layer.KaMap" } ) ; OpenLayers . Control . TransformFeature = OpenLayers . Class ( OpenLayers . Control , { geometryTypes : null , layer : null , preserveAspectRatio : ! 1 , rotate : ! 0 , feature : null , renderIntent : "temporary" , rotationHandleSymbolizer : null , box : null , center : null , scale : 1 , ratio : 1 , rotation : 0 , handles : null , rotationHandles : null , dragControl : null , irregular : ! 1 , initialize : function ( a , b ) { OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; this . layer = a ; this . rotationHandleSymbolizer || ( this . rotationHandleSymbolizer = { stroke : ! 1 , pointRadius : 10 , fillOpacity : 0 ,
cursor : "pointer" } ) ; this . createBox ( ) ; this . createControl ( ) } , activate : function ( ) { var a = ! 1 ; OpenLayers . Control . prototype . activate . apply ( this , arguments ) && ( this . dragControl . activate ( ) , this . layer . addFeatures ( [ this . box ] ) , this . rotate && this . layer . addFeatures ( this . rotationHandles ) , this . layer . addFeatures ( this . handles ) , a = ! 0 ) ; return a } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) && ( this . layer . removeFeatures ( this . handles ) , this . rotate && this . layer . removeFeatures ( this . rotationHandles ) ,
this . layer . removeFeatures ( [ this . box ] ) , this . dragControl . deactivate ( ) , a = ! 0 ) ; return a } , setMap : function ( a ) { this . dragControl . setMap ( a ) ; OpenLayers . Control . prototype . setMap . apply ( this , arguments ) } , setFeature : function ( a , b ) { var b = OpenLayers . Util . applyDefaults ( b , { rotation : 0 , scale : 1 , ratio : 1 } ) , c = this . rotation , d = this . center ; OpenLayers . Util . extend ( this , b ) ; if ( ! 1 !== this . events . triggerEvent ( "beforesetfeature" , { feature : a } ) ) { this . feature = a ; this . activate ( ) ; this . _setfeature = ! 0 ; var e = this . feature . geometry . getBounds ( ) ; this . box . move ( e . getCenterLonLat ( ) ) ;
this . box . geometry . rotate ( - c , d ) ; this . _angle = 0 ; this . rotation ? ( c = a . geometry . clone ( ) , c . rotate ( - this . rotation , this . center ) , c = new OpenLayers . Feature . Vector ( c . getBounds ( ) . toGeometry ( ) ) , c . geometry . rotate ( this . rotation , this . center ) , this . box . geometry . rotate ( this . rotation , this . center ) , this . box . move ( c . geometry . getBounds ( ) . getCenterLonLat ( ) ) , c = c . geometry . components [ 0 ] . components [ 0 ] . getBounds ( ) . getCenterLonLat ( ) ) : c = new OpenLayers . LonLat ( e . left , e . bottom ) ; this . handles [ 0 ] . move ( c ) ; delete this . _setfeature ; this . events . triggerEvent ( "setfeature" ,
{ feature : a } ) } } , unsetFeature : function ( ) { this . active ? this . deactivate ( ) : ( this . feature = null , this . rotation = 0 , this . ratio = this . scale = 1 ) } , createBox : function ( ) { var a = this ; this . center = new OpenLayers . Geometry . Point ( 0 , 0 ) ; this . box = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . LineString ( [ new OpenLayers . Geometry . Point ( - 1 , - 1 ) , new OpenLayers . Geometry . Point ( 0 , - 1 ) , new OpenLayers . Geometry . Point ( 1 , - 1 ) , new OpenLayers . Geometry . Point ( 1 , 0 ) , new OpenLayers . Geometry . Point ( 1 , 1 ) , new OpenLayers . Geometry . Point ( 0 , 1 ) , new OpenLayers . Geometry . Point ( - 1 ,
1 ) , new OpenLayers . Geometry . Point ( - 1 , 0 ) , new OpenLayers . Geometry . Point ( - 1 , - 1 ) ] ) , null , "string" == typeof this . renderIntent ? null : this . renderIntent ) ; this . box . geometry . move = function ( b , c ) { a . _moving = ! 0 ; OpenLayers . Geometry . LineString . prototype . move . apply ( this , arguments ) ; a . center . move ( b , c ) ; delete a . _moving } ; for ( var b = function ( a , b ) { OpenLayers . Geometry . Point . prototype . move . apply ( this , arguments ) ; this . _rotationHandle && this . _rotationHandle . geometry . move ( a , b ) ; this . _handle . geometry . move ( a , b ) } , c = function ( a , b , c ) { OpenLayers . Geometry . Point . prototype . resize . apply ( this ,
arguments ) ; this . _rotationHandle && this . _rotationHandle . geometry . resize ( a , b , c ) ; this . _handle . geometry . resize ( a , b , c ) } , d = function ( a , b ) { OpenLayers . Geometry . Point . prototype . rotate . apply ( this , arguments ) ; this . _rotationHandle && this . _rotationHandle . geometry . rotate ( a , b ) ; this . _handle . geometry . rotate ( a , b ) } , e = function ( b , c ) { var d = this . x , e = this . y ; OpenLayers . Geometry . Point . prototype . move . call ( this , b , c ) ; if ( ! a . _moving ) { var f = a . dragControl . handlers . drag . evt , g = ! ( ! a . _setfeature && a . preserveAspectRatio ) && ! ( f && f . shiftKey ) ,
h = new OpenLayers . Geometry . Point ( d , e ) , f = a . center ; this . rotate ( - a . rotation , f ) ; h . rotate ( - a . rotation , f ) ; var i = this . x - f . x , j = this . y - f . y , k = i - ( this . x - h . x ) , l = j - ( this . y - h . y ) ; a . irregular && ! a . _setfeature && ( i -= ( this . x - h . x ) / 2 , j -= ( this . y - h . y ) / 2 ) ; this . x = d ; this . y = e ; h = 1 ; g ? ( j = 1.0 E - 5 > Math . abs ( l ) ? 1 : j / l , h = ( 1.0 E - 5 > Math . abs ( k ) ? 1 : i / k ) / j ) : ( k = Math . sqrt ( k * k + l * l ) , j = Math . sqrt ( i * i + j * j ) / k ) ; a . _moving = ! 0 ; a . box . geometry . rotate ( - a . rotation , f ) ; delete a . _moving ; a . box . geometry . resize ( j , f , h ) ; a . box . geometry . rotate ( a . rotation , f ) ; a . transformFeature ( { scale : j ,
ratio : h } ) ; a . irregular && ! a . _setfeature && ( i = f . clone ( ) , i . x += 1.0 E - 5 > Math . abs ( d - f . x ) ? 0 : this . x - d , i . y += 1.0 E - 5 > Math . abs ( e - f . y ) ? 0 : this . y - e , a . box . geometry . move ( this . x - d , this . y - e ) , a . transformFeature ( { center : i } ) ) } } , f = function ( b , c ) { var d = this . x , e = this . y ; OpenLayers . Geometry . Point . prototype . move . call ( this , b , c ) ; if ( ! a . _moving ) { var f = a . dragControl . handlers . drag . evt , f = f && f . shiftKey ? 45 : 1 , g = a . center , h = this . x - g . x , i = this . y - g . y ; this . x = d ; this . y = e ; d = Math . atan2 ( i - c , h - b ) ; d = Math . atan2 ( i , h ) - d ; d *= 180 / Math . PI ; a . _angle = ( a . _angle +
d ) % 360 ; d = a . rotation % f ; if ( Math . abs ( a . _angle ) >= f || 0 !== d ) d = Math . round ( a . _angle / f ) * f - d , a . _angle = 0 , a . box . geometry . rotate ( d , g ) , a . transformFeature ( { rotation : d } ) } } , g = Array ( 8 ) , h = Array ( 4 ) , i , j , k , l = "sw s se e ne n nw w" . split ( " " ) , m = 0 ; 8 > m ; ++ m ) i = this . box . geometry . components [ m ] , j = new OpenLayers . Feature . Vector ( i . clone ( ) , { role : l [ m ] + "-resize" } , "string" == typeof this . renderIntent ? null : this . renderIntent ) , 0 == m % 2 && ( k = new OpenLayers . Feature . Vector ( i . clone ( ) , { role : l [ m ] + "-rotate" } , "string" == typeof this . rotationHandleSymbolizer ?
null : this . rotationHandleSymbolizer ) , k . geometry . move = f , i . _rotationHandle = k , h [ m / 2 ] = k ) , i . move = b , i . resize = c , i . rotate = d , j . geometry . move = e , i . _handle = j , g [ m ] = j ; this . rotationHandles = h ; this . handles = g } , createControl : function ( ) { var a = this ; this . dragControl = new OpenLayers . Control . DragFeature ( this . layer , { documentDrag : ! 0 , moveFeature : function ( b ) { this . feature === a . feature && ( this . feature = a . box ) ; OpenLayers . Control . DragFeature . prototype . moveFeature . apply ( this , arguments ) } , onDrag : function ( b ) { b === a . box && a . transformFeature ( { center : a . center } ) } ,
onStart : function ( b ) { var c = ! a . geometryTypes || - 1 !== OpenLayers . Util . indexOf ( a . geometryTypes , b . geometry . CLASS _NAME ) , d = OpenLayers . Util . indexOf ( a . handles , b ) , d = d + OpenLayers . Util . indexOf ( a . rotationHandles , b ) ; b !== a . feature && ( b !== a . box && - 2 == d && c ) && a . setFeature ( b ) } , onComplete : function ( ) { a . events . triggerEvent ( "transformcomplete" , { feature : a . feature } ) } } ) } , drawHandles : function ( ) { for ( var a = this . layer , b = 0 ; 8 > b ; ++ b ) this . rotate && 0 === b % 2 && a . drawFeature ( this . rotationHandles [ b / 2 ] , this . rotationHandleSymbolizer ) , a . drawFeature ( this . handles [ b ] ,
this . renderIntent ) } , transformFeature : function ( a ) { if ( ! this . _setfeature ) { this . scale *= a . scale || 1 ; this . ratio *= a . ratio || 1 ; var b = this . rotation ; this . rotation = ( this . rotation + ( a . rotation || 0 ) ) % 360 ; if ( ! 1 !== this . events . triggerEvent ( "beforetransform" , a ) ) { var c = this . feature , d = c . geometry , e = this . center ; d . rotate ( - b , e ) ; a . scale || a . ratio ? d . resize ( a . scale , e , a . ratio ) : a . center && c . move ( a . center . getBounds ( ) . getCenterLonLat ( ) ) ; d . rotate ( this . rotation , e ) ; this . layer . drawFeature ( c ) ; c . toState ( OpenLayers . State . UPDATE ) ; this . events . triggerEvent ( "transform" ,
a ) } } this . layer . drawFeature ( this . box , this . renderIntent ) ; this . drawHandles ( ) } , destroy : function ( ) { for ( var a , b = 0 ; 8 > b ; ++ b ) a = this . box . geometry . components [ b ] , a . _handle . destroy ( ) , a . _handle = null , a . _rotationHandle && a . _rotationHandle . destroy ( ) , a . _rotationHandle = null ; this . rotationHandles = this . rotationHandleSymbolizer = this . handles = this . feature = this . center = null ; this . box . destroy ( ) ; this . layer = this . box = null ; this . dragControl . destroy ( ) ; this . dragControl = null ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } ,
CLASS _NAME : "OpenLayers.Control.TransformFeature" } ) ; OpenLayers . Handler . Box = OpenLayers . Class ( OpenLayers . Handler , { dragHandler : null , boxDivClassName : "olHandlerBoxZoomBox" , boxOffsets : null , initialize : function ( a , b , c ) { OpenLayers . Handler . prototype . initialize . apply ( this , arguments ) ; this . dragHandler = new OpenLayers . Handler . Drag ( this , { down : this . startBox , move : this . moveBox , out : this . removeBox , up : this . endBox } , { keyMask : this . keyMask } ) } , destroy : function ( ) { OpenLayers . Handler . prototype . destroy . apply ( this , arguments ) ; this . dragHandler && ( this . dragHandler . destroy ( ) , this . dragHandler =
null ) } , setMap : function ( a ) { OpenLayers . Handler . prototype . setMap . apply ( this , arguments ) ; this . dragHandler && this . dragHandler . setMap ( a ) } , startBox : function ( ) { this . callback ( "start" , [ ] ) ; this . zoomBox = OpenLayers . Util . createDiv ( "zoomBox" , { x : - 9999 , y : - 9999 } ) ; this . zoomBox . className = this . boxDivClassName ; this . zoomBox . style . zIndex = this . map . Z _INDEX _BASE . Popup - 1 ; this . map . viewPortDiv . appendChild ( this . zoomBox ) ; OpenLayers . Element . addClass ( this . map . viewPortDiv , "olDrawBox" ) } , moveBox : function ( a ) { var b = this . dragHandler . start . x ,
c = this . dragHandler . start . y , d = Math . abs ( b - a . x ) , e = Math . abs ( c - a . y ) , f = this . getBoxOffsets ( ) ; this . zoomBox . style . width = d + f . width + 1 + "px" ; this . zoomBox . style . height = e + f . height + 1 + "px" ; this . zoomBox . style . left = ( a . x < b ? b - d - f . left : b - f . left ) + "px" ; this . zoomBox . style . top = ( a . y < c ? c - e - f . top : c - f . top ) + "px" } , endBox : function ( a ) { var b ; if ( 5 < Math . abs ( this . dragHandler . start . x - a . x ) || 5 < Math . abs ( this . dragHandler . start . y - a . y ) ) { var c = this . dragHandler . start ; b = Math . min ( c . y , a . y ) ; var d = Math . max ( c . y , a . y ) , e = Math . min ( c . x , a . x ) , a = Math . max ( c . x ,
a . x ) ; b = new OpenLayers . Bounds ( e , d , a , b ) } else b = this . dragHandler . start . clone ( ) ; this . removeBox ( ) ; this . callback ( "done" , [ b ] ) } , removeBox : function ( ) { this . map . viewPortDiv . removeChild ( this . zoomBox ) ; this . boxOffsets = this . zoomBox = null ; OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olDrawBox" ) } , activate : function ( ) { return OpenLayers . Handler . prototype . activate . apply ( this , arguments ) ? ( this . dragHandler . activate ( ) , ! 0 ) : ! 1 } , deactivate : function ( ) { return OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) ?
( this . dragHandler . deactivate ( ) && this . zoomBox && this . removeBox ( ) , ! 0 ) : ! 1 } , getBoxOffsets : function ( ) { if ( ! this . boxOffsets ) { var a = document . createElement ( "div" ) ; a . style . position = "absolute" ; a . style . border = "1px solid black" ; a . style . width = "3px" ; document . body . appendChild ( a ) ; var b = 3 == a . clientWidth ; document . body . removeChild ( a ) ; var a = parseInt ( OpenLayers . Element . getStyle ( this . zoomBox , "border-left-width" ) ) , c = parseInt ( OpenLayers . Element . getStyle ( this . zoomBox , "border-right-width" ) ) , d = parseInt ( OpenLayers . Element . getStyle ( this . zoomBox ,
"border-top-width" ) ) , e = parseInt ( OpenLayers . Element . getStyle ( this . zoomBox , "border-bottom-width" ) ) ; this . boxOffsets = { left : a , right : c , top : d , bottom : e , width : ! 1 === b ? a + c : 0 , height : ! 1 === b ? d + e : 0 } } return this . boxOffsets } , CLASS _NAME : "OpenLayers.Handler.Box" } ) ; OpenLayers . Control . ZoomBox = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _TOOL , out : ! 1 , keyMask : null , alwaysZoom : ! 1 , draw : function ( ) { this . handler = new OpenLayers . Handler . Box ( this , { done : this . zoomBox } , { keyMask : this . keyMask } ) } , zoomBox : function ( a ) { if ( a instanceof OpenLayers . Bounds ) { var b ; if ( this . out ) { b = Math . abs ( a . right - a . left ) ; var c = Math . abs ( a . top - a . bottom ) ; b = Math . min ( this . map . size . h / c , this . map . size . w / b ) ; var c = this . map . getExtent ( ) , d = this . map . getLonLatFromPixel ( a . getCenterPixel ( ) ) , a = d . lon -
c . getWidth ( ) / 2 * b , e = d . lon + c . getWidth ( ) / 2 * b , f = d . lat - c . getHeight ( ) / 2 * b ; b = d . lat + c . getHeight ( ) / 2 * b ; b = new OpenLayers . Bounds ( a , f , e , b ) } else b = this . map . getLonLatFromPixel ( { x : a . left , y : a . bottom } ) , c = this . map . getLonLatFromPixel ( { x : a . right , y : a . top } ) , b = new OpenLayers . Bounds ( b . lon , b . lat , c . lon , c . lat ) ; c = this . map . getZoom ( ) ; this . map . zoomToExtent ( b ) ; c == this . map . getZoom ( ) && ! 0 == this . alwaysZoom && this . map . zoomTo ( c + ( this . out ? - 1 : 1 ) ) } else this . out ? this . map . setCenter ( this . map . getLonLatFromPixel ( a ) , this . map . getZoom ( ) - 1 ) : this . map . setCenter ( this . map . getLonLatFromPixel ( a ) ,
this . map . getZoom ( ) + 1 ) } , CLASS _NAME : "OpenLayers.Control.ZoomBox" } ) ; OpenLayers . Control . DragPan = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _TOOL , panned : ! 1 , interval : 1 , documentDrag : ! 1 , kinetic : null , enableKinetic : ! 1 , kineticInterval : 10 , draw : function ( ) { if ( this . enableKinetic ) { var a = { interval : this . kineticInterval } ; "object" === typeof this . enableKinetic && ( a = OpenLayers . Util . extend ( a , this . enableKinetic ) ) ; this . kinetic = new OpenLayers . Kinetic ( a ) } this . handler = new OpenLayers . Handler . Drag ( this , { move : this . panMap , done : this . panMapDone , down : this . panMapStart } , { interval : this . interval ,
documentDrag : this . documentDrag } ) } , panMapStart : function ( ) { this . kinetic && this . kinetic . begin ( ) } , panMap : function ( a ) { this . kinetic && this . kinetic . update ( a ) ; this . panned = ! 0 ; this . map . pan ( this . handler . last . x - a . x , this . handler . last . y - a . y , { dragging : ! 0 , animate : ! 1 } ) } , panMapDone : function ( a ) { if ( this . panned ) { var b = null ; this . kinetic && ( b = this . kinetic . end ( a ) ) ; this . map . pan ( this . handler . last . x - a . x , this . handler . last . y - a . y , { dragging : ! ! b , animate : ! 1 } ) ; if ( b ) { var c = this ; this . kinetic . move ( b , function ( a , b , f ) { c . map . pan ( a , b , { dragging : ! f ,
animate : ! 1 } ) } ) } this . panned = ! 1 } } , CLASS _NAME : "OpenLayers.Control.DragPan" } ) ; OpenLayers . Handler . Click = OpenLayers . Class ( OpenLayers . Handler , { delay : 300 , single : ! 0 , "double" : ! 1 , pixelTolerance : 0 , dblclickTolerance : 13 , stopSingle : ! 1 , stopDouble : ! 1 , timerId : null , touch : ! 1 , down : null , last : null , first : null , rightclickTimerId : null , touchstart : function ( a ) { this . touch || ( this . unregisterMouseListeners ( ) , this . touch = ! 0 ) ; this . down = this . getEventInfo ( a ) ; this . last = this . getEventInfo ( a ) ; return ! 0 } , touchmove : function ( a ) { this . last = this . getEventInfo ( a ) ; return ! 0 } , touchend : function ( a ) { this . down && ( a . xy = this . last . xy ,
a . lastTouches = this . last . touches , this . handleSingle ( a ) , this . down = null ) ; return ! 0 } , unregisterMouseListeners : function ( ) { this . map . events . un ( { mousedown : this . mousedown , mouseup : this . mouseup , click : this . click , dblclick : this . dblclick , scope : this } ) } , mousedown : function ( a ) { this . down = this . getEventInfo ( a ) ; this . last = this . getEventInfo ( a ) ; return ! 0 } , mouseup : function ( a ) { var b = ! 0 ; this . checkModifiers ( a ) && ( this . control . handleRightClicks && OpenLayers . Event . isRightClick ( a ) ) && ( b = this . rightclick ( a ) ) ; return b } , rightclick : function ( a ) { if ( this . passesTolerance ( a ) ) { if ( null !=
this . rightclickTimerId ) return this . clearTimer ( ) , this . callback ( "dblrightclick" , [ a ] ) , ! this . stopDouble ; a = this [ "double" ] ? OpenLayers . Util . extend ( { } , a ) : this . callback ( "rightclick" , [ a ] ) ; a = OpenLayers . Function . bind ( this . delayedRightCall , this , a ) ; this . rightclickTimerId = window . setTimeout ( a , this . delay ) } return ! this . stopSingle } , delayedRightCall : function ( a ) { this . rightclickTimerId = null ; a && this . callback ( "rightclick" , [ a ] ) } , click : function ( a ) { this . last || ( this . last = this . getEventInfo ( a ) ) ; this . handleSingle ( a ) ; return ! this . stopSingle } ,
dblclick : function ( a ) { this . handleDouble ( a ) ; return ! this . stopDouble } , handleDouble : function ( a ) { this . passesDblclickTolerance ( a ) && ( this [ "double" ] && this . callback ( "dblclick" , [ a ] ) , this . clearTimer ( ) ) } , handleSingle : function ( a ) { this . passesTolerance ( a ) && ( null != this . timerId ? ( this . last . touches && 1 === this . last . touches . length && ( this [ "double" ] && OpenLayers . Event . stop ( a ) , this . handleDouble ( a ) ) , ( ! this . last . touches || 2 !== this . last . touches . length ) && this . clearTimer ( ) ) : ( this . first = this . getEventInfo ( a ) , this . queuePotentialClick ( this . single ?
OpenLayers . Util . extend ( { } , a ) : null ) ) ) } , queuePotentialClick : function ( a ) { this . timerId = window . setTimeout ( OpenLayers . Function . bind ( this . delayedCall , this , a ) , this . delay ) } , passesTolerance : function ( a ) { var b = ! 0 ; if ( null != this . pixelTolerance && this . down && this . down . xy && ( b = this . pixelTolerance >= this . down . xy . distanceTo ( a . xy ) ) && this . touch && this . down . touches . length === this . last . touches . length ) for ( var a = 0 , c = this . down . touches . length ; a < c ; ++ a ) if ( this . getTouchDistance ( this . down . touches [ a ] , this . last . touches [ a ] ) > this . pixelTolerance ) { b =
! 1 ; break } return b } , getTouchDistance : function ( a , b ) { return Math . sqrt ( Math . pow ( a . clientX - b . clientX , 2 ) + Math . pow ( a . clientY - b . clientY , 2 ) ) } , passesDblclickTolerance : function ( ) { var a = ! 0 ; this . down && this . first && ( a = this . down . xy . distanceTo ( this . first . xy ) <= this . dblclickTolerance ) ; return a } , clearTimer : function ( ) { null != this . timerId && ( window . clearTimeout ( this . timerId ) , this . timerId = null ) ; null != this . rightclickTimerId && ( window . clearTimeout ( this . rightclickTimerId ) , this . rightclickTimerId = null ) } , delayedCall : function ( a ) { this . timerId =
null ; a && this . callback ( "click" , [ a ] ) } , getEventInfo : function ( a ) { var b ; if ( a . touches ) { var c = a . touches . length ; b = Array ( c ) ; for ( var d , e = 0 ; e < c ; e ++ ) d = a . touches [ e ] , b [ e ] = { clientX : d . clientX , clientY : d . clientY } } return { xy : a . xy , touches : b } } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) && ( this . clearTimer ( ) , this . last = this . first = this . down = null , this . touch = ! 1 , a = ! 0 ) ; return a } , CLASS _NAME : "OpenLayers.Handler.Click" } ) ; OpenLayers . Control . Navigation = OpenLayers . Class ( OpenLayers . Control , { dragPan : null , dragPanOptions : null , pinchZoom : null , pinchZoomOptions : null , documentDrag : ! 1 , zoomBox : null , zoomBoxEnabled : ! 0 , zoomWheelEnabled : ! 0 , mouseWheelOptions : null , handleRightClicks : ! 1 , zoomBoxKeyMask : OpenLayers . Handler . MOD _SHIFT , autoActivate : ! 0 , initialize : function ( a ) { this . handlers = { } ; OpenLayers . Control . prototype . initialize . apply ( this , arguments ) } , destroy : function ( ) { this . deactivate ( ) ; this . dragPan && this . dragPan . destroy ( ) ; this . dragPan = null ;
this . zoomBox && this . zoomBox . destroy ( ) ; this . zoomBox = null ; this . pinchZoom && this . pinchZoom . destroy ( ) ; this . pinchZoom = null ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , activate : function ( ) { this . dragPan . activate ( ) ; this . zoomWheelEnabled && this . handlers . wheel . activate ( ) ; this . handlers . click . activate ( ) ; this . zoomBoxEnabled && this . zoomBox . activate ( ) ; this . pinchZoom && this . pinchZoom . activate ( ) ; return OpenLayers . Control . prototype . activate . apply ( this , arguments ) } , deactivate : function ( ) { this . pinchZoom && this . pinchZoom . deactivate ( ) ;
this . zoomBox . deactivate ( ) ; this . dragPan . deactivate ( ) ; this . handlers . click . deactivate ( ) ; this . handlers . wheel . deactivate ( ) ; return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) } , draw : function ( ) { this . handleRightClicks && ( this . map . viewPortDiv . oncontextmenu = OpenLayers . Function . False ) ; this . handlers . click = new OpenLayers . Handler . Click ( this , { click : this . defaultClick , dblclick : this . defaultDblClick , dblrightclick : this . defaultDblRightClick } , { "double" : ! 0 , stopDouble : ! 0 } ) ; this . dragPan = new OpenLayers . Control . DragPan ( OpenLayers . Util . extend ( { map : this . map ,
documentDrag : this . documentDrag } , this . dragPanOptions ) ) ; this . zoomBox = new OpenLayers . Control . ZoomBox ( { map : this . map , keyMask : this . zoomBoxKeyMask } ) ; this . dragPan . draw ( ) ; this . zoomBox . draw ( ) ; this . handlers . wheel = new OpenLayers . Handler . MouseWheel ( this , { up : this . wheelUp , down : this . wheelDown } , this . mouseWheelOptions ) ; OpenLayers . Control . PinchZoom && ( this . pinchZoom = new OpenLayers . Control . PinchZoom ( OpenLayers . Util . extend ( { map : this . map } , this . pinchZoomOptions ) ) ) } , defaultClick : function ( a ) { a . lastTouches && 2 == a . lastTouches . length &&
this . map . zoomOut ( ) } , defaultDblClick : function ( a ) { this . map . setCenter ( this . map . getLonLatFromViewPortPx ( a . xy ) , this . map . zoom + 1 ) } , defaultDblRightClick : function ( a ) { this . map . setCenter ( this . map . getLonLatFromViewPortPx ( a . xy ) , this . map . zoom - 1 ) } , wheelChange : function ( a , b ) { var c = this . map . getZoom ( ) , d = this . map . getZoom ( ) + Math . round ( b ) , d = Math . max ( d , 0 ) , d = Math . min ( d , this . map . getNumZoomLevels ( ) ) ; if ( d !== c ) { var e = this . map . getSize ( ) , c = e . w / 2 - a . xy . x , e = a . xy . y - e . h / 2 , f = this . map . baseLayer . getResolutionForZoom ( d ) , g = this . map . getLonLatFromPixel ( a . xy ) ;
this . map . setCenter ( new OpenLayers . LonLat ( g . lon + c * f , g . lat + e * f ) , d ) } } , wheelUp : function ( a , b ) { this . wheelChange ( a , b || 1 ) } , wheelDown : function ( a , b ) { this . wheelChange ( a , b || - 1 ) } , disableZoomBox : function ( ) { this . zoomBoxEnabled = ! 1 ; this . zoomBox . deactivate ( ) } , enableZoomBox : function ( ) { this . zoomBoxEnabled = ! 0 ; this . active && this . zoomBox . activate ( ) } , disableZoomWheel : function ( ) { this . zoomWheelEnabled = ! 1 ; this . handlers . wheel . deactivate ( ) } , enableZoomWheel : function ( ) { this . zoomWheelEnabled = ! 0 ; this . active && this . handlers . wheel . activate ( ) } ,
CLASS _NAME : "OpenLayers.Control.Navigation" } ) ; OpenLayers . Control . DrawFeature = OpenLayers . Class ( OpenLayers . Control , { layer : null , callbacks : null , multi : ! 1 , featureAdded : function ( ) { } , handlerOptions : null , initialize : function ( a , b , c ) { OpenLayers . Control . prototype . initialize . apply ( this , [ c ] ) ; this . callbacks = OpenLayers . Util . extend ( { done : this . drawFeature , modify : function ( a , b ) { this . layer . events . triggerEvent ( "sketchmodified" , { vertex : a , feature : b } ) } , create : function ( a , b ) { this . layer . events . triggerEvent ( "sketchstarted" , { vertex : a , feature : b } ) } } , this . callbacks ) ; this . layer =
a ; this . handlerOptions = this . handlerOptions || { } ; this . handlerOptions . layerOptions = OpenLayers . Util . applyDefaults ( this . handlerOptions . layerOptions , { renderers : a . renderers , rendererOptions : a . rendererOptions } ) ; "multi" in this . handlerOptions || ( this . handlerOptions . multi = this . multi ) ; if ( a = this . layer . styleMap && this . layer . styleMap . styles . temporary ) this . handlerOptions . layerOptions = OpenLayers . Util . applyDefaults ( this . handlerOptions . layerOptions , { styleMap : new OpenLayers . StyleMap ( { "default" : a } ) } ) ; this . handler = new b ( this ,
this . callbacks , this . handlerOptions ) } , drawFeature : function ( a ) { a = new OpenLayers . Feature . Vector ( a ) ; ! 1 !== this . layer . events . triggerEvent ( "sketchcomplete" , { feature : a } ) && ( a . state = OpenLayers . State . INSERT , this . layer . addFeatures ( [ a ] ) , this . featureAdded ( a ) , this . events . triggerEvent ( "featureadded" , { feature : a } ) ) } , insertXY : function ( a , b ) { this . handler && this . handler . line && this . handler . insertXY ( a , b ) } , insertDeltaXY : function ( a , b ) { this . handler && this . handler . line && this . handler . insertDeltaXY ( a , b ) } , insertDirectionLength : function ( a ,
b ) { this . handler && this . handler . line && this . handler . insertDirectionLength ( a , b ) } , insertDeflectionLength : function ( a , b ) { this . handler && this . handler . line && this . handler . insertDeflectionLength ( a , b ) } , undo : function ( ) { return this . handler . undo && this . handler . undo ( ) } , redo : function ( ) { return this . handler . redo && this . handler . redo ( ) } , finishSketch : function ( ) { this . handler . finishGeometry ( ) } , cancel : function ( ) { this . handler . cancel ( ) } , CLASS _NAME : "OpenLayers.Control.DrawFeature" } ) ; OpenLayers . Handler . Polygon = OpenLayers . Class ( OpenLayers . Handler . Path , { holeModifier : null , drawingHole : ! 1 , polygon : null , createFeature : function ( a ) { a = this . layer . getLonLatFromViewPortPx ( a ) ; a = new OpenLayers . Geometry . Point ( a . lon , a . lat ) ; this . point = new OpenLayers . Feature . Vector ( a ) ; this . line = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . LinearRing ( [ this . point . geometry ] ) ) ; this . polygon = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Polygon ( [ this . line . geometry ] ) ) ; this . callback ( "create" , [ this . point . geometry ,
this . getSketch ( ) ] ) ; this . point . geometry . clearBounds ( ) ; this . layer . addFeatures ( [ this . polygon , this . point ] , { silent : ! 0 } ) } , addPoint : function ( a ) { if ( ! this . drawingHole && this . holeModifier && this . evt && this . evt [ this . holeModifier ] ) for ( var b = this . point . geometry , c = this . control . layer . features , d , e = c . length - 1 ; 0 <= e ; -- e ) if ( d = c [ e ] . geometry , ( d instanceof OpenLayers . Geometry . Polygon || d instanceof OpenLayers . Geometry . MultiPolygon ) && d . intersects ( b ) ) { b = c [ e ] ; this . control . layer . removeFeatures ( [ b ] , { silent : ! 0 } ) ; this . control . layer . events . registerPriority ( "sketchcomplete" ,
this , this . finalizeInteriorRing ) ; this . control . layer . events . registerPriority ( "sketchmodified" , this , this . enforceTopology ) ; b . geometry . addComponent ( this . line . geometry ) ; this . polygon = b ; this . drawingHole = ! 0 ; break } OpenLayers . Handler . Path . prototype . addPoint . apply ( this , arguments ) } , getCurrentPointIndex : function ( ) { return this . line . geometry . components . length - 2 } , enforceTopology : function ( a ) { var a = a . vertex , b = this . line . geometry . components ; this . polygon . geometry . intersects ( a ) || ( b = b [ b . length - 3 ] , a . x = b . x , a . y = b . y ) } , finishGeometry : function ( ) { this . line . geometry . removeComponent ( this . line . geometry . components [ this . line . geometry . components . length -
2 ] ) ; this . removePoint ( ) ; this . finalize ( ) } , finalizeInteriorRing : function ( ) { var a = this . line . geometry , b = 0 !== a . getArea ( ) ; if ( b ) { for ( var c = this . polygon . geometry . components , d = c . length - 2 ; 0 <= d ; -- d ) if ( a . intersects ( c [ d ] ) ) { b = ! 1 ; break } if ( b ) { d = c . length - 2 ; a : for ( ; 0 < d ; -- d ) for ( var e = c [ d ] . components , f = 0 , g = e . length ; f < g ; ++ f ) if ( a . containsPoint ( e [ f ] ) ) { b = ! 1 ; break a } } } b ? this . polygon . state !== OpenLayers . State . INSERT && ( this . polygon . state = OpenLayers . State . UPDATE ) : this . polygon . geometry . removeComponent ( a ) ; this . restoreFeature ( ) ; return ! 1 } ,
cancel : function ( ) { this . drawingHole && ( this . polygon . geometry . removeComponent ( this . line . geometry ) , this . restoreFeature ( ! 0 ) ) ; return OpenLayers . Handler . Path . prototype . cancel . apply ( this , arguments ) } , restoreFeature : function ( a ) { this . control . layer . events . unregister ( "sketchcomplete" , this , this . finalizeInteriorRing ) ; this . control . layer . events . unregister ( "sketchmodified" , this , this . enforceTopology ) ; this . layer . removeFeatures ( [ this . polygon ] , { silent : ! 0 } ) ; this . control . layer . addFeatures ( [ this . polygon ] , { silent : ! 0 } ) ; this . drawingHole =
! 1 ; a || this . control . layer . events . triggerEvent ( "sketchcomplete" , { feature : this . polygon } ) } , destroyFeature : function ( a ) { OpenLayers . Handler . Path . prototype . destroyFeature . call ( this , a ) ; this . polygon = null } , drawFeature : function ( ) { this . layer . drawFeature ( this . polygon , this . style ) ; this . layer . drawFeature ( this . point , this . style ) } , getSketch : function ( ) { return this . polygon } , getGeometry : function ( ) { var a = this . polygon && this . polygon . geometry ; a && this . multi && ( a = new OpenLayers . Geometry . MultiPolygon ( [ a ] ) ) ; return a } , CLASS _NAME : "OpenLayers.Handler.Polygon" } ) ; OpenLayers . Control . EditingToolbar = OpenLayers . Class ( OpenLayers . Control . Panel , { citeCompliant : ! 1 , initialize : function ( a , b ) { OpenLayers . Control . Panel . prototype . initialize . apply ( this , [ b ] ) ; this . addControls ( [ new OpenLayers . Control . Navigation ] ) ; this . addControls ( [ new OpenLayers . Control . DrawFeature ( a , OpenLayers . Handler . Point , { displayClass : "olControlDrawFeaturePoint" , handlerOptions : { citeCompliant : this . citeCompliant } } ) , new OpenLayers . Control . DrawFeature ( a , OpenLayers . Handler . Path , { displayClass : "olControlDrawFeaturePath" ,
handlerOptions : { citeCompliant : this . citeCompliant } } ) , new OpenLayers . Control . DrawFeature ( a , OpenLayers . Handler . Polygon , { displayClass : "olControlDrawFeaturePolygon" , handlerOptions : { citeCompliant : this . citeCompliant } } ) ] ) } , draw : function ( ) { var a = OpenLayers . Control . Panel . prototype . draw . apply ( this , arguments ) ; null === this . defaultControl && ( this . defaultControl = this . controls [ 0 ] ) ; return a } , CLASS _NAME : "OpenLayers.Control.EditingToolbar" } ) ; OpenLayers . Strategy . BBOX = OpenLayers . Class ( OpenLayers . Strategy , { bounds : null , resolution : null , ratio : 2 , resFactor : null , response : null , activate : function ( ) { var a = OpenLayers . Strategy . prototype . activate . call ( this ) ; a && ( this . layer . events . on ( { moveend : this . update , refresh : this . update , visibilitychanged : this . update , scope : this } ) , this . update ( ) ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Strategy . prototype . deactivate . call ( this ) ; a && this . layer . events . un ( { moveend : this . update , refresh : this . update , visibilitychanged : this . update ,
scope : this } ) ; return a } , update : function ( a ) { var b = this . getMapBounds ( ) ; if ( null !== b && ( a && a . force || this . layer . visibility && this . layer . calculateInRange ( ) && this . invalidBounds ( b ) ) ) this . calculateBounds ( b ) , this . resolution = this . layer . map . getResolution ( ) , this . triggerRead ( a ) } , getMapBounds : function ( ) { if ( null === this . layer . map ) return null ; var a = this . layer . map . getExtent ( ) ; a && ! this . layer . projection . equals ( this . layer . map . getProjectionObject ( ) ) && ( a = a . clone ( ) . transform ( this . layer . map . getProjectionObject ( ) , this . layer . projection ) ) ;
return a } , invalidBounds : function ( a ) { a || ( a = this . getMapBounds ( ) ) ; a = ! this . bounds || ! this . bounds . containsBounds ( a ) ; ! a && this . resFactor && ( a = this . resolution / this . layer . map . getResolution ( ) , a = a >= this . resFactor || a <= 1 / this . resFactor ) ; return a } , calculateBounds : function ( a ) { a || ( a = this . getMapBounds ( ) ) ; var b = a . getCenterLonLat ( ) , c = a . getWidth ( ) * this . ratio , a = a . getHeight ( ) * this . ratio ; this . bounds = new OpenLayers . Bounds ( b . lon - c / 2 , b . lat - a / 2 , b . lon + c / 2 , b . lat + a / 2 ) } , triggerRead : function ( a ) { this . response && ! ( a && ! 0 === a . noAbort ) &&
( this . layer . protocol . abort ( this . response ) , this . layer . events . triggerEvent ( "loadend" ) ) ; this . layer . events . triggerEvent ( "loadstart" ) ; this . response = this . layer . protocol . read ( OpenLayers . Util . applyDefaults ( { filter : this . createFilter ( ) , callback : this . merge , scope : this } , a ) ) } , createFilter : function ( ) { var a = new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . BBOX , value : this . bounds , projection : this . layer . projection } ) ; this . layer . filter && ( a = new OpenLayers . Filter . Logical ( { type : OpenLayers . Filter . Logical . AND ,
filters : [ this . layer . filter , a ] } ) ) ; return a } , merge : function ( a ) { this . layer . destroyFeatures ( ) ; if ( ( a = a . features ) && 0 < a . length ) { var b = this . layer . projection , c = this . layer . map . getProjectionObject ( ) ; if ( ! c . equals ( b ) ) for ( var d , e = 0 , f = a . length ; e < f ; ++ e ) ( d = a [ e ] . geometry ) && d . transform ( b , c ) ; this . layer . addFeatures ( a ) } this . response = null ; this . layer . events . triggerEvent ( "loadend" ) } , CLASS _NAME : "OpenLayers.Strategy.BBOX" } ) ; OpenLayers . Layer . WorldWind = OpenLayers . Class ( OpenLayers . Layer . Grid , { DEFAULT _PARAMS : { } , isBaseLayer : ! 0 , lzd : null , zoomLevels : null , initialize : function ( a , b , c , d , e , f ) { this . lzd = c ; this . zoomLevels = d ; c = [ ] ; c . push ( a , b , e , f ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , c ) ; this . params = OpenLayers . Util . applyDefaults ( this . params , this . DEFAULT _PARAMS ) } , getZoom : function ( ) { var a = this . map . getZoom ( ) ; this . map . getMaxExtent ( ) ; return a -= Math . log ( this . maxResolution / ( this . lzd / 512 ) ) / Math . log ( 2 ) } , getURL : function ( a ) { var a =
this . adjustBounds ( a ) , b = this . getZoom ( ) , c = this . map . getMaxExtent ( ) , d = this . lzd / Math . pow ( 2 , this . getZoom ( ) ) , e = Math . floor ( ( a . left - c . left ) / d ) , a = Math . floor ( ( a . bottom - c . bottom ) / d ) ; return this . map . getResolution ( ) <= this . lzd / 512 && this . getZoom ( ) <= this . zoomLevels ? this . getFullRequestString ( { L : b , X : e , Y : a } ) : OpenLayers . Util . getImageLocation ( "blank.gif" ) } , CLASS _NAME : "OpenLayers.Layer.WorldWind" } ) ; OpenLayers . Protocol . CSW = function ( a ) { var a = OpenLayers . Util . applyDefaults ( a , OpenLayers . Protocol . CSW . DEFAULTS ) , b = OpenLayers . Protocol . CSW [ "v" + a . version . replace ( /\./g , "_" ) ] ; if ( ! b ) throw "Unsupported CSW version: " + a . version ; return new b ( a ) } ; OpenLayers . Protocol . CSW . DEFAULTS = { version : "2.0.2" } ; OpenLayers . Format . WMTSCapabilities = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.0.0" , yx : { "urn:ogc:def:crs:EPSG::4326" : ! 0 } , createLayer : function ( a , b ) { var c , d = { layer : ! 0 , matrixSet : ! 0 } , e ; for ( e in d ) if ( ! ( e in b ) ) throw Error ( "Missing property '" + e + "' in layer configuration." ) ; d = a . contents ; e = d . tileMatrixSets [ b . matrixSet ] ; for ( var f , g = 0 , h = d . layers . length ; g < h ; ++ g ) if ( d . layers [ g ] . identifier === b . layer ) { f = d . layers [ g ] ; break } if ( f && e ) { for ( var i , g = 0 , h = f . styles . length ; g < h && ! ( i = f . styles [ g ] , i . isDefault ) ; ++ g ) ;
c = new OpenLayers . Layer . WMTS ( OpenLayers . Util . applyDefaults ( b , { url : "REST" === b . requestEncoding && f . resourceUrl ? f . resourceUrl . tile . template : a . operationsMetadata . GetTile . dcp . http . get [ 0 ] . url , name : f . title , style : i . identifier , matrixIds : e . matrixIds , tileFullExtent : e . bounds } ) ) } return c } , CLASS _NAME : "OpenLayers.Format.WMTSCapabilities" } ) ; OpenLayers . Layer . Google . v3 = { DEFAULTS : { sphericalMercator : ! 0 , projection : "EPSG:900913" } , animationEnabled : ! 0 , loadMapObject : function ( ) { this . type || ( this . type = google . maps . MapTypeId . ROADMAP ) ; var a , b = OpenLayers . Layer . Google . cache [ this . map . id ] ; b ? ( a = b . mapObject , ++ b . count ) : ( b = this . map . viewPortDiv , a = document . createElement ( "div" ) , a . id = this . map . id + "_GMapContainer" , a . style . position = "absolute" , a . style . width = "100%" , a . style . height = "100%" , b . appendChild ( a ) , b = this . map . getCenter ( ) , a = new google . maps . Map ( a , { center : b ? new google . maps . LatLng ( b . lat ,
b . lon ) : new google . maps . LatLng ( 0 , 0 ) , zoom : this . map . getZoom ( ) || 0 , mapTypeId : this . type , disableDefaultUI : ! 0 , keyboardShortcuts : ! 1 , draggable : ! 1 , disableDoubleClickZoom : ! 0 , scrollwheel : ! 1 , streetViewControl : ! 1 } ) , b = { mapObject : a , count : 1 } , OpenLayers . Layer . Google . cache [ this . map . id ] = b , this . repositionListener = google . maps . event . addListenerOnce ( a , "center_changed" , OpenLayers . Function . bind ( this . repositionMapElements , this ) ) ) ; this . mapObject = a ; this . setGMapVisibility ( this . visibility ) } , repositionMapElements : function ( ) { google . maps . event . trigger ( this . mapObject ,
"resize" ) ; var a = this . mapObject . getDiv ( ) . firstChild ; if ( ! a || 3 > a . childNodes . length ) return this . repositionTimer = window . setTimeout ( OpenLayers . Function . bind ( this . repositionMapElements , this ) , 250 ) , ! 1 ; for ( var b = OpenLayers . Layer . Google . cache [ this . map . id ] , c = this . map . viewPortDiv , d = a . children . length - 1 ; 0 <= d ; -- d ) { if ( 1000001 == a . children [ d ] . style . zIndex ) { var e = a . children [ d ] ; c . appendChild ( e ) ; e . style . zIndex = "1100" ; e . style . bottom = "" ; e . className = "olLayerGoogleCopyright olLayerGoogleV3" ; e . style . display = "" ; b . termsOfUse =
e } 1E6 == a . children [ d ] . style . zIndex && ( e = a . children [ d ] , c . appendChild ( e ) , e . style . zIndex = "1100" , e . style . bottom = "" , e . className = "olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint" , e . style . display = "" , b . poweredBy = e ) ; 10000002 == a . children [ d ] . style . zIndex && c . appendChild ( a . children [ d ] ) } this . setGMapVisibility ( this . visibility ) } , onMapResize : function ( ) { if ( this . visibility ) google . maps . event . trigger ( this . mapObject , "resize" ) ; else { var a = OpenLayers . Layer . Google . cache [ this . map . id ] ; if ( ! a . resized ) { var b = this ; google . maps . event . addListenerOnce ( this . mapObject ,
"tilesloaded" , function ( ) { google . maps . event . trigger ( b . mapObject , "resize" ) ; b . moveTo ( b . map . getCenter ( ) , b . map . getZoom ( ) ) ; delete a . resized } ) } a . resized = ! 0 } } , setGMapVisibility : function ( a ) { var b = OpenLayers . Layer . Google . cache [ this . map . id ] ; if ( b ) { for ( var c = this . type , d = this . map . layers , e , f = d . length - 1 ; 0 <= f ; -- f ) if ( e = d [ f ] , e instanceof OpenLayers . Layer . Google && ! 0 === e . visibility && ! 0 === e . inRange ) { c = e . type ; a = ! 0 ; break } d = this . mapObject . getDiv ( ) ; ! 0 === a ? ( this . mapObject . setMapTypeId ( c ) , d . style . left = "" , b . termsOfUse && b . termsOfUse . style &&
( b . termsOfUse . style . left = "" , b . termsOfUse . style . display = "" , b . poweredBy . style . display = "" ) , b . displayed = this . id ) : ( delete b . displayed , d . style . left = "-9999px" , b . termsOfUse && b . termsOfUse . style && ( b . termsOfUse . style . display = "none" , b . termsOfUse . style . left = "-9999px" , b . poweredBy . style . display = "none" ) ) } } , getMapContainer : function ( ) { return this . mapObject . getDiv ( ) } , getMapObjectBoundsFromOLBounds : function ( a ) { var b = null ; null != a && ( b = this . sphericalMercator ? this . inverseMercator ( a . bottom , a . left ) : new OpenLayers . LonLat ( a . bottom ,
a . left ) , a = this . sphericalMercator ? this . inverseMercator ( a . top , a . right ) : new OpenLayers . LonLat ( a . top , a . right ) , b = new google . maps . LatLngBounds ( new google . maps . LatLng ( b . lat , b . lon ) , new google . maps . LatLng ( a . lat , a . lon ) ) ) ; return b } , getMapObjectLonLatFromMapObjectPixel : function ( a ) { var b = this . map . getSize ( ) , c = this . getLongitudeFromMapObjectLonLat ( this . mapObject . center ) , d = this . getLatitudeFromMapObjectLonLat ( this . mapObject . center ) , e = this . map . getResolution ( ) , a = new OpenLayers . LonLat ( c + ( a . x - b . w / 2 ) * e , d - ( a . y - b . h / 2 ) * e ) ;
this . wrapDateLine && ( a = a . wrapDateLine ( this . maxExtent ) ) ; return this . getMapObjectLonLatFromLonLat ( a . lon , a . lat ) } , getMapObjectPixelFromMapObjectLonLat : function ( a ) { var b = this . getLongitudeFromMapObjectLonLat ( a ) , a = this . getLatitudeFromMapObjectLonLat ( a ) , c = this . map . getResolution ( ) , d = this . map . getExtent ( ) ; return this . getMapObjectPixelFromXY ( 1 / c * ( b - d . left ) , 1 / c * ( d . top - a ) ) } , setMapObjectCenter : function ( a , b ) { if ( ! 1 === this . animationEnabled && b != this . mapObject . zoom ) { var c = this . getMapContainer ( ) ; google . maps . event . addListenerOnce ( this . mapObject ,
"idle" , function ( ) { c . style . visibility = "" } ) ; c . style . visibility = "hidden" } this . mapObject . setOptions ( { center : a , zoom : b } ) } , getMapObjectZoomFromMapObjectBounds : function ( a ) { return this . mapObject . getBoundsZoomLevel ( a ) } , getMapObjectLonLatFromLonLat : function ( a , b ) { var c ; this . sphericalMercator ? ( c = this . inverseMercator ( a , b ) , c = new google . maps . LatLng ( c . lat , c . lon ) ) : c = new google . maps . LatLng ( b , a ) ; return c } , getMapObjectPixelFromXY : function ( a , b ) { return new google . maps . Point ( a , b ) } , destroy : function ( ) { this . repositionListener &&
google . maps . event . removeListener ( this . repositionListener ) ; this . repositionTimer && window . clearTimeout ( this . repositionTimer ) ; OpenLayers . Layer . Google . prototype . destroy . apply ( this , arguments ) } } ; OpenLayers . Format . WPSDescribeProcess = OpenLayers . Class ( OpenLayers . Format . XML , { VERSION : "1.0.0" , namespaces : { wps : "http://www.opengis.net/wps/1.0.0" , ows : "http://www.opengis.net/ows/1.1" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , schemaLocation : "http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd" , defaultPrefix : "wps" , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this ,
[ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; return b } , readers : { wps : { ProcessDescriptions : function ( a , b ) { b . processDescriptions = { } ; this . readChildNodes ( a , b . processDescriptions ) } , ProcessDescription : function ( a , b ) { var c = { processVersion : this . getAttributeNS ( a , this . namespaces . wps , "processVersion" ) , statusSupported : "true" === a . getAttribute ( "statusSupported" ) , storeSupported : "true" === a . getAttribute ( "storeSupported" ) } ; this . readChildNodes ( a , c ) ; b [ c . identifier ] = c } , DataInputs : function ( a ,
b ) { b . dataInputs = [ ] ; this . readChildNodes ( a , b . dataInputs ) } , ProcessOutputs : function ( a , b ) { b . processOutputs = [ ] ; this . readChildNodes ( a , b . processOutputs ) } , Output : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . push ( c ) } , ComplexOutput : function ( a , b ) { b . complexOutput = { } ; this . readChildNodes ( a , b . complexOutput ) } , Input : function ( a , b ) { var c = { maxOccurs : parseInt ( a . getAttribute ( "maxOccurs" ) ) , minOccurs : parseInt ( a . getAttribute ( "minOccurs" ) ) } ; this . readChildNodes ( a , c ) ; b . push ( c ) } , BoundingBoxData : function ( a , b ) { b . boundingBoxData =
{ } ; this . readChildNodes ( a , b . boundingBoxData ) } , CRS : function ( a , b ) { b . CRSs || ( b . CRSs = { } ) ; b . CRSs [ this . getChildValue ( a ) ] = ! 0 } , LiteralData : function ( a , b ) { b . literalData = { } ; this . readChildNodes ( a , b . literalData ) } , ComplexData : function ( a , b ) { b . complexData = { } ; this . readChildNodes ( a , b . complexData ) } , Default : function ( a , b ) { b [ "default" ] = { } ; this . readChildNodes ( a , b [ "default" ] ) } , Supported : function ( a , b ) { b . supported = { } ; this . readChildNodes ( a , b . supported ) } , Format : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . formats || ( b . formats =
{ } ) ; b . formats [ c . mimeType ] = ! 0 } , MimeType : function ( a , b ) { b . mimeType = this . getChildValue ( a ) } } , ows : OpenLayers . Format . OWSCommon . v1 _1 _0 . prototype . readers . ows } , CLASS _NAME : "OpenLayers.Format.WPSDescribeProcess" } ) ; OpenLayers . Format . CSWGetRecords . v2 _0 _2 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { csw : "http://www.opengis.net/cat/csw/2.0.2" , dc : "http://purl.org/dc/elements/1.1/" , dct : "http://purl.org/dc/terms/" , gmd : "http://www.isotc211.org/2005/gmd" , geonet : "http://www.fao.org/geonetwork" , ogc : "http://www.opengis.net/ogc" , ows : "http://www.opengis.net/ows" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , defaultPrefix : "csw" , version : "2.0.2" , schemaLocation : "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd" ,
requestId : null , resultType : null , outputFormat : null , outputSchema : null , startPosition : null , maxRecords : null , DistributedSearch : null , ResponseHandler : null , Query : null , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; return b } ,
readers : { csw : { GetRecordsResponse : function ( a , b ) { b . records = [ ] ; this . readChildNodes ( a , b ) ; var c = this . getAttributeNS ( a , "" , "version" ) ; "" != c && ( b . version = c ) } , RequestId : function ( a , b ) { b . RequestId = this . getChildValue ( a ) } , SearchStatus : function ( a , b ) { b . SearchStatus = { } ; var c = this . getAttributeNS ( a , "" , "timestamp" ) ; "" != c && ( b . SearchStatus . timestamp = c ) } , SearchResults : function ( a , b ) { this . readChildNodes ( a , b ) ; for ( var c = a . attributes , d = { } , e = 0 , f = c . length ; e < f ; ++ e ) d [ c [ e ] . name ] = "numberOfRecordsMatched" == c [ e ] . name || "numberOfRecordsReturned" ==
c [ e ] . name || "nextRecord" == c [ e ] . name ? parseInt ( c [ e ] . nodeValue ) : c [ e ] . nodeValue ; b . SearchResults = d } , SummaryRecord : function ( a , b ) { var c = { type : "SummaryRecord" } ; this . readChildNodes ( a , c ) ; b . records . push ( c ) } , BriefRecord : function ( a , b ) { var c = { type : "BriefRecord" } ; this . readChildNodes ( a , c ) ; b . records . push ( c ) } , DCMIRecord : function ( a , b ) { var c = { type : "DCMIRecord" } ; this . readChildNodes ( a , c ) ; b . records . push ( c ) } , Record : function ( a , b ) { var c = { type : "Record" } ; this . readChildNodes ( a , c ) ; b . records . push ( c ) } , "*" : function ( a , b ) { var c = a . localName ||
a . nodeName . split ( ":" ) . pop ( ) ; b [ c ] = this . getChildValue ( a ) } } , geonet : { info : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . gninfo = c } } , dc : { "*" : function ( a , b ) { var c = a . localName || a . nodeName . split ( ":" ) . pop ( ) ; OpenLayers . Util . isArray ( b [ c ] ) || ( b [ c ] = [ ] ) ; for ( var d = { } , e = a . attributes , f = 0 , g = e . length ; f < g ; ++ f ) d [ e [ f ] . name ] = e [ f ] . nodeValue ; d . value = this . getChildValue ( a ) ; "" != d . value && b [ c ] . push ( d ) } } , dct : { "*" : function ( a , b ) { var c = a . localName || a . nodeName . split ( ":" ) . pop ( ) ; OpenLayers . Util . isArray ( b [ c ] ) || ( b [ c ] = [ ] ) ; b [ c ] . push ( this . getChildValue ( a ) ) } } ,
ows : OpenLayers . Util . applyDefaults ( { BoundingBox : function ( a , b ) { b . bounds && ( b . BoundingBox = [ { crs : b . projection , value : [ b . bounds . left , b . bounds . bottom , b . bounds . right , b . bounds . top ] } ] , delete b . projection , delete b . bounds ) ; OpenLayers . Format . OWSCommon . v1 _0 _0 . prototype . readers . ows . BoundingBox . apply ( this , arguments ) } } , OpenLayers . Format . OWSCommon . v1 _0 _0 . prototype . readers . ows ) } , write : function ( a ) { a = this . writeNode ( "csw:GetRecords" , a ) ; a . setAttribute ( "xmlns:gmd" , this . namespaces . gmd ) ; return OpenLayers . Format . XML . prototype . write . apply ( this ,
[ a ] ) } , writers : { csw : { GetRecords : function ( a ) { a || ( a = { } ) ; var b = this . createElementNSPlus ( "csw:GetRecords" , { attributes : { service : "CSW" , version : this . version , requestId : a . requestId || this . requestId , resultType : a . resultType || this . resultType , outputFormat : a . outputFormat || this . outputFormat , outputSchema : a . outputSchema || this . outputSchema , startPosition : a . startPosition || this . startPosition , maxRecords : a . maxRecords || this . maxRecords } } ) ; if ( a . DistributedSearch || this . DistributedSearch ) this . writeNode ( "csw:DistributedSearch" ,
a . DistributedSearch || this . DistributedSearch , b ) ; var c = a . ResponseHandler || this . ResponseHandler ; if ( OpenLayers . Util . isArray ( c ) && 0 < c . length ) for ( var d = 0 , e = c . length ; d < e ; d ++ ) this . writeNode ( "csw:ResponseHandler" , c [ d ] , b ) ; this . writeNode ( "Query" , a . Query || this . Query , b ) ; return b } , DistributedSearch : function ( a ) { return this . createElementNSPlus ( "csw:DistributedSearch" , { attributes : { hopCount : a . hopCount } } ) } , ResponseHandler : function ( a ) { return this . createElementNSPlus ( "csw:ResponseHandler" , { value : a . value } ) } , Query : function ( a ) { a ||
( a = { } ) ; var b = this . createElementNSPlus ( "csw:Query" , { attributes : { typeNames : a . typeNames || "csw:Record" } } ) , c = a . ElementName ; if ( OpenLayers . Util . isArray ( c ) && 0 < c . length ) for ( var d = 0 , e = c . length ; d < e ; d ++ ) this . writeNode ( "csw:ElementName" , c [ d ] , b ) ; else this . writeNode ( "csw:ElementSetName" , a . ElementSetName || { value : "summary" } , b ) ; a . Constraint && this . writeNode ( "csw:Constraint" , a . Constraint , b ) ; a . SortBy && this . writeNode ( "ogc:SortBy" , a . SortBy , b ) ; return b } , ElementName : function ( a ) { return this . createElementNSPlus ( "csw:ElementName" ,
{ value : a . value } ) } , ElementSetName : function ( a ) { return this . createElementNSPlus ( "csw:ElementSetName" , { attributes : { typeNames : a . typeNames } , value : a . value } ) } , Constraint : function ( a ) { var b = this . createElementNSPlus ( "csw:Constraint" , { attributes : { version : a . version } } ) ; if ( a . Filter ) { var c = new OpenLayers . Format . Filter ( { version : a . version } ) ; b . appendChild ( c . write ( a . Filter ) ) } else a . CqlText && ( a = this . createElementNSPlus ( "CqlText" , { value : a . CqlText . value } ) , b . appendChild ( a ) ) ; return b } } , ogc : OpenLayers . Format . Filter . v1 _1 _0 . prototype . writers . ogc } ,
CLASS _NAME : "OpenLayers.Format.CSWGetRecords.v2_0_2" } ) ; OpenLayers . Marker . Box = OpenLayers . Class ( OpenLayers . Marker , { bounds : null , div : null , initialize : function ( a , b , c ) { this . bounds = a ; this . div = OpenLayers . Util . createDiv ( ) ; this . div . style . overflow = "hidden" ; this . events = new OpenLayers . Events ( this , this . div ) ; this . setBorder ( b , c ) } , destroy : function ( ) { this . div = this . bounds = null ; OpenLayers . Marker . prototype . destroy . apply ( this , arguments ) } , setBorder : function ( a , b ) { a || ( a = "red" ) ; b || ( b = 2 ) ; this . div . style . border = b + "px solid " + a } , draw : function ( a , b ) { OpenLayers . Util . modifyDOMElement ( this . div ,
null , a , b ) ; return this . div } , onScreen : function ( ) { var a = ! 1 ; this . map && ( a = this . map . getExtent ( ) . containsBounds ( this . bounds , ! 0 , ! 0 ) ) ; return a } , display : function ( a ) { this . div . style . display = a ? "" : "none" } , CLASS _NAME : "OpenLayers.Marker.Box" } ) ; OpenLayers . Format . Text = OpenLayers . Class ( OpenLayers . Format , { defaultStyle : null , extractStyles : ! 0 , initialize : function ( a ) { a = a || { } ; ! 1 !== a . extractStyles && ( a . defaultStyle = { externalGraphic : OpenLayers . Util . getImageLocation ( "marker.png" ) , graphicWidth : 21 , graphicHeight : 25 , graphicXOffset : - 10.5 , graphicYOffset : - 12.5 } ) ; OpenLayers . Format . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { for ( var a = a . split ( "\n" ) , b , c = [ ] , d = 0 ; d < a . length - 1 ; d ++ ) { var e = a [ d ] . replace ( /^\s*/ , "" ) . replace ( /\s*$/ , "" ) ; if ( "#" != e . charAt ( 0 ) ) if ( b ) { for ( var e =
e . split ( "\t" ) , f = new OpenLayers . Geometry . Point ( 0 , 0 ) , g = { } , h = this . defaultStyle ? OpenLayers . Util . applyDefaults ( { } , this . defaultStyle ) : null , i = ! 1 , j = 0 ; j < e . length ; j ++ ) if ( e [ j ] ) if ( "point" == b [ j ] ) i = e [ j ] . split ( "," ) , f . y = parseFloat ( i [ 0 ] ) , f . x = parseFloat ( i [ 1 ] ) , i = ! 0 ; else if ( "lat" == b [ j ] ) f . y = parseFloat ( e [ j ] ) , i = ! 0 ; else if ( "lon" == b [ j ] ) f . x = parseFloat ( e [ j ] ) , i = ! 0 ; else if ( "title" == b [ j ] ) g . title = e [ j ] ; else if ( "image" == b [ j ] || "icon" == b [ j ] && h ) h . externalGraphic = e [ j ] ; else if ( "iconSize" == b [ j ] && h ) { var k = e [ j ] . split ( "," ) ; h . graphicWidth =
parseFloat ( k [ 0 ] ) ; h . graphicHeight = parseFloat ( k [ 1 ] ) } else "iconOffset" == b [ j ] && h ? ( k = e [ j ] . split ( "," ) , h . graphicXOffset = parseFloat ( k [ 0 ] ) , h . graphicYOffset = parseFloat ( k [ 1 ] ) ) : "description" == b [ j ] ? g . description = e [ j ] : "overflow" == b [ j ] ? g . overflow = e [ j ] : g [ b [ j ] ] = e [ j ] ; i && ( this . internalProjection && this . externalProjection && f . transform ( this . externalProjection , this . internalProjection ) , e = new OpenLayers . Feature . Vector ( f , g , h ) , c . push ( e ) ) } else b = e . split ( "\t" ) } return c } , CLASS _NAME : "OpenLayers.Format.Text" } ) ; OpenLayers . Layer . Text = OpenLayers . Class ( OpenLayers . Layer . Markers , { location : null , features : null , formatOptions : null , selectedFeature : null , initialize : function ( a , b ) { OpenLayers . Layer . Markers . prototype . initialize . apply ( this , arguments ) ; this . features = [ ] } , destroy : function ( ) { OpenLayers . Layer . Markers . prototype . destroy . apply ( this , arguments ) ; this . clearFeatures ( ) ; this . features = null } , loadText : function ( ) { ! this . loaded && null != this . location && ( this . events . triggerEvent ( "loadstart" ) , OpenLayers . Request . GET ( { url : this . location ,
success : this . parseData , failure : function ( ) { this . events . triggerEvent ( "loadend" ) } , scope : this } ) , this . loaded = ! 0 ) } , moveTo : function ( a , b , c ) { OpenLayers . Layer . Markers . prototype . moveTo . apply ( this , arguments ) ; this . visibility && ! this . loaded && this . loadText ( ) } , parseData : function ( a ) { var a = a . responseText , b = { } ; OpenLayers . Util . extend ( b , this . formatOptions ) ; this . map && ! this . projection . equals ( this . map . getProjectionObject ( ) ) && ( b . externalProjection = this . projection , b . internalProjection = this . map . getProjectionObject ( ) ) ; for ( var a =
( new OpenLayers . Format . Text ( b ) ) . read ( a ) , b = 0 , c = a . length ; b < c ; b ++ ) { var d = { } , e = a [ b ] , f , g , h ; f = new OpenLayers . LonLat ( e . geometry . x , e . geometry . y ) ; e . style . graphicWidth && e . style . graphicHeight && ( g = new OpenLayers . Size ( e . style . graphicWidth , e . style . graphicHeight ) ) ; void 0 !== e . style . graphicXOffset && void 0 !== e . style . graphicYOffset && ( h = new OpenLayers . Pixel ( e . style . graphicXOffset , e . style . graphicYOffset ) ) ; null != e . style . externalGraphic ? d . icon = new OpenLayers . Icon ( e . style . externalGraphic , g , h ) : ( d . icon = OpenLayers . Marker . defaultIcon ( ) ,
null != g && d . icon . setSize ( g ) ) ; null != e . attributes . title && null != e . attributes . description && ( d . popupContentHTML = "<h2>" + e . attributes . title + "</h2><p>" + e . attributes . description + "</p>" ) ; d . overflow = e . attributes . overflow || "auto" ; d = new OpenLayers . Feature ( this , f , d ) ; this . features . push ( d ) ; f = d . createMarker ( ) ; null != e . attributes . title && null != e . attributes . description && f . events . register ( "click" , d , this . markerClick ) ; this . addMarker ( f ) } this . events . triggerEvent ( "loadend" ) } , markerClick : function ( a ) { var b = this == this . layer . selectedFeature ;
this . layer . selectedFeature = ! b ? this : null ; for ( var c = 0 , d = this . layer . map . popups . length ; c < d ; c ++ ) this . layer . map . removePopup ( this . layer . map . popups [ c ] ) ; b || this . layer . map . addPopup ( this . createPopup ( ) ) ; OpenLayers . Event . stop ( a ) } , clearFeatures : function ( ) { if ( null != this . features ) for ( ; 0 < this . features . length ; ) { var a = this . features [ 0 ] ; OpenLayers . Util . removeItem ( this . features , a ) ; a . destroy ( ) } } , CLASS _NAME : "OpenLayers.Layer.Text" } ) ; OpenLayers . Handler . RegularPolygon = OpenLayers . Class ( OpenLayers . Handler . Drag , { sides : 4 , radius : null , snapAngle : null , snapToggle : "shiftKey" , layerOptions : null , persist : ! 1 , irregular : ! 1 , citeCompliant : ! 1 , angle : null , fixedRadius : ! 1 , feature : null , layer : null , origin : null , initialize : function ( a , b , c ) { if ( ! c || ! c . layerOptions || ! c . layerOptions . styleMap ) this . style = OpenLayers . Util . extend ( OpenLayers . Feature . Vector . style [ "default" ] , { } ) ; OpenLayers . Handler . Drag . prototype . initialize . apply ( this , [ a , b , c ] ) ; this . options = c ? c : { } } , setOptions : function ( a ) { OpenLayers . Util . extend ( this . options ,
a ) ; OpenLayers . Util . extend ( this , a ) } , activate : function ( ) { var a = ! 1 ; OpenLayers . Handler . Drag . prototype . activate . apply ( this , arguments ) && ( a = OpenLayers . Util . extend ( { displayInLayerSwitcher : ! 1 , calculateInRange : OpenLayers . Function . True , wrapDateLine : this . citeCompliant } , this . layerOptions ) , this . layer = new OpenLayers . Layer . Vector ( this . CLASS _NAME , a ) , this . map . addLayer ( this . layer ) , a = ! 0 ) ; return a } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Handler . Drag . prototype . deactivate . apply ( this , arguments ) && ( this . dragging && this . cancel ( ) ,
null != this . layer . map && ( this . layer . destroy ( ! 1 ) , this . feature && this . feature . destroy ( ) ) , this . feature = this . layer = null , a = ! 0 ) ; return a } , down : function ( a ) { this . fixedRadius = ! ! this . radius ; a = this . layer . getLonLatFromViewPortPx ( a . xy ) ; this . origin = new OpenLayers . Geometry . Point ( a . lon , a . lat ) ; if ( ! this . fixedRadius || this . irregular ) this . radius = this . map . getResolution ( ) ; this . persist && this . clear ( ) ; this . feature = new OpenLayers . Feature . Vector ; this . createGeometry ( ) ; this . callback ( "create" , [ this . origin , this . feature ] ) ; this . layer . addFeatures ( [ this . feature ] ,
{ silent : ! 0 } ) ; this . layer . drawFeature ( this . feature , this . style ) } , move : function ( a ) { var b = this . layer . getLonLatFromViewPortPx ( a . xy ) , b = new OpenLayers . Geometry . Point ( b . lon , b . lat ) ; this . irregular ? ( a = Math . sqrt ( 2 ) * Math . abs ( b . y - this . origin . y ) / 2 , this . radius = Math . max ( this . map . getResolution ( ) / 2 , a ) ) : this . fixedRadius ? this . origin = b : ( this . calculateAngle ( b , a ) , this . radius = Math . max ( this . map . getResolution ( ) / 2 , b . distanceTo ( this . origin ) ) ) ; this . modifyGeometry ( ) ; this . irregular && ( a = b . x - this . origin . x , b = b . y - this . origin . y , this . feature . geometry . resize ( 1 ,
this . origin , 0 == b ? a / ( this . radius * Math . sqrt ( 2 ) ) : a / b ) , this . feature . geometry . move ( a / 2 , b / 2 ) ) ; this . layer . drawFeature ( this . feature , this . style ) } , up : function ( a ) { this . finalize ( ) ; this . start == this . last && this . callback ( "done" , [ a . xy ] ) } , out : function ( ) { this . finalize ( ) } , createGeometry : function ( ) { this . angle = Math . PI * ( 1 / this . sides - 0.5 ) ; this . snapAngle && ( this . angle += this . snapAngle * ( Math . PI / 180 ) ) ; this . feature . geometry = OpenLayers . Geometry . Polygon . createRegularPolygon ( this . origin , this . radius , this . sides , this . snapAngle ) } , modifyGeometry : function ( ) { var a ,
b , c = this . feature . geometry . components [ 0 ] ; c . components . length != this . sides + 1 && ( this . createGeometry ( ) , c = this . feature . geometry . components [ 0 ] ) ; for ( var d = 0 ; d < this . sides ; ++ d ) b = c . components [ d ] , a = this . angle + 2 * d * Math . PI / this . sides , b . x = this . origin . x + this . radius * Math . cos ( a ) , b . y = this . origin . y + this . radius * Math . sin ( a ) , b . clearBounds ( ) } , calculateAngle : function ( a , b ) { var c = Math . atan2 ( a . y - this . origin . y , a . x - this . origin . x ) ; if ( this . snapAngle && this . snapToggle && ! b [ this . snapToggle ] ) { var d = Math . PI / 180 * this . snapAngle ; this . angle =
Math . round ( c / d ) * d } else this . angle = c } , cancel : function ( ) { this . callback ( "cancel" , null ) ; this . finalize ( ) } , finalize : function ( ) { this . origin = null ; this . radius = this . options . radius } , clear : function ( ) { this . layer && ( this . layer . renderer . clear ( ) , this . layer . destroyFeatures ( ) ) } , callback : function ( a ) { this . callbacks [ a ] && this . callbacks [ a ] . apply ( this . control , [ this . feature . geometry . clone ( ) ] ) ; ! this . persist && ( "done" == a || "cancel" == a ) && this . clear ( ) } , CLASS _NAME : "OpenLayers.Handler.RegularPolygon" } ) ; OpenLayers . Control . SLDSelect = OpenLayers . Class ( OpenLayers . Control , { clearOnDeactivate : ! 1 , layers : null , callbacks : null , selectionSymbolizer : { Polygon : { fillColor : "#FF0000" , stroke : ! 1 } , Line : { strokeColor : "#FF0000" , strokeWidth : 2 } , Point : { graphicName : "square" , fillColor : "#FF0000" , pointRadius : 5 } } , layerOptions : null , handlerOptions : null , sketchStyle : null , wfsCache : { } , layerCache : { } , initialize : function ( a , b ) { OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; this . callbacks = OpenLayers . Util . extend ( { done : this . select , click : this . select } ,
this . callbacks ) ; this . handlerOptions = this . handlerOptions || { } ; this . layerOptions = OpenLayers . Util . applyDefaults ( this . layerOptions , { displayInLayerSwitcher : ! 1 , tileOptions : { maxGetUrlLength : 2048 } } ) ; this . sketchStyle && ( this . handlerOptions . layerOptions = OpenLayers . Util . applyDefaults ( this . handlerOptions . layerOptions , { styleMap : new OpenLayers . StyleMap ( { "default" : this . sketchStyle } ) } ) ) ; this . handler = new a ( this , this . callbacks , this . handlerOptions ) } , destroy : function ( ) { for ( var a in this . layerCache ) delete this . layerCache [ a ] ;
for ( a in this . wfsCache ) delete this . wfsCache [ a ] ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , coupleLayerVisiblity : function ( a ) { this . setVisibility ( a . object . getVisibility ( ) ) } , createSelectionLayer : function ( a ) { var b ; if ( this . layerCache [ a . id ] ) b = this . layerCache [ a . id ] ; else { b = new OpenLayers . Layer . WMS ( a . name , a . url , a . params , OpenLayers . Util . applyDefaults ( this . layerOptions , a . getOptions ( ) ) ) ; this . layerCache [ a . id ] = b ; if ( ! 1 === this . layerOptions . displayInLayerSwitcher ) a . events . on ( { visibilitychanged : this . coupleLayerVisiblity ,
scope : b } ) ; this . map . addLayer ( b ) } return b } , createSLD : function ( a , b , c ) { for ( var d = { version : "1.0.0" , namedLayers : { } } , e = ( "" + a . params . LAYERS ) . split ( "," ) , f = 0 , g = e . length ; f < g ; f ++ ) { var h = e [ f ] ; d . namedLayers [ h ] = { name : h , userStyles : [ ] } ; var i = this . selectionSymbolizer , j = c [ f ] ; 0 <= j . type . indexOf ( "Polygon" ) ? i = { Polygon : this . selectionSymbolizer . Polygon } : 0 <= j . type . indexOf ( "LineString" ) ? i = { Line : this . selectionSymbolizer . Line } : 0 <= j . type . indexOf ( "Point" ) && ( i = { Point : this . selectionSymbolizer . Point } ) ; d . namedLayers [ h ] . userStyles . push ( { name : "default" ,
rules : [ new OpenLayers . Rule ( { symbolizer : i , filter : b [ f ] , maxScaleDenominator : a . options . minScale } ) ] } ) } return ( new OpenLayers . Format . SLD ( { srsName : this . map . getProjection ( ) } ) ) . write ( d ) } , parseDescribeLayer : function ( a ) { var b = new OpenLayers . Format . WMSDescribeLayer , c = a . responseXML ; if ( ! c || ! c . documentElement ) c = a . responseText ; for ( var a = b . read ( c ) , b = [ ] , c = null , d = 0 , e = a . length ; d < e ; d ++ ) "WFS" == a [ d ] . owsType && ( b . push ( a [ d ] . typeName ) , c = a [ d ] . owsURL ) ; OpenLayers . Request . GET ( { url : c , params : { SERVICE : "WFS" , TYPENAME : b . toString ( ) , REQUEST : "DescribeFeatureType" ,
VERSION : "1.0.0" } , callback : function ( a ) { var b = new OpenLayers . Format . WFSDescribeFeatureType , c = a . responseXML ; if ( ! c || ! c . documentElement ) c = a . responseText ; this . control . wfsCache [ this . layer . id ] = b . read ( c ) ; this . control . _queue && this . control . applySelection ( ) } , scope : this } ) } , getGeometryAttributes : function ( a ) { for ( var b = [ ] , a = this . wfsCache [ a . id ] , c = 0 , d = a . featureTypes . length ; c < d ; c ++ ) for ( var e = a . featureTypes [ c ] . properties , f = 0 , g = e . length ; f < g ; f ++ ) { var h = e [ f ] , i = h . type ; ( 0 <= i . indexOf ( "LineString" ) || 0 <= i . indexOf ( "GeometryAssociationType" ) ||
0 <= i . indexOf ( "GeometryPropertyType" ) || 0 <= i . indexOf ( "Point" ) || 0 <= i . indexOf ( "Polygon" ) ) && b . push ( h ) } return b } , activate : function ( ) { var a = OpenLayers . Control . prototype . activate . call ( this ) ; if ( a ) for ( var b = 0 , c = this . layers . length ; b < c ; b ++ ) { var d = this . layers [ b ] ; d && ! this . wfsCache [ d . id ] && OpenLayers . Request . GET ( { url : d . url , params : { SERVICE : "WMS" , VERSION : d . params . VERSION , LAYERS : d . params . LAYERS , REQUEST : "DescribeLayer" } , callback : this . parseDescribeLayer , scope : { layer : d , control : this } } ) } return a } , deactivate : function ( ) { var a =
OpenLayers . Control . prototype . deactivate . call ( this ) ; if ( a ) for ( var b = 0 , c = this . layers . length ; b < c ; b ++ ) { var d = this . layers [ b ] ; if ( d && ! 0 === this . clearOnDeactivate ) { var e = this . layerCache , f = e [ d . id ] ; f && ( d . events . un ( { visibilitychanged : this . coupleLayerVisiblity , scope : f } ) , f . destroy ( ) , delete e [ d . id ] ) } } return a } , setLayers : function ( a ) { this . active ? ( this . deactivate ( ) , this . layers = a , this . activate ( ) ) : this . layers = a } , createFilter : function ( a , b ) { var c = null ; this . handler instanceof OpenLayers . Handler . RegularPolygon ? c = ! 0 === this . handler . irregular ?
new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . BBOX , property : a . name , value : b . getBounds ( ) } ) : new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . INTERSECTS , property : a . name , value : b } ) : this . handler instanceof OpenLayers . Handler . Polygon ? c = new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . INTERSECTS , property : a . name , value : b } ) : this . handler instanceof OpenLayers . Handler . Path ? c = 0 <= a . type . indexOf ( "Point" ) ? new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . DWITHIN ,
property : a . name , distance : 0.01 * this . map . getExtent ( ) . getWidth ( ) , distanceUnits : this . map . getUnits ( ) , value : b } ) : new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . INTERSECTS , property : a . name , value : b } ) : this . handler instanceof OpenLayers . Handler . Click && ( c = 0 <= a . type . indexOf ( "Polygon" ) ? new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . INTERSECTS , property : a . name , value : b } ) : new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . DWITHIN , property : a . name , distance : 0.01 * this . map . getExtent ( ) . getWidth ( ) ,
distanceUnits : this . map . getUnits ( ) , value : b } ) ) ; return c } , select : function ( a ) { this . _queue = function ( ) { for ( var b = 0 , c = this . layers . length ; b < c ; b ++ ) { for ( var d = this . layers [ b ] , e = this . getGeometryAttributes ( d ) , f = [ ] , g = 0 , h = e . length ; g < h ; g ++ ) { var i = e [ g ] ; if ( null !== i ) { if ( ! ( a instanceof OpenLayers . Geometry ) ) { var j = this . map . getLonLatFromPixel ( a . xy ) ; a = new OpenLayers . Geometry . Point ( j . lon , j . lat ) } i = this . createFilter ( i , a ) ; null !== i && f . push ( i ) } } g = this . createSelectionLayer ( d ) ; e = this . createSLD ( d , f , e ) ; this . events . triggerEvent ( "selected" ,
{ layer : d , filters : f } ) ; g . mergeNewParams ( { SLD _BODY : e } ) ; delete this . _queue } } ; this . applySelection ( ) } , applySelection : function ( ) { for ( var a = ! 0 , b = 0 , c = this . layers . length ; b < c ; b ++ ) if ( ! this . wfsCache [ this . layers [ b ] . id ] ) { a = ! 1 ; break } a && this . _queue . call ( this ) } , CLASS _NAME : "OpenLayers.Control.SLDSelect" } ) ; OpenLayers . Control . Scale = OpenLayers . Class ( OpenLayers . Control , { element : null , geodesic : ! 1 , initialize : function ( a , b ) { OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; this . element = OpenLayers . Util . getElement ( a ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; this . element || ( this . element = document . createElement ( "div" ) , this . div . appendChild ( this . element ) ) ; this . map . events . register ( "moveend" , this , this . updateScale ) ; this . updateScale ( ) ; return this . div } , updateScale : function ( ) { var a ;
if ( ! 0 === this . geodesic ) { if ( ! this . map . getUnits ( ) ) return ; a = OpenLayers . INCHES _PER _UNIT ; a = ( this . map . getGeodesicPixelSize ( ) . w || 1.0 E - 6 ) * a . km * OpenLayers . DOTS _PER _INCH } else a = this . map . getScale ( ) ; a && ( a = 9500 <= a && 95E4 >= a ? Math . round ( a / 1E3 ) + "K" : 95E4 <= a ? Math . round ( a / 1E6 ) + "M" : Math . round ( a ) , this . element . innerHTML = OpenLayers . i18n ( "Scale = 1 : ${scaleDenom}" , { scaleDenom : a } ) ) } , CLASS _NAME : "OpenLayers.Control.Scale" } ) ; OpenLayers . Control . Button = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _BUTTON , trigger : function ( ) { } , CLASS _NAME : "OpenLayers.Control.Button" } ) ; OpenLayers . Layer . MapGuide = OpenLayers . Class ( OpenLayers . Layer . Grid , { isBaseLayer : ! 0 , useHttpTile : ! 1 , singleTile : ! 1 , useOverlay : ! 1 , useAsyncOverlay : ! 0 , TILE _PARAMS : { operation : "GETTILEIMAGE" , version : "1.2.0" } , SINGLE _TILE _PARAMS : { operation : "GETMAPIMAGE" , format : "PNG" , locale : "en" , clip : "1" , version : "1.0.0" } , OVERLAY _PARAMS : { operation : "GETDYNAMICMAPOVERLAYIMAGE" , format : "PNG" , locale : "en" , clip : "1" , version : "2.0.0" } , FOLDER _PARAMS : { tileColumnsPerFolder : 30 , tileRowsPerFolder : 30 , format : "png" , querystring : null } , defaultSize : new OpenLayers . Size ( 300 ,
300 ) , tileOriginCorner : "tl" , initialize : function ( a , b , c , d ) { OpenLayers . Layer . Grid . prototype . initialize . apply ( this , arguments ) ; if ( null == d || null == d . isBaseLayer ) this . isBaseLayer = "true" != this . transparent && ! 0 != this . transparent ; d && null != d . useOverlay && ( this . useOverlay = d . useOverlay ) ; this . singleTile ? this . useOverlay ? ( OpenLayers . Util . applyDefaults ( this . params , this . OVERLAY _PARAMS ) , this . useAsyncOverlay || ( this . params . version = "1.0.0" ) ) : OpenLayers . Util . applyDefaults ( this . params , this . SINGLE _TILE _PARAMS ) : ( this . useHttpTile ?
OpenLayers . Util . applyDefaults ( this . params , this . FOLDER _PARAMS ) : OpenLayers . Util . applyDefaults ( this . params , this . TILE _PARAMS ) , this . setTileSize ( this . defaultSize ) ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . MapGuide ( this . name , this . url , this . params , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , getURL : function ( a ) { var b ; b = a . getCenterLonLat ( ) ; var c = this . map . getSize ( ) ; this . singleTile ? ( a = { setdisplaydpi : OpenLayers . DOTS _PER _INCH , setdisplayheight : c . h * this . ratio , setdisplaywidth : c . w *
this . ratio , setviewcenterx : b . lon , setviewcentery : b . lat , setviewscale : this . map . getScale ( ) } , this . useOverlay && ! this . useAsyncOverlay && ( b = { } , b = OpenLayers . Util . extend ( b , a ) , b . operation = "GETVISIBLEMAPEXTENT" , b . version = "1.0.0" , b . session = this . params . session , b . mapName = this . params . mapName , b . format = "text/xml" , b = this . getFullRequestString ( b ) , OpenLayers . Request . GET ( { url : b , async : ! 1 } ) ) , b = this . getFullRequestString ( a ) ) : ( c = this . map . getResolution ( ) , b = Math . floor ( ( a . left - this . maxExtent . left ) / c ) , b = Math . round ( b / this . tileSize . w ) ,
a = Math . floor ( ( this . maxExtent . top - a . top ) / c ) , a = Math . round ( a / this . tileSize . h ) , b = this . useHttpTile ? this . getImageFilePath ( { tilecol : b , tilerow : a , scaleindex : this . resolutions . length - this . map . zoom - 1 } ) : this . getFullRequestString ( { tilecol : b , tilerow : a , scaleindex : this . resolutions . length - this . map . zoom - 1 } ) ) ; return b } , getFullRequestString : function ( a , b ) { var c = null == b ? this . url : b ; "object" == typeof c && ( c = c [ Math . floor ( Math . random ( ) * c . length ) ] ) ; var d = c , e = OpenLayers . Util . extend ( { } , this . params ) , e = OpenLayers . Util . extend ( e , a ) ,
f = OpenLayers . Util . upperCaseObject ( OpenLayers . Util . getParameters ( c ) ) , g ; for ( g in e ) g . toUpperCase ( ) in f && delete e [ g ] ; e = OpenLayers . Util . getParameterString ( e ) ; e = e . replace ( /,/g , "+" ) ; "" != e && ( f = c . charAt ( c . length - 1 ) , d = "&" == f || "?" == f ? d + e : - 1 == c . indexOf ( "?" ) ? d + ( "?" + e ) : d + ( "&" + e ) ) ; return d } , getImageFilePath : function ( a , b ) { var c = null == b ? this . url : b ; "object" == typeof c && ( c = c [ Math . floor ( Math . random ( ) * c . length ) ] ) ; var d = "" , e = "" ; 0 > a . tilerow && ( d = "-" ) ; d = 0 == a . tilerow ? d + "0" : d + Math . floor ( Math . abs ( a . tilerow / this . params . tileRowsPerFolder ) ) *
this . params . tileRowsPerFolder ; 0 > a . tilecol && ( e = "-" ) ; e = 0 == a . tilecol ? e + "0" : e + Math . floor ( Math . abs ( a . tilecol / this . params . tileColumnsPerFolder ) ) * this . params . tileColumnsPerFolder ; d = "/S" + Math . floor ( a . scaleindex ) + "/" + this . params . basemaplayergroupname + "/R" + d + "/C" + e + "/" + a . tilerow % this . params . tileRowsPerFolder + "_" + a . tilecol % this . params . tileColumnsPerFolder + "." + this . params . format ; this . params . querystring && ( d += "?" + this . params . querystring ) ; return c + d } , calculateGridLayout : function ( a , b , c ) { var d = c * this . tileSize . w , c =
c * this . tileSize . h , e = a . left - b . lon , f = Math . floor ( e / d ) - this . buffer , a = b . lat - a . top + c , g = Math . floor ( a / c ) - this . buffer ; return { tilelon : d , tilelat : c , tileoffsetlon : b . lon + f * d , tileoffsetlat : b . lat - c * g , tileoffsetx : - ( e / d - f ) * this . tileSize . w , tileoffsety : ( g - a / c ) * this . tileSize . h } } , CLASS _NAME : "OpenLayers.Layer.MapGuide" } ) ; OpenLayers . Control . Measure = OpenLayers . Class ( OpenLayers . Control , { handlerOptions : null , callbacks : null , displaySystem : "metric" , geodesic : ! 1 , displaySystemUnits : { geographic : [ "dd" ] , english : [ "mi" , "ft" , "in" ] , metric : [ "km" , "m" ] } , partialDelay : 300 , delayedTrigger : null , persist : ! 1 , immediate : ! 1 , initialize : function ( a , b ) { OpenLayers . Control . prototype . initialize . apply ( this , [ b ] ) ; var c = { done : this . measureComplete , point : this . measurePartial } ; this . immediate && ( c . modify = this . measureImmediate ) ; this . callbacks = OpenLayers . Util . extend ( c ,
this . callbacks ) ; this . handlerOptions = OpenLayers . Util . extend ( { persist : this . persist } , this . handlerOptions ) ; this . handler = new a ( this , this . callbacks , this . handlerOptions ) } , deactivate : function ( ) { this . cancelDelay ( ) ; return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) } , cancel : function ( ) { this . cancelDelay ( ) ; this . handler . cancel ( ) } , setImmediate : function ( a ) { ( this . immediate = a ) ? this . callbacks . modify = this . measureImmediate : delete this . callbacks . modify } , updateHandler : function ( a , b ) { var c = this . active ; c &&
this . deactivate ( ) ; this . handler = new a ( this , this . callbacks , b ) ; c && this . activate ( ) } , measureComplete : function ( a ) { this . cancelDelay ( ) ; this . measure ( a , "measure" ) } , measurePartial : function ( a , b ) { this . cancelDelay ( ) ; b = b . clone ( ) ; this . handler . freehandMode ( this . handler . evt ) ? this . measure ( b , "measurepartial" ) : this . delayedTrigger = window . setTimeout ( OpenLayers . Function . bind ( function ( ) { this . delayedTrigger = null ; this . measure ( b , "measurepartial" ) } , this ) , this . partialDelay ) } , measureImmediate : function ( a , b , c ) { c && ! this . handler . freehandMode ( this . handler . evt ) &&
( this . cancelDelay ( ) , this . measure ( b . geometry , "measurepartial" ) ) } , cancelDelay : function ( ) { null !== this . delayedTrigger && ( window . clearTimeout ( this . delayedTrigger ) , this . delayedTrigger = null ) } , measure : function ( a , b ) { var c , d ; - 1 < a . CLASS _NAME . indexOf ( "LineString" ) ? ( c = this . getBestLength ( a ) , d = 1 ) : ( c = this . getBestArea ( a ) , d = 2 ) ; this . events . triggerEvent ( b , { measure : c [ 0 ] , units : c [ 1 ] , order : d , geometry : a } ) } , getBestArea : function ( a ) { for ( var b = this . displaySystemUnits [ this . displaySystem ] , c , d , e = 0 , f = b . length ; e < f && ! ( c = b [ e ] , d = this . getArea ( a ,
c ) , 1 < d ) ; ++ e ) ; return [ d , c ] } , getArea : function ( a , b ) { var c , d ; this . geodesic ? ( c = a . getGeodesicArea ( this . map . getProjectionObject ( ) ) , d = "m" ) : ( c = a . getArea ( ) , d = this . map . getUnits ( ) ) ; var e = OpenLayers . INCHES _PER _UNIT [ b ] ; e && ( c *= Math . pow ( OpenLayers . INCHES _PER _UNIT [ d ] / e , 2 ) ) ; return c } , getBestLength : function ( a ) { for ( var b = this . displaySystemUnits [ this . displaySystem ] , c , d , e = 0 , f = b . length ; e < f && ! ( c = b [ e ] , d = this . getLength ( a , c ) , 1 < d ) ; ++ e ) ; return [ d , c ] } , getLength : function ( a , b ) { var c , d ; this . geodesic ? ( c = a . getGeodesicLength ( this . map . getProjectionObject ( ) ) ,
d = "m" ) : ( c = a . getLength ( ) , d = this . map . getUnits ( ) ) ; var e = OpenLayers . INCHES _PER _UNIT [ b ] ; e && ( c *= OpenLayers . INCHES _PER _UNIT [ d ] / e ) ; return c } , CLASS _NAME : "OpenLayers.Control.Measure" } ) ; OpenLayers . Format . WMC . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . WMC . v1 , { VERSION : "1.0.0" , schemaLocation : "http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd" , initialize : function ( a ) { OpenLayers . Format . WMC . v1 . prototype . initialize . apply ( this , [ a ] ) } , read _wmc _SRS : function ( a , b ) { var c = this . getChildValue ( b ) ; "object" != typeof a . projections && ( a . projections = { } ) ; for ( var c = c . split ( / +/ ) , d = 0 , e = c . length ; d < e ; d ++ ) a . projections [ c [ d ] ] = ! 0 } , write _wmc _Layer : function ( a ) { var b = OpenLayers . Format . WMC . v1 . prototype . write _wmc _Layer . apply ( this ,
[ a ] ) ; if ( a . srs ) { var c = [ ] , d ; for ( d in a . srs ) c . push ( d ) ; b . appendChild ( this . createElementDefaultNS ( "SRS" , c . join ( " " ) ) ) } b . appendChild ( this . write _wmc _FormatList ( a ) ) ; b . appendChild ( this . write _wmc _StyleList ( a ) ) ; a . dimensions && b . appendChild ( this . write _wmc _DimensionList ( a ) ) ; b . appendChild ( this . write _wmc _LayerExtension ( a ) ) } , CLASS _NAME : "OpenLayers.Format.WMC.v1_0_0" } ) ; OpenLayers . Popup . Framed = OpenLayers . Class ( OpenLayers . Popup . Anchored , { imageSrc : null , imageSize : null , isAlphaImage : ! 1 , positionBlocks : null , blocks : null , fixedRelativePosition : ! 1 , initialize : function ( a , b , c , d , e , f , g ) { OpenLayers . Popup . Anchored . prototype . initialize . apply ( this , arguments ) ; this . fixedRelativePosition && ( this . updateRelativePosition ( ) , this . calculateRelativePosition = function ( ) { return this . relativePosition } ) ; this . contentDiv . style . position = "absolute" ; this . contentDiv . style . zIndex = 1 ; f && ( this . closeDiv . style . zIndex =
1 ) ; this . groupDiv . style . position = "absolute" ; this . groupDiv . style . top = "0px" ; this . groupDiv . style . left = "0px" ; this . groupDiv . style . height = "100%" ; this . groupDiv . style . width = "100%" } , destroy : function ( ) { this . isAlphaImage = this . imageSize = this . imageSrc = null ; this . fixedRelativePosition = ! 1 ; this . positionBlocks = null ; for ( var a = 0 ; a < this . blocks . length ; a ++ ) { var b = this . blocks [ a ] ; b . image && b . div . removeChild ( b . image ) ; b . image = null ; b . div && this . groupDiv . removeChild ( b . div ) ; b . div = null } this . blocks = null ; OpenLayers . Popup . Anchored . prototype . destroy . apply ( this ,
arguments ) } , setBackgroundColor : function ( ) { } , setBorder : function ( ) { } , setOpacity : function ( ) { } , setSize : function ( a ) { OpenLayers . Popup . Anchored . prototype . setSize . apply ( this , arguments ) ; this . updateBlocks ( ) } , updateRelativePosition : function ( ) { this . padding = this . positionBlocks [ this . relativePosition ] . padding ; if ( this . closeDiv ) { var a = this . getContentDivPadding ( ) ; this . closeDiv . style . right = a . right + this . padding . right + "px" ; this . closeDiv . style . top = a . top + this . padding . top + "px" } this . updateBlocks ( ) } , calculateNewPx : function ( a ) { var b =
OpenLayers . Popup . Anchored . prototype . calculateNewPx . apply ( this , arguments ) ; return b = b . offset ( this . positionBlocks [ this . relativePosition ] . offset ) } , createBlocks : function ( ) { this . blocks = [ ] ; var a = null , b ; for ( b in this . positionBlocks ) { a = b ; break } a = this . positionBlocks [ a ] ; for ( b = 0 ; b < a . blocks . length ; b ++ ) { var c = { } ; this . blocks . push ( c ) ; c . div = OpenLayers . Util . createDiv ( this . id + "_FrameDecorationDiv_" + b , null , null , null , "absolute" , null , "hidden" , null ) ; c . image = ( this . isAlphaImage ? OpenLayers . Util . createAlphaImageDiv : OpenLayers . Util . createImage ) ( this . id +
"_FrameDecorationImg_" + b , null , this . imageSize , this . imageSrc , "absolute" , null , null , null ) ; c . div . appendChild ( c . image ) ; this . groupDiv . appendChild ( c . div ) } } , updateBlocks : function ( ) { this . blocks || this . createBlocks ( ) ; if ( this . size && this . relativePosition ) { for ( var a = this . positionBlocks [ this . relativePosition ] , b = 0 ; b < a . blocks . length ; b ++ ) { var c = a . blocks [ b ] , d = this . blocks [ b ] , e = c . anchor . left , f = c . anchor . bottom , g = c . anchor . right , h = c . anchor . top , i = isNaN ( c . size . w ) ? this . size . w - ( g + e ) : c . size . w , j = isNaN ( c . size . h ) ? this . size . h - ( f +
h ) : c . size . h ; d . div . style . width = ( 0 > i ? 0 : i ) + "px" ; d . div . style . height = ( 0 > j ? 0 : j ) + "px" ; d . div . style . left = null != e ? e + "px" : "" ; d . div . style . bottom = null != f ? f + "px" : "" ; d . div . style . right = null != g ? g + "px" : "" ; d . div . style . top = null != h ? h + "px" : "" ; d . image . style . left = c . position . x + "px" ; d . image . style . top = c . position . y + "px" } this . contentDiv . style . left = this . padding . left + "px" ; this . contentDiv . style . top = this . padding . top + "px" } } , CLASS _NAME : "OpenLayers.Popup.Framed" } ) ; OpenLayers . Popup . FramedCloud = OpenLayers . Class ( OpenLayers . Popup . Framed , { contentDisplayClass : "olFramedCloudPopupContent" , autoSize : ! 0 , panMapIfOutOfView : ! 0 , imageSize : new OpenLayers . Size ( 1276 , 736 ) , isAlphaImage : ! 1 , fixedRelativePosition : ! 1 , positionBlocks : { tl : { offset : new OpenLayers . Pixel ( 44 , 0 ) , padding : new OpenLayers . Bounds ( 8 , 40 , 8 , 9 ) , blocks : [ { size : new OpenLayers . Size ( "auto" , "auto" ) , anchor : new OpenLayers . Bounds ( 0 , 51 , 22 , 0 ) , position : new OpenLayers . Pixel ( 0 , 0 ) } , { size : new OpenLayers . Size ( 22 , "auto" ) , anchor : new OpenLayers . Bounds ( null ,
50 , 0 , 0 ) , position : new OpenLayers . Pixel ( - 1238 , 0 ) } , { size : new OpenLayers . Size ( "auto" , 19 ) , anchor : new OpenLayers . Bounds ( 0 , 32 , 22 , null ) , position : new OpenLayers . Pixel ( 0 , - 631 ) } , { size : new OpenLayers . Size ( 22 , 18 ) , anchor : new OpenLayers . Bounds ( null , 32 , 0 , null ) , position : new OpenLayers . Pixel ( - 1238 , - 632 ) } , { size : new OpenLayers . Size ( 81 , 35 ) , anchor : new OpenLayers . Bounds ( null , 0 , 0 , null ) , position : new OpenLayers . Pixel ( 0 , - 688 ) } ] } , tr : { offset : new OpenLayers . Pixel ( - 45 , 0 ) , padding : new OpenLayers . Bounds ( 8 , 40 , 8 , 9 ) , blocks : [ { size : new OpenLayers . Size ( "auto" ,
"auto" ) , anchor : new OpenLayers . Bounds ( 0 , 51 , 22 , 0 ) , position : new OpenLayers . Pixel ( 0 , 0 ) } , { size : new OpenLayers . Size ( 22 , "auto" ) , anchor : new OpenLayers . Bounds ( null , 50 , 0 , 0 ) , position : new OpenLayers . Pixel ( - 1238 , 0 ) } , { size : new OpenLayers . Size ( "auto" , 19 ) , anchor : new OpenLayers . Bounds ( 0 , 32 , 22 , null ) , position : new OpenLayers . Pixel ( 0 , - 631 ) } , { size : new OpenLayers . Size ( 22 , 19 ) , anchor : new OpenLayers . Bounds ( null , 32 , 0 , null ) , position : new OpenLayers . Pixel ( - 1238 , - 631 ) } , { size : new OpenLayers . Size ( 81 , 35 ) , anchor : new OpenLayers . Bounds ( 0 ,
0 , null , null ) , position : new OpenLayers . Pixel ( - 215 , - 687 ) } ] } , bl : { offset : new OpenLayers . Pixel ( 45 , 0 ) , padding : new OpenLayers . Bounds ( 8 , 9 , 8 , 40 ) , blocks : [ { size : new OpenLayers . Size ( "auto" , "auto" ) , anchor : new OpenLayers . Bounds ( 0 , 21 , 22 , 32 ) , position : new OpenLayers . Pixel ( 0 , 0 ) } , { size : new OpenLayers . Size ( 22 , "auto" ) , anchor : new OpenLayers . Bounds ( null , 21 , 0 , 32 ) , position : new OpenLayers . Pixel ( - 1238 , 0 ) } , { size : new OpenLayers . Size ( "auto" , 21 ) , anchor : new OpenLayers . Bounds ( 0 , 0 , 22 , null ) , position : new OpenLayers . Pixel ( 0 , - 629 ) } , { size : new OpenLayers . Size ( 22 ,
21 ) , anchor : new OpenLayers . Bounds ( null , 0 , 0 , null ) , position : new OpenLayers . Pixel ( - 1238 , - 629 ) } , { size : new OpenLayers . Size ( 81 , 33 ) , anchor : new OpenLayers . Bounds ( null , null , 0 , 0 ) , position : new OpenLayers . Pixel ( - 101 , - 674 ) } ] } , br : { offset : new OpenLayers . Pixel ( - 44 , 0 ) , padding : new OpenLayers . Bounds ( 8 , 9 , 8 , 40 ) , blocks : [ { size : new OpenLayers . Size ( "auto" , "auto" ) , anchor : new OpenLayers . Bounds ( 0 , 21 , 22 , 32 ) , position : new OpenLayers . Pixel ( 0 , 0 ) } , { size : new OpenLayers . Size ( 22 , "auto" ) , anchor : new OpenLayers . Bounds ( null , 21 , 0 , 32 ) , position : new OpenLayers . Pixel ( - 1238 ,
0 ) } , { size : new OpenLayers . Size ( "auto" , 21 ) , anchor : new OpenLayers . Bounds ( 0 , 0 , 22 , null ) , position : new OpenLayers . Pixel ( 0 , - 629 ) } , { size : new OpenLayers . Size ( 22 , 21 ) , anchor : new OpenLayers . Bounds ( null , 0 , 0 , null ) , position : new OpenLayers . Pixel ( - 1238 , - 629 ) } , { size : new OpenLayers . Size ( 81 , 33 ) , anchor : new OpenLayers . Bounds ( 0 , null , null , 0 ) , position : new OpenLayers . Pixel ( - 311 , - 674 ) } ] } } , minSize : new OpenLayers . Size ( 105 , 10 ) , maxSize : new OpenLayers . Size ( 1200 , 660 ) , initialize : function ( a , b , c , d , e , f , g ) { this . imageSrc = OpenLayers . Util . getImageLocation ( "cloud-popup-relative.png" ) ;
OpenLayers . Popup . Framed . prototype . initialize . apply ( this , arguments ) ; this . contentDiv . className = this . contentDisplayClass } , CLASS _NAME : "OpenLayers.Popup.FramedCloud" } ) ; OpenLayers . Tile . Image . IFrame = { useIFrame : null , draw : function ( ) { if ( OpenLayers . Tile . Image . prototype . shouldDraw . call ( this ) ) { var a = this . layer . getURL ( this . bounds ) , b = this . useIFrame ; this . useIFrame = null !== this . maxGetUrlLength && ! this . layer . async && a . length > this . maxGetUrlLength ; a = b && ! this . useIFrame ; b = ! b && this . useIFrame ; if ( a || b ) this . imgDiv && this . imgDiv . parentNode === this . frame && this . frame . removeChild ( this . imgDiv ) , this . imgDiv = null , a ? ( this . blankImageUrl = this . _blankImageUrl , this . frame . removeChild ( this . frame . firstChild ) ) :
( this . _blankImageUrl = this . blankImageUrl , this . blankImageUrl = "about:blank" ) } return OpenLayers . Tile . Image . prototype . draw . apply ( this , arguments ) } , getImage : function ( ) { if ( ! 0 === this . useIFrame ) { if ( ! this . frame . childNodes . length ) { var a = document . createElement ( "div" ) , b = a . style ; b . position = "absolute" ; b . width = "100%" ; b . height = "100%" ; b . zIndex = 1 ; b . backgroundImage = "url(" + this . _blankImageUrl + ")" ; this . frame . appendChild ( a ) } a = this . id + "_iFrame" ; 9 > parseFloat ( navigator . appVersion . split ( "MSIE" ) [ 1 ] ) ? ( b = document . createElement ( '<iframe name="' +
a + '">' ) , b . style . backgroundColor = "#FFFFFF" , b . style . filter = "chroma(color=#FFFFFF)" ) : ( b = document . createElement ( "iframe" ) , b . style . backgroundColor = "transparent" , b . name = a ) ; b . scrolling = "no" ; b . marginWidth = "0px" ; b . marginHeight = "0px" ; b . frameBorder = "0" ; b . style . position = "absolute" ; b . style . width = "100%" ; b . style . height = "100%" ; 1 > this . layer . opacity && OpenLayers . Util . modifyDOMElement ( b , null , null , null , null , null , null , this . layer . opacity ) ; this . frame . appendChild ( b ) ; return this . imgDiv = b } return OpenLayers . Tile . Image . prototype . getImage . apply ( this ,
arguments ) } , createRequestForm : function ( ) { var a = document . createElement ( "form" ) ; a . method = "POST" ; var b = this . layer . params . _OLSALT , b = ( b ? b + "_" : "" ) + this . bounds . toBBOX ( ) ; a . action = OpenLayers . Util . urlAppend ( this . layer . url , b ) ; a . target = this . id + "_iFrame" ; this . layer . getImageSize ( ) ; var b = OpenLayers . Util . getParameters ( this . url ) , c , d ; for ( d in b ) c = document . createElement ( "input" ) , c . type = "hidden" , c . name = d , c . value = b [ d ] , a . appendChild ( c ) ; return a } , setImgSrc : function ( a ) { if ( ! 0 === this . useIFrame ) if ( a ) { var b = this . createRequestForm ( ) ;
this . frame . appendChild ( b ) ; b . submit ( ) ; this . frame . removeChild ( b ) } else this . imgDiv . parentNode === this . frame && ( this . frame . removeChild ( this . imgDiv ) , this . imgDiv = null ) ; else OpenLayers . Tile . Image . prototype . setImgSrc . apply ( this , arguments ) } , onImageLoad : function ( ) { OpenLayers . Tile . Image . prototype . onImageLoad . apply ( this , arguments ) ; ! 0 === this . useIFrame && ( this . imgDiv . style . opacity = 1 , this . frame . style . opacity = this . layer . opacity ) } , createBackBuffer : function ( ) { var a ; ! 1 === this . useIFrame && ( a = OpenLayers . Tile . Image . prototype . createBackBuffer . call ( this ) ) ;
return a } } ; OpenLayers . Format . SOSCapabilities = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.0.0" , CLASS _NAME : "OpenLayers.Format.SOSCapabilities" } ) ; OpenLayers . Format . SOSCapabilities . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . SOSCapabilities , { namespaces : { ows : "http://www.opengis.net/ows/1.1" , sos : "http://www.opengis.net/sos/1.0" , gml : "http://www.opengis.net/gml" , xlink : "http://www.w3.org/1999/xlink" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) ; this . options = a } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this ,
[ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; return b } , readers : { gml : OpenLayers . Util . applyDefaults ( { name : function ( a , b ) { b . name = this . getChildValue ( a ) } , TimePeriod : function ( a , b ) { b . timePeriod = { } ; this . readChildNodes ( a , b . timePeriod ) } , beginPosition : function ( a , b ) { b . beginPosition = this . getChildValue ( a ) } , endPosition : function ( a , b ) { b . endPosition = this . getChildValue ( a ) } } , OpenLayers . Format . GML . v3 . prototype . readers . gml ) , sos : { Capabilities : function ( a , b ) { this . readChildNodes ( a , b ) } , Contents : function ( a ,
b ) { b . contents = { } ; this . readChildNodes ( a , b . contents ) } , ObservationOfferingList : function ( a , b ) { b . offeringList = { } ; this . readChildNodes ( a , b . offeringList ) } , ObservationOffering : function ( a , b ) { var c = this . getAttributeNS ( a , this . namespaces . gml , "id" ) ; b [ c ] = { procedures : [ ] , observedProperties : [ ] , featureOfInterestIds : [ ] , responseFormats : [ ] , resultModels : [ ] , responseModes : [ ] } ; this . readChildNodes ( a , b [ c ] ) } , time : function ( a , b ) { b . time = { } ; this . readChildNodes ( a , b . time ) } , procedure : function ( a , b ) { b . procedures . push ( this . getAttributeNS ( a ,
this . namespaces . xlink , "href" ) ) } , observedProperty : function ( a , b ) { b . observedProperties . push ( this . getAttributeNS ( a , this . namespaces . xlink , "href" ) ) } , featureOfInterest : function ( a , b ) { b . featureOfInterestIds . push ( this . getAttributeNS ( a , this . namespaces . xlink , "href" ) ) } , responseFormat : function ( a , b ) { b . responseFormats . push ( this . getChildValue ( a ) ) } , resultModel : function ( a , b ) { b . resultModels . push ( this . getChildValue ( a ) ) } , responseMode : function ( a , b ) { b . responseModes . push ( this . getChildValue ( a ) ) } } , ows : OpenLayers . Format . OWSCommon . v1 _1 _0 . prototype . readers . ows } ,
CLASS _NAME : "OpenLayers.Format.SOSCapabilities.v1_0_0" } ) ; OpenLayers . Handler . Pinch = OpenLayers . Class ( OpenLayers . Handler , { started : ! 1 , stopDown : ! 1 , pinching : ! 1 , last : null , start : null , touchstart : function ( a ) { var b = ! 0 ; this . pinching = ! 1 ; OpenLayers . Event . isMultiTouch ( a ) ? ( this . started = ! 0 , this . last = this . start = { distance : this . getDistance ( a . touches ) , delta : 0 , scale : 1 } , this . callback ( "start" , [ a , this . start ] ) , b = ! this . stopDown ) : ( this . started = ! 1 , this . last = this . start = null ) ; OpenLayers . Event . stop ( a ) ; return b } , touchmove : function ( a ) { if ( this . started && OpenLayers . Event . isMultiTouch ( a ) ) { this . pinching =
! 0 ; var b = this . getPinchData ( a ) ; this . callback ( "move" , [ a , b ] ) ; this . last = b ; OpenLayers . Event . stop ( a ) } return ! 0 } , touchend : function ( a ) { this . started && ( this . pinching = this . started = ! 1 , this . callback ( "done" , [ a , this . start , this . last ] ) , this . last = this . start = null ) ; return ! 0 } , activate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . activate . apply ( this , arguments ) && ( this . pinching = ! 1 , a = ! 0 ) ; return a } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) && ( this . pinching = this . started =
! 1 , this . last = this . start = null , a = ! 0 ) ; return a } , getDistance : function ( a ) { var b = a [ 0 ] , a = a [ 1 ] ; return Math . sqrt ( Math . pow ( b . clientX - a . clientX , 2 ) + Math . pow ( b . clientY - a . clientY , 2 ) ) } , getPinchData : function ( a ) { a = this . getDistance ( a . touches ) ; return { distance : a , delta : this . last . distance - a , scale : a / this . start . distance } } , CLASS _NAME : "OpenLayers.Handler.Pinch" } ) ; OpenLayers . Control . NavToolbar = OpenLayers . Class ( OpenLayers . Control . Panel , { initialize : function ( a ) { OpenLayers . Control . Panel . prototype . initialize . apply ( this , [ a ] ) ; this . addControls ( [ new OpenLayers . Control . Navigation , new OpenLayers . Control . ZoomBox ] ) } , draw : function ( ) { var a = OpenLayers . Control . Panel . prototype . draw . apply ( this , arguments ) ; null === this . defaultControl && ( this . defaultControl = this . controls [ 0 ] ) ; return a } , CLASS _NAME : "OpenLayers.Control.NavToolbar" } ) ; OpenLayers . Strategy . Refresh = OpenLayers . Class ( OpenLayers . Strategy , { force : ! 1 , interval : 0 , timer : null , activate : function ( ) { var a = OpenLayers . Strategy . prototype . activate . call ( this ) ; a && ( ! 0 === this . layer . visibility && this . start ( ) , this . layer . events . on ( { visibilitychanged : this . reset , scope : this } ) ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Strategy . prototype . deactivate . call ( this ) ; a && this . stop ( ) ; return a } , reset : function ( ) { ! 0 === this . layer . visibility ? this . start ( ) : this . stop ( ) } , start : function ( ) { this . interval && ( "number" ===
typeof this . interval && 0 < this . interval ) && ( this . timer = window . setInterval ( OpenLayers . Function . bind ( this . refresh , this ) , this . interval ) ) } , refresh : function ( ) { this . layer && ( this . layer . refresh && "function" == typeof this . layer . refresh ) && this . layer . refresh ( { force : this . force } ) } , stop : function ( ) { null !== this . timer && ( window . clearInterval ( this . timer ) , this . timer = null ) } , CLASS _NAME : "OpenLayers.Strategy.Refresh" } ) ; OpenLayers . Layer . ArcGIS93Rest = OpenLayers . Class ( OpenLayers . Layer . Grid , { DEFAULT _PARAMS : { format : "png" } , isBaseLayer : ! 0 , initialize : function ( a , b , c , d ) { var e = [ ] , c = OpenLayers . Util . upperCaseObject ( c ) ; e . push ( a , b , c , d ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , e ) ; OpenLayers . Util . applyDefaults ( this . params , OpenLayers . Util . upperCaseObject ( this . DEFAULT _PARAMS ) ) ; if ( this . params . TRANSPARENT && "true" == this . params . TRANSPARENT . toString ( ) . toLowerCase ( ) ) { if ( null == d || ! d . isBaseLayer ) this . isBaseLayer = ! 1 ; "jpg" == this . params . FORMAT &&
( this . params . FORMAT = OpenLayers . Util . alphaHack ( ) ? "gif" : "png" ) } } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . ArcGIS93Rest ( this . name , this . url , this . params , this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = this . projection . getCode ( ) . split ( ":" ) , b = b [ b . length - 1 ] , c = this . getImageSize ( ) , a = { BBOX : a . toBBOX ( ) , SIZE : c . w + "," + c . h , F : "image" , BBOXSR : b , IMAGESR : b } ; if ( this . layerDefs ) { var b = [ ] , d ; for ( d in this . layerDefs ) this . layerDefs . hasOwnProperty ( d ) &&
this . layerDefs [ d ] && ( b . push ( d ) , b . push ( ":" ) , b . push ( this . layerDefs [ d ] ) , b . push ( ";" ) ) ; 0 < b . length && ( a . LAYERDEFS = b . join ( "" ) ) } return this . getFullRequestString ( a ) } , setLayerFilter : function ( a , b ) { this . layerDefs || ( this . layerDefs = { } ) ; b ? this . layerDefs [ a ] = b : delete this . layerDefs [ a ] } , clearLayerFilter : function ( a ) { a ? delete this . layerDefs [ a ] : delete this . layerDefs } , mergeNewParams : function ( a ) { a = [ OpenLayers . Util . upperCaseObject ( a ) ] ; return OpenLayers . Layer . Grid . prototype . mergeNewParams . apply ( this , a ) } , CLASS _NAME : "OpenLayers.Layer.ArcGIS93Rest" } ) ; OpenLayers . Format . WKT = OpenLayers . Class ( OpenLayers . Format , { initialize : function ( a ) { this . regExes = { typeStr : /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/ , spaces : /\s+/ , parenComma : /\)\s*,\s*\(/ , doubleParenComma : /\)\s*\)\s*,\s*\(\s*\(/ , trimParens : /^\s*\(?(.*?)\)?\s*$/ } ; OpenLayers . Format . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { var b , c , a = a . replace ( /[\n\r]/g , " " ) ; if ( c = this . regExes . typeStr . exec ( a ) ) if ( a = c [ 1 ] . toLowerCase ( ) , c = c [ 2 ] , this . parse [ a ] && ( b = this . parse [ a ] . apply ( this , [ c ] ) ) , this . internalProjection && this . externalProjection ) if ( b &&
"OpenLayers.Feature.Vector" == b . CLASS _NAME ) b . geometry . transform ( this . externalProjection , this . internalProjection ) ; else if ( b && "geometrycollection" != a && "object" == typeof b ) { a = 0 ; for ( c = b . length ; a < c ; a ++ ) b [ a ] . geometry . transform ( this . externalProjection , this . internalProjection ) } return b } , write : function ( a ) { var b , c ; a . constructor == Array ? c = ! 0 : ( a = [ a ] , c = ! 1 ) ; var d = [ ] ; c && d . push ( "GEOMETRYCOLLECTION(" ) ; for ( var e = 0 , f = a . length ; e < f ; ++ e ) c && 0 < e && d . push ( "," ) , b = a [ e ] . geometry , d . push ( this . extractGeometry ( b ) ) ; c && d . push ( ")" ) ; return d . join ( "" ) } ,
extractGeometry : function ( a ) { var b = a . CLASS _NAME . split ( "." ) [ 2 ] . toLowerCase ( ) ; if ( ! this . extract [ b ] ) return null ; this . internalProjection && this . externalProjection && ( a = a . clone ( ) , a . transform ( this . internalProjection , this . externalProjection ) ) ; return ( "collection" == b ? "GEOMETRYCOLLECTION" : b . toUpperCase ( ) ) + "(" + this . extract [ b ] . apply ( this , [ a ] ) + ")" } , extract : { point : function ( a ) { return a . x + " " + a . y } , multipoint : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( "(" + this . extract . point . apply ( this , [ a . components [ c ] ] ) +
")" ) ; return b . join ( "," ) } , linestring : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extract . point . apply ( this , [ a . components [ c ] ] ) ) ; return b . join ( "," ) } , multilinestring : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( "(" + this . extract . linestring . apply ( this , [ a . components [ c ] ] ) + ")" ) ; return b . join ( "," ) } , polygon : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( "(" + this . extract . linestring . apply ( this , [ a . components [ c ] ] ) + ")" ) ; return b . join ( "," ) } , multipolygon : function ( a ) { for ( var b =
[ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( "(" + this . extract . polygon . apply ( this , [ a . components [ c ] ] ) + ")" ) ; return b . join ( "," ) } , collection : function ( a ) { for ( var b = [ ] , c = 0 , d = a . components . length ; c < d ; ++ c ) b . push ( this . extractGeometry . apply ( this , [ a . components [ c ] ] ) ) ; return b . join ( "," ) } } , parse : { point : function ( a ) { a = OpenLayers . String . trim ( a ) . split ( this . regExes . spaces ) ; return new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Point ( a [ 0 ] , a [ 1 ] ) ) } , multipoint : function ( a ) { for ( var b = OpenLayers . String . trim ( a ) . split ( "," ) ,
c = [ ] , d = 0 , e = b . length ; d < e ; ++ d ) a = b [ d ] . replace ( this . regExes . trimParens , "$1" ) , c . push ( this . parse . point . apply ( this , [ a ] ) . geometry ) ; return new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . MultiPoint ( c ) ) } , linestring : function ( a ) { for ( var a = OpenLayers . String . trim ( a ) . split ( "," ) , b = [ ] , c = 0 , d = a . length ; c < d ; ++ c ) b . push ( this . parse . point . apply ( this , [ a [ c ] ] ) . geometry ) ; return new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . LineString ( b ) ) } , multilinestring : function ( a ) { for ( var b = OpenLayers . String . trim ( a ) . split ( this . regExes . parenComma ) ,
c = [ ] , d = 0 , e = b . length ; d < e ; ++ d ) a = b [ d ] . replace ( this . regExes . trimParens , "$1" ) , c . push ( this . parse . linestring . apply ( this , [ a ] ) . geometry ) ; return new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . MultiLineString ( c ) ) } , polygon : function ( a ) { for ( var b , a = OpenLayers . String . trim ( a ) . split ( this . regExes . parenComma ) , c = [ ] , d = 0 , e = a . length ; d < e ; ++ d ) b = a [ d ] . replace ( this . regExes . trimParens , "$1" ) , b = this . parse . linestring . apply ( this , [ b ] ) . geometry , b = new OpenLayers . Geometry . LinearRing ( b . components ) , c . push ( b ) ; return new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Polygon ( c ) ) } ,
multipolygon : function ( a ) { for ( var b = OpenLayers . String . trim ( a ) . split ( this . regExes . doubleParenComma ) , c = [ ] , d = 0 , e = b . length ; d < e ; ++ d ) a = b [ d ] . replace ( this . regExes . trimParens , "$1" ) , c . push ( this . parse . polygon . apply ( this , [ a ] ) . geometry ) ; return new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . MultiPolygon ( c ) ) } , geometrycollection : function ( a ) { for ( var a = a . replace ( /,\s*([A-Za-z])/g , "|$1" ) , a = OpenLayers . String . trim ( a ) . split ( "|" ) , b = [ ] , c = 0 , d = a . length ; c < d ; ++ c ) b . push ( OpenLayers . Format . WKT . prototype . read . apply ( this , [ a [ c ] ] ) ) ;
return b } } , CLASS _NAME : "OpenLayers.Format.WKT" } ) ; OpenLayers . Handler . Hover = OpenLayers . Class ( OpenLayers . Handler , { delay : 500 , pixelTolerance : null , stopMove : ! 1 , px : null , timerId : null , mousemove : function ( a ) { this . passesTolerance ( a . xy ) && ( this . clearTimer ( ) , this . callback ( "move" , [ a ] ) , this . px = a . xy , a = OpenLayers . Util . extend ( { } , a ) , this . timerId = window . setTimeout ( OpenLayers . Function . bind ( this . delayedCall , this , a ) , this . delay ) ) ; return ! this . stopMove } , mouseout : function ( a ) { OpenLayers . Util . mouseLeft ( a , this . map . viewPortDiv ) && ( this . clearTimer ( ) , this . callback ( "move" , [ a ] ) ) ; return ! 0 } ,
passesTolerance : function ( a ) { var b = ! 0 ; this . pixelTolerance && this . px && Math . sqrt ( Math . pow ( this . px . x - a . x , 2 ) + Math . pow ( this . px . y - a . y , 2 ) ) < this . pixelTolerance && ( b = ! 1 ) ; return b } , clearTimer : function ( ) { null != this . timerId && ( window . clearTimeout ( this . timerId ) , this . timerId = null ) } , delayedCall : function ( a ) { this . callback ( "pause" , [ a ] ) } , deactivate : function ( ) { var a = ! 1 ; OpenLayers . Handler . prototype . deactivate . apply ( this , arguments ) && ( this . clearTimer ( ) , a = ! 0 ) ; return a } , CLASS _NAME : "OpenLayers.Handler.Hover" } ) ; OpenLayers . Control . GetFeature = OpenLayers . Class ( OpenLayers . Control , { protocol : null , multipleKey : null , toggleKey : null , modifiers : null , multiple : ! 1 , click : ! 0 , single : ! 0 , clickout : ! 0 , toggle : ! 1 , clickTolerance : 5 , hover : ! 1 , box : ! 1 , maxFeatures : 10 , features : null , hoverFeature : null , handlerOptions : null , handlers : null , hoverResponse : null , filterType : OpenLayers . Filter . Spatial . BBOX , initialize : function ( a ) { a . handlerOptions = a . handlerOptions || { } ; OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . features = { } ; this . handlers =
{ } ; this . click && ( this . handlers . click = new OpenLayers . Handler . Click ( this , { click : this . selectClick } , this . handlerOptions . click || { } ) ) ; this . box && ( this . handlers . box = new OpenLayers . Handler . Box ( this , { done : this . selectBox } , OpenLayers . Util . extend ( this . handlerOptions . box , { boxDivClassName : "olHandlerBoxSelectFeature" } ) ) ) ; this . hover && ( this . handlers . hover = new OpenLayers . Handler . Hover ( this , { move : this . cancelHover , pause : this . selectHover } , OpenLayers . Util . extend ( this . handlerOptions . hover , { delay : 250 , pixelTolerance : 2 } ) ) ) } ,
activate : function ( ) { if ( ! this . active ) for ( var a in this . handlers ) this . handlers [ a ] . activate ( ) ; return OpenLayers . Control . prototype . activate . apply ( this , arguments ) } , deactivate : function ( ) { if ( this . active ) for ( var a in this . handlers ) this . handlers [ a ] . deactivate ( ) ; return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) } , selectClick : function ( a ) { var b = this . pixelToBounds ( a . xy ) ; this . setModifiers ( a ) ; this . request ( b , { single : this . single } ) } , selectBox : function ( a ) { var b ; if ( a instanceof OpenLayers . Bounds ) b =
this . map . getLonLatFromPixel ( { x : a . left , y : a . bottom } ) , a = this . map . getLonLatFromPixel ( { x : a . right , y : a . top } ) , b = new OpenLayers . Bounds ( b . lon , b . lat , a . lon , a . lat ) ; else { if ( this . click ) return ; b = this . pixelToBounds ( a ) } this . setModifiers ( this . handlers . box . dragHandler . evt ) ; this . request ( b ) } , selectHover : function ( a ) { this . request ( this . pixelToBounds ( a . xy ) , { single : ! 0 , hover : ! 0 } ) } , cancelHover : function ( ) { this . hoverResponse && ( this . protocol . abort ( this . hoverResponse ) , this . hoverResponse = null , OpenLayers . Element . removeClass ( this . map . viewPortDiv ,
"olCursorWait" ) ) } , request : function ( a , b ) { var b = b || { } , c = new OpenLayers . Filter . Spatial ( { type : this . filterType , value : a } ) ; OpenLayers . Element . addClass ( this . map . viewPortDiv , "olCursorWait" ) ; c = this . protocol . read ( { maxFeatures : ! 0 == b . single ? this . maxFeatures : void 0 , filter : c , callback : function ( c ) { c . success ( ) && ( c . features . length ? ! 0 == b . single ? this . selectBestFeature ( c . features , a . getCenterLonLat ( ) , b ) : this . select ( c . features ) : b . hover ? this . hoverSelect ( ) : ( this . events . triggerEvent ( "clickout" ) , this . clickout && this . unselectAll ( ) ) ) ;
OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olCursorWait" ) } , scope : this } ) ; ! 0 == b . hover && ( this . hoverResponse = c ) } , selectBestFeature : function ( a , b , c ) { c = c || { } ; if ( a . length ) { for ( var b = new OpenLayers . Geometry . Point ( b . lon , b . lat ) , d , e , f , g = Number . MAX _VALUE , h = 0 ; h < a . length && ! ( d = a [ h ] , d . geometry && ( f = b . distanceTo ( d . geometry , { edge : ! 1 } ) , f < g && ( g = f , e = d , 0 == g ) ) ) ; ++ h ) ; ! 0 == c . hover ? this . hoverSelect ( e ) : this . select ( e || a ) } } , setModifiers : function ( a ) { this . modifiers = { multiple : this . multiple || this . multipleKey && a [ this . multipleKey ] ,
toggle : this . toggle || this . toggleKey && a [ this . toggleKey ] } } , select : function ( a ) { ! this . modifiers . multiple && ! this . modifiers . toggle && this . unselectAll ( ) ; OpenLayers . Util . isArray ( a ) || ( a = [ a ] ) ; var b = this . events . triggerEvent ( "beforefeaturesselected" , { features : a } ) ; if ( ! 1 !== b ) { for ( var c = [ ] , d , e = 0 , f = a . length ; e < f ; ++ e ) d = a [ e ] , this . features [ d . fid || d . id ] ? this . modifiers . toggle && this . unselect ( this . features [ d . fid || d . id ] ) : ( b = this . events . triggerEvent ( "beforefeatureselected" , { feature : d } ) , ! 1 !== b && ( this . features [ d . fid || d . id ] = d ,
c . push ( d ) , this . events . triggerEvent ( "featureselected" , { feature : d } ) ) ) ; this . events . triggerEvent ( "featuresselected" , { features : c } ) } } , hoverSelect : function ( a ) { var b = a ? a . fid || a . id : null , c = this . hoverFeature ? this . hoverFeature . fid || this . hoverFeature . id : null ; c && c != b && ( this . events . triggerEvent ( "outfeature" , { feature : this . hoverFeature } ) , this . hoverFeature = null ) ; b && b != c && ( this . events . triggerEvent ( "hoverfeature" , { feature : a } ) , this . hoverFeature = a ) } , unselect : function ( a ) { delete this . features [ a . fid || a . id ] ; this . events . triggerEvent ( "featureunselected" ,
{ feature : a } ) } , unselectAll : function ( ) { for ( var a in this . features ) this . unselect ( this . features [ a ] ) } , setMap : function ( a ) { for ( var b in this . handlers ) this . handlers [ b ] . setMap ( a ) ; OpenLayers . Control . prototype . setMap . apply ( this , arguments ) } , pixelToBounds : function ( a ) { var b = a . add ( - this . clickTolerance / 2 , this . clickTolerance / 2 ) , a = a . add ( this . clickTolerance / 2 , - this . clickTolerance / 2 ) , b = this . map . getLonLatFromPixel ( b ) , a = this . map . getLonLatFromPixel ( a ) ; return new OpenLayers . Bounds ( b . lon , b . lat , a . lon , a . lat ) } , CLASS _NAME : "OpenLayers.Control.GetFeature" } ) ; OpenLayers . Format . QueryStringFilter = function ( ) { function a ( a ) { a = a . replace ( /%/g , "\\%" ) ; a = a . replace ( /\\\\\.(\*)?/g , function ( a , b ) { return b ? a : "\\\\_" } ) ; a = a . replace ( /\\\\\.\*/g , "\\\\%" ) ; a = a . replace ( /(\\)?\.(\*)?/g , function ( a , b , c ) { return b || c ? a : "_" } ) ; a = a . replace ( /(\\)?\.\*/g , function ( a , b ) { return b ? a : "%" } ) ; a = a . replace ( /\\\./g , "." ) ; return a = a . replace ( /(\\)?\\\*/g , function ( a , b ) { return b ? a : "*" } ) } var b = { } ; b [ OpenLayers . Filter . Comparison . EQUAL _TO ] = "eq" ; b [ OpenLayers . Filter . Comparison . NOT _EQUAL _TO ] = "ne" ; b [ OpenLayers . Filter . Comparison . LESS _THAN ] =
"lt" ; b [ OpenLayers . Filter . Comparison . LESS _THAN _OR _EQUAL _TO ] = "lte" ; b [ OpenLayers . Filter . Comparison . GREATER _THAN ] = "gt" ; b [ OpenLayers . Filter . Comparison . GREATER _THAN _OR _EQUAL _TO ] = "gte" ; b [ OpenLayers . Filter . Comparison . LIKE ] = "ilike" ; return OpenLayers . Class ( OpenLayers . Format , { wildcarded : ! 1 , srsInBBOX : ! 1 , write : function ( c , d ) { var d = d || { } , e = c . CLASS _NAME , e = e . substring ( e . lastIndexOf ( "." ) + 1 ) ; switch ( e ) { case "Spatial" : switch ( c . type ) { case OpenLayers . Filter . Spatial . BBOX : d . bbox = c . value . toArray ( ) ; this . srsInBBOX && c . projection &&
d . bbox . push ( c . projection . getCode ( ) ) ; break ; case OpenLayers . Filter . Spatial . DWITHIN : d . tolerance = c . distance ; case OpenLayers . Filter . Spatial . WITHIN : d . lon = c . value . x ; d . lat = c . value . y ; break ; default : OpenLayers . Console . warn ( "Unknown spatial filter type " + c . type ) } break ; case "Comparison" : e = b [ c . type ] ; if ( void 0 !== e ) { var f = c . value ; c . type == OpenLayers . Filter . Comparison . LIKE && ( f = a ( f ) , this . wildcarded && ( f = "%" + f + "%" ) ) ; d [ c . property + "__" + e ] = f ; d . queryable = d . queryable || [ ] ; d . queryable . push ( c . property ) } else OpenLayers . Console . warn ( "Unknown comparison filter type " +
c . type ) ; break ; case "Logical" : if ( c . type === OpenLayers . Filter . Logical . AND ) { e = 0 ; for ( f = c . filters . length ; e < f ; e ++ ) d = this . write ( c . filters [ e ] , d ) } else OpenLayers . Console . warn ( "Unsupported logical filter type " + c . type ) ; break ; default : OpenLayers . Console . warn ( "Unknown filter type " + e ) } return d } , CLASS _NAME : "OpenLayers.Format.QueryStringFilter" } ) } ( ) ; OpenLayers . Control . MousePosition = OpenLayers . Class ( OpenLayers . Control , { autoActivate : ! 0 , element : null , prefix : "" , separator : ", " , suffix : "" , numDigits : 5 , granularity : 10 , emptyString : null , lastXy : null , displayProjection : null , destroy : function ( ) { this . deactivate ( ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , activate : function ( ) { return OpenLayers . Control . prototype . activate . apply ( this , arguments ) ? ( this . map . events . register ( "mousemove" , this , this . redraw ) , this . map . events . register ( "mouseout" , this , this . reset ) ,
this . redraw ( ) , ! 0 ) : ! 1 } , deactivate : function ( ) { return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) ? ( this . map . events . unregister ( "mousemove" , this , this . redraw ) , this . map . events . unregister ( "mouseout" , this , this . reset ) , this . element . innerHTML = "" , ! 0 ) : ! 1 } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; this . element || ( this . div . left = "" , this . div . top = "" , this . element = this . div ) ; return this . div } , redraw : function ( a ) { var b ; if ( null == a ) this . reset ( ) ; else if ( null == this . lastXy || Math . abs ( a . xy . x -
this . lastXy . x ) > this . granularity || Math . abs ( a . xy . y - this . lastXy . y ) > this . granularity ) this . lastXy = a . xy ; else if ( b = this . map . getLonLatFromPixel ( a . xy ) ) this . displayProjection && b . transform ( this . map . getProjectionObject ( ) , this . displayProjection ) , this . lastXy = a . xy , a = this . formatOutput ( b ) , a != this . element . innerHTML && ( this . element . innerHTML = a ) } , reset : function ( ) { null != this . emptyString && ( this . element . innerHTML = this . emptyString ) } , formatOutput : function ( a ) { var b = parseInt ( this . numDigits ) ; return this . prefix + a . lon . toFixed ( b ) +
this . separator + a . lat . toFixed ( b ) + this . suffix } , CLASS _NAME : "OpenLayers.Control.MousePosition" } ) ; OpenLayers . Control . Geolocate = OpenLayers . Class ( OpenLayers . Control , { geolocation : navigator . geolocation , bind : ! 0 , watch : ! 1 , geolocationOptions : null , destroy : function ( ) { this . deactivate ( ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , activate : function ( ) { return ! this . geolocation ? ( this . events . triggerEvent ( "locationuncapable" ) , ! 1 ) : OpenLayers . Control . prototype . activate . apply ( this , arguments ) ? ( this . watch ? this . watchId = this . geolocation . watchPosition ( OpenLayers . Function . bind ( this . geolocate , this ) , OpenLayers . Function . bind ( this . failure ,
this ) , this . geolocationOptions ) : this . getCurrentLocation ( ) , ! 0 ) : ! 1 } , deactivate : function ( ) { this . active && null !== this . watchId && this . geolocation . clearWatch ( this . watchId ) ; return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) } , geolocate : function ( a ) { var b = ( new OpenLayers . LonLat ( a . coords . longitude , a . coords . latitude ) ) . transform ( new OpenLayers . Projection ( "EPSG:4326" ) , this . map . getProjectionObject ( ) ) ; this . bind && this . map . setCenter ( b ) ; this . events . triggerEvent ( "locationupdated" , { position : a , point : new OpenLayers . Geometry . Point ( b . lon ,
b . lat ) } ) } , getCurrentLocation : function ( ) { if ( ! this . active || this . watch ) return ! 1 ; this . geolocation . getCurrentPosition ( OpenLayers . Function . bind ( this . geolocate , this ) , OpenLayers . Function . bind ( this . failure , this ) , this . geolocationOptions ) ; return ! 0 } , failure : function ( a ) { this . events . triggerEvent ( "locationfailed" , { error : a } ) } , CLASS _NAME : "OpenLayers.Control.Geolocate" } ) ; OpenLayers . Tile . UTFGrid = OpenLayers . Class ( OpenLayers . Tile , { url : null , utfgridResolution : 2 , json : null , format : null , destroy : function ( ) { this . clear ( ) ; OpenLayers . Tile . prototype . destroy . apply ( this , arguments ) } , draw : function ( ) { var a = OpenLayers . Tile . prototype . draw . apply ( this , arguments ) ; if ( a ) if ( this . isLoading ? ( this . abortLoading ( ) , this . events . triggerEvent ( "reload" ) ) : ( this . isLoading = ! 0 , this . events . triggerEvent ( "loadstart" ) ) , this . url = this . layer . getURL ( this . bounds ) , this . layer . useJSONP ) { var b = new OpenLayers . Protocol . Script ( { url : this . url ,
callback : function ( a ) { this . isLoading = false ; this . events . triggerEvent ( "loadend" ) ; this . json = a . data } , scope : this } ) ; b . read ( ) ; this . request = b } else this . request = OpenLayers . Request . GET ( { url : this . url , callback : function ( a ) { this . isLoading = false ; this . events . triggerEvent ( "loadend" ) ; a . status === 200 && this . parseData ( a . responseText ) } , scope : this } ) ; else this . unload ( ) ; return a } , abortLoading : function ( ) { this . request && ( this . request . abort ( ) , delete this . request ) ; this . isLoading = ! 1 } , getFeatureInfo : function ( a , b ) { var c = null ; if ( this . json ) { var d =
this . getFeatureId ( a , b ) ; null !== d && ( c = { id : d , data : this . json . data [ d ] } ) } return c } , getFeatureId : function ( a , b ) { var c = null ; if ( this . json ) { var d = this . utfgridResolution , d = this . indexFromCharCode ( this . json . grid [ Math . floor ( b / d ) ] . charCodeAt ( Math . floor ( a / d ) ) ) , e = this . json . keys ; ! isNaN ( d ) && d in e && ( c = e [ d ] ) } return c } , indexFromCharCode : function ( a ) { 93 <= a && a -- ; 35 <= a && a -- ; return a - 32 } , parseData : function ( a ) { this . format || ( this . format = new OpenLayers . Format . JSON ) ; this . json = this . format . read ( a ) } , clear : function ( ) { this . json = null } ,
CLASS _NAME : "OpenLayers.Tile.UTFGrid" } ) ; OpenLayers . Control . NavigationHistory = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _TOGGLE , previous : null , previousOptions : null , next : null , nextOptions : null , limit : 50 , autoActivate : ! 0 , clearOnDeactivate : ! 1 , registry : null , nextStack : null , previousStack : null , listeners : null , restoring : ! 1 , initialize : function ( a ) { OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . registry = OpenLayers . Util . extend ( { moveend : this . getState } , this . registry ) ; a = { trigger : OpenLayers . Function . bind ( this . previousTrigger ,
this ) , displayClass : this . displayClass + " " + this . displayClass + "Previous" } ; OpenLayers . Util . extend ( a , this . previousOptions ) ; this . previous = new OpenLayers . Control . Button ( a ) ; a = { trigger : OpenLayers . Function . bind ( this . nextTrigger , this ) , displayClass : this . displayClass + " " + this . displayClass + "Next" } ; OpenLayers . Util . extend ( a , this . nextOptions ) ; this . next = new OpenLayers . Control . Button ( a ) ; this . clear ( ) } , onPreviousChange : function ( a ) { a && ! this . previous . active ? this . previous . activate ( ) : ! a && this . previous . active && this . previous . deactivate ( ) } ,
onNextChange : function ( a ) { a && ! this . next . active ? this . next . activate ( ) : ! a && this . next . active && this . next . deactivate ( ) } , destroy : function ( ) { OpenLayers . Control . prototype . destroy . apply ( this ) ; this . previous . destroy ( ) ; this . next . destroy ( ) ; this . deactivate ( ) ; for ( var a in this ) this [ a ] = null } , setMap : function ( a ) { this . map = a ; this . next . setMap ( a ) ; this . previous . setMap ( a ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; this . next . draw ( ) ; this . previous . draw ( ) } , previousTrigger : function ( ) { var a = this . previousStack . shift ( ) ,
b = this . previousStack . shift ( ) ; void 0 != b ? ( this . nextStack . unshift ( a ) , this . previousStack . unshift ( b ) , this . restoring = ! 0 , this . restore ( b ) , this . restoring = ! 1 , this . onNextChange ( this . nextStack [ 0 ] , this . nextStack . length ) , this . onPreviousChange ( this . previousStack [ 1 ] , this . previousStack . length - 1 ) ) : this . previousStack . unshift ( a ) ; return b } , nextTrigger : function ( ) { var a = this . nextStack . shift ( ) ; void 0 != a && ( this . previousStack . unshift ( a ) , this . restoring = ! 0 , this . restore ( a ) , this . restoring = ! 1 , this . onNextChange ( this . nextStack [ 0 ] ,
this . nextStack . length ) , this . onPreviousChange ( this . previousStack [ 1 ] , this . previousStack . length - 1 ) ) ; return a } , clear : function ( ) { this . previousStack = [ ] ; this . previous . deactivate ( ) ; this . nextStack = [ ] ; this . next . deactivate ( ) } , getState : function ( ) { return { center : this . map . getCenter ( ) , resolution : this . map . getResolution ( ) , projection : this . map . getProjectionObject ( ) , units : this . map . getProjectionObject ( ) . getUnits ( ) || this . map . units || this . map . baseLayer . units } } , restore : function ( a ) { var b , c ; if ( this . map . getProjectionObject ( ) ==
a . projection ) c = this . map . getZoomForResolution ( a . resolution ) , b = a . center ; else { b = a . center . clone ( ) ; b . transform ( a . projection , this . map . getProjectionObject ( ) ) ; c = a . units ; var d = this . map . getProjectionObject ( ) . getUnits ( ) || this . map . units || this . map . baseLayer . units ; c = this . map . getZoomForResolution ( ( c && d ? OpenLayers . INCHES _PER _UNIT [ c ] / OpenLayers . INCHES _PER _UNIT [ d ] : 1 ) * a . resolution ) } this . map . setCenter ( b , c ) } , setListeners : function ( ) { this . listeners = { } ; for ( var a in this . registry ) this . listeners [ a ] = OpenLayers . Function . bind ( function ( ) { if ( ! this . restoring ) { this . previousStack . unshift ( this . registry [ a ] . apply ( this ,
arguments ) ) ; if ( 1 < this . previousStack . length ) this . onPreviousChange ( this . previousStack [ 1 ] , this . previousStack . length - 1 ) ; this . previousStack . length > this . limit + 1 && this . previousStack . pop ( ) ; 0 < this . nextStack . length && ( this . nextStack = [ ] , this . onNextChange ( null , 0 ) ) } return ! 0 } , this ) } , activate : function ( ) { var a = ! 1 ; if ( this . map && OpenLayers . Control . prototype . activate . apply ( this ) ) { null == this . listeners && this . setListeners ( ) ; for ( var b in this . listeners ) this . map . events . register ( b , this , this . listeners [ b ] ) ; a = ! 0 ; 0 == this . previousStack . length &&
this . initStack ( ) } return a } , initStack : function ( ) { this . map . getCenter ( ) && this . listeners . moveend ( ) } , deactivate : function ( ) { var a = ! 1 ; if ( this . map && OpenLayers . Control . prototype . deactivate . apply ( this ) ) { for ( var b in this . listeners ) this . map . events . unregister ( b , this , this . listeners [ b ] ) ; this . clearOnDeactivate && this . clear ( ) ; a = ! 0 } return a } , CLASS _NAME : "OpenLayers.Control.NavigationHistory" } ) ; OpenLayers . Protocol . HTTP = OpenLayers . Class ( OpenLayers . Protocol , { url : null , headers : null , params : null , callback : null , scope : null , readWithPOST : ! 1 , updateWithPOST : ! 1 , deleteWithPOST : ! 1 , wildcarded : ! 1 , srsInBBOX : ! 1 , initialize : function ( a ) { a = a || { } ; this . params = { } ; this . headers = { } ; OpenLayers . Protocol . prototype . initialize . apply ( this , arguments ) ; if ( ! this . filterToParams && OpenLayers . Format . QueryStringFilter ) { var b = new OpenLayers . Format . QueryStringFilter ( { wildcarded : this . wildcarded , srsInBBOX : this . srsInBBOX } ) ; this . filterToParams =
function ( a , d ) { return b . write ( a , d ) } } } , destroy : function ( ) { this . headers = this . params = null ; OpenLayers . Protocol . prototype . destroy . apply ( this ) } , read : function ( a ) { OpenLayers . Protocol . prototype . read . apply ( this , arguments ) ; a = a || { } ; a . params = OpenLayers . Util . applyDefaults ( a . params , this . options . params ) ; a = OpenLayers . Util . applyDefaults ( a , this . options ) ; a . filter && this . filterToParams && ( a . params = this . filterToParams ( a . filter , a . params ) ) ; var b = void 0 !== a . readWithPOST ? a . readWithPOST : this . readWithPOST , c = new OpenLayers . Protocol . Response ( { requestType : "read" } ) ;
b ? ( b = a . headers || { } , b [ "Content-Type" ] = "application/x-www-form-urlencoded" , c . priv = OpenLayers . Request . POST ( { url : a . url , callback : this . createCallback ( this . handleRead , c , a ) , data : OpenLayers . Util . getParameterString ( a . params ) , headers : b } ) ) : c . priv = OpenLayers . Request . GET ( { url : a . url , callback : this . createCallback ( this . handleRead , c , a ) , params : a . params , headers : a . headers } ) ; return c } , handleRead : function ( a , b ) { this . handleResponse ( a , b ) } , create : function ( a , b ) { var b = OpenLayers . Util . applyDefaults ( b , this . options ) , c = new OpenLayers . Protocol . Response ( { reqFeatures : a ,
requestType : "create" } ) ; c . priv = OpenLayers . Request . POST ( { url : b . url , callback : this . createCallback ( this . handleCreate , c , b ) , headers : b . headers , data : this . format . write ( a ) } ) ; return c } , handleCreate : function ( a , b ) { this . handleResponse ( a , b ) } , update : function ( a , b ) { var b = b || { } , c = b . url || a . url || this . options . url + "/" + a . fid , b = OpenLayers . Util . applyDefaults ( b , this . options ) , d = new OpenLayers . Protocol . Response ( { reqFeatures : a , requestType : "update" } ) ; d . priv = OpenLayers . Request [ this . updateWithPOST ? "POST" : "PUT" ] ( { url : c , callback : this . createCallback ( this . handleUpdate ,
d , b ) , headers : b . headers , data : this . format . write ( a ) } ) ; return d } , handleUpdate : function ( a , b ) { this . handleResponse ( a , b ) } , "delete" : function ( a , b ) { var b = b || { } , c = b . url || a . url || this . options . url + "/" + a . fid , b = OpenLayers . Util . applyDefaults ( b , this . options ) , d = new OpenLayers . Protocol . Response ( { reqFeatures : a , requestType : "delete" } ) , e = this . deleteWithPOST ? "POST" : "DELETE" , c = { url : c , callback : this . createCallback ( this . handleDelete , d , b ) , headers : b . headers } ; this . deleteWithPOST && ( c . data = this . format . write ( a ) ) ; d . priv = OpenLayers . Request [ e ] ( c ) ;
return d } , handleDelete : function ( a , b ) { this . handleResponse ( a , b ) } , handleResponse : function ( a , b ) { var c = a . priv ; b . callback && ( 200 <= c . status && 300 > c . status ? ( "delete" != a . requestType && ( a . features = this . parseFeatures ( c ) ) , a . code = OpenLayers . Protocol . Response . SUCCESS ) : a . code = OpenLayers . Protocol . Response . FAILURE , b . callback . call ( b . scope , a ) ) } , parseFeatures : function ( a ) { var b = a . responseXML ; if ( ! b || ! b . documentElement ) b = a . responseText ; return ! b || 0 >= b . length ? null : this . format . read ( b ) } , commit : function ( a , b ) { function c ( a ) { for ( var b =
a . features ? a . features . length : 0 , c = Array ( b ) , e = 0 ; e < b ; ++ e ) c [ e ] = a . features [ e ] . fid ; o . insertIds = c ; d . apply ( this , [ a ] ) } function d ( a ) { this . callUserCallback ( a , b ) ; n = n && a . success ( ) ; f ++ ; f >= m && b . callback && ( o . code = n ? OpenLayers . Protocol . Response . SUCCESS : OpenLayers . Protocol . Response . FAILURE , b . callback . apply ( b . scope , [ o ] ) ) } var b = OpenLayers . Util . applyDefaults ( b , this . options ) , e = [ ] , f = 0 , g = { } ; g [ OpenLayers . State . INSERT ] = [ ] ; g [ OpenLayers . State . UPDATE ] = [ ] ; g [ OpenLayers . State . DELETE ] = [ ] ; for ( var h , i , j = [ ] , k = 0 , l = a . length ; k < l ; ++ k ) if ( h =
a [ k ] , i = g [ h . state ] ) i . push ( h ) , j . push ( h ) ; var m = ( 0 < g [ OpenLayers . State . INSERT ] . length ? 1 : 0 ) + g [ OpenLayers . State . UPDATE ] . length + g [ OpenLayers . State . DELETE ] . length , n = ! 0 , o = new OpenLayers . Protocol . Response ( { reqFeatures : j } ) ; h = g [ OpenLayers . State . INSERT ] ; 0 < h . length && e . push ( this . create ( h , OpenLayers . Util . applyDefaults ( { callback : c , scope : this } , b . create ) ) ) ; h = g [ OpenLayers . State . UPDATE ] ; for ( k = h . length - 1 ; 0 <= k ; -- k ) e . push ( this . update ( h [ k ] , OpenLayers . Util . applyDefaults ( { callback : d , scope : this } , b . update ) ) ) ; h = g [ OpenLayers . State . DELETE ] ;
for ( k = h . length - 1 ; 0 <= k ; -- k ) e . push ( this [ "delete" ] ( h [ k ] , OpenLayers . Util . applyDefaults ( { callback : d , scope : this } , b [ "delete" ] ) ) ) ; return e } , abort : function ( a ) { a && a . priv . abort ( ) } , callUserCallback : function ( a , b ) { var c = b [ a . requestType ] ; c && c . callback && c . callback . call ( c . scope , a ) } , CLASS _NAME : "OpenLayers.Protocol.HTTP" } ) ; OpenLayers . Strategy . Cluster = OpenLayers . Class ( OpenLayers . Strategy , { distance : 20 , threshold : null , features : null , clusters : null , clustering : ! 1 , resolution : null , activate : function ( ) { var a = OpenLayers . Strategy . prototype . activate . call ( this ) ; if ( a ) this . layer . events . on ( { beforefeaturesadded : this . cacheFeatures , moveend : this . cluster , scope : this } ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Strategy . prototype . deactivate . call ( this ) ; a && ( this . clearCache ( ) , this . layer . events . un ( { beforefeaturesadded : this . cacheFeatures , moveend : this . cluster ,
scope : this } ) ) ; return a } , cacheFeatures : function ( a ) { var b = ! 0 ; this . clustering || ( this . clearCache ( ) , this . features = a . features , this . cluster ( ) , b = ! 1 ) ; return b } , clearCache : function ( ) { this . features = null } , cluster : function ( a ) { if ( ( ! a || a . zoomChanged ) && this . features ) if ( a = this . layer . map . getResolution ( ) , a != this . resolution || ! this . clustersExist ( ) ) { this . resolution = a ; for ( var a = [ ] , b , c , d , e = 0 ; e < this . features . length ; ++ e ) if ( b = this . features [ e ] , b . geometry ) { c = ! 1 ; for ( var f = a . length - 1 ; 0 <= f ; -- f ) if ( d = a [ f ] , this . shouldCluster ( d , b ) ) { this . addToCluster ( d ,
b ) ; c = ! 0 ; break } c || a . push ( this . createCluster ( this . features [ e ] ) ) } this . layer . removeAllFeatures ( ) ; if ( 0 < a . length ) { if ( 1 < this . threshold ) { b = a . slice ( ) ; a = [ ] ; e = 0 ; for ( d = b . length ; e < d ; ++ e ) c = b [ e ] , c . attributes . count < this . threshold ? Array . prototype . push . apply ( a , c . cluster ) : a . push ( c ) } this . clustering = ! 0 ; this . layer . addFeatures ( a ) ; this . clustering = ! 1 } this . clusters = a } } , clustersExist : function ( ) { var a = ! 1 ; if ( this . clusters && 0 < this . clusters . length && this . clusters . length == this . layer . features . length ) for ( var a = ! 0 , b = 0 ; b < this . clusters . length ; ++ b ) if ( this . clusters [ b ] !=
this . layer . features [ b ] ) { a = ! 1 ; break } return a } , shouldCluster : function ( a , b ) { var c = a . geometry . getBounds ( ) . getCenterLonLat ( ) , d = b . geometry . getBounds ( ) . getCenterLonLat ( ) ; return Math . sqrt ( Math . pow ( c . lon - d . lon , 2 ) + Math . pow ( c . lat - d . lat , 2 ) ) / this . resolution <= this . distance } , addToCluster : function ( a , b ) { a . cluster . push ( b ) ; a . attributes . count += 1 } , createCluster : function ( a ) { var b = a . geometry . getBounds ( ) . getCenterLonLat ( ) , b = new OpenLayers . Feature . Vector ( new OpenLayers . Geometry . Point ( b . lon , b . lat ) , { count : 1 } ) ; b . cluster = [ a ] ;
return b } , CLASS _NAME : "OpenLayers.Strategy.Cluster" } ) ; OpenLayers . Strategy . Filter = OpenLayers . Class ( OpenLayers . Strategy , { filter : null , cache : null , caching : ! 1 , activate : function ( ) { var a = OpenLayers . Strategy . prototype . activate . apply ( this , arguments ) ; a && ( this . cache = [ ] , this . layer . events . on ( { beforefeaturesadded : this . handleAdd , beforefeaturesremoved : this . handleRemove , scope : this } ) ) ; return a } , deactivate : function ( ) { this . cache = null ; this . layer && this . layer . events && this . layer . events . un ( { beforefeaturesadded : this . handleAdd , beforefeaturesremoved : this . handleRemove , scope : this } ) ;
return OpenLayers . Strategy . prototype . deactivate . apply ( this , arguments ) } , handleAdd : function ( a ) { if ( ! this . caching && this . filter ) { var b = a . features ; a . features = [ ] ; for ( var c , d = 0 , e = b . length ; d < e ; ++ d ) c = b [ d ] , this . filter . evaluate ( c ) ? a . features . push ( c ) : this . cache . push ( c ) } } , handleRemove : function ( ) { this . caching || ( this . cache = [ ] ) } , setFilter : function ( a ) { this . filter = a ; a = this . cache ; this . cache = [ ] ; this . handleAdd ( { features : this . layer . features } ) ; 0 < this . cache . length && ( this . caching = ! 0 , this . layer . removeFeatures ( this . cache . slice ( ) ) ,
this . caching = ! 1 ) ; 0 < a . length && ( a = { features : a } , this . handleAdd ( a ) , 0 < a . features . length && ( this . caching = ! 0 , this . layer . addFeatures ( a . features ) , this . caching = ! 1 ) ) } , CLASS _NAME : "OpenLayers.Strategy.Filter" } ) ; OpenLayers . Protocol . SOS = function ( a ) { var a = OpenLayers . Util . applyDefaults ( a , OpenLayers . Protocol . SOS . DEFAULTS ) , b = OpenLayers . Protocol . SOS [ "v" + a . version . replace ( /\./g , "_" ) ] ; if ( ! b ) throw "Unsupported SOS version: " + a . version ; return new b ( a ) } ; OpenLayers . Protocol . SOS . DEFAULTS = { version : "1.0.0" } ; OpenLayers . Format . WFSDescribeFeatureType = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { xsd : "http://www.w3.org/2001/XMLSchema" } , readers : { xsd : { schema : function ( a , b ) { var c = [ ] , d = { } ; this . readChildNodes ( a , { complexTypes : c , customTypes : d } ) ; for ( var e = a . attributes , f , g , h = 0 , i = e . length ; h < i ; ++ h ) f = e [ h ] , g = f . name , 0 == g . indexOf ( "xmlns" ) ? this . setNamespace ( g . split ( ":" ) [ 1 ] || "" , f . value ) : b [ g ] = f . value ; b . featureTypes = c ; b . targetPrefix = this . namespaceAlias [ b . targetNamespace ] ; h = 0 ; for ( i = c . length ; h < i ; ++ h ) e = c [ h ] , f = d [ e . typeName ] ,
d [ e . typeName ] && ( e . typeName = f . name ) } , complexType : function ( a , b ) { var c = { typeName : a . getAttribute ( "name" ) } ; this . readChildNodes ( a , c ) ; b . complexTypes . push ( c ) } , complexContent : function ( a , b ) { this . readChildNodes ( a , b ) } , extension : function ( a , b ) { this . readChildNodes ( a , b ) } , sequence : function ( a , b ) { var c = { elements : [ ] } ; this . readChildNodes ( a , c ) ; b . properties = c . elements } , element : function ( a , b ) { if ( b . elements ) { for ( var c = { } , d = a . attributes , e , f = 0 , g = d . length ; f < g ; ++ f ) e = d [ f ] , c [ e . name ] = e . value ; d = c . type ; d || ( d = { } , this . readChildNodes ( a ,
d ) , c . restriction = d , c . type = d . base ) ; c . localType = ( d . base || d ) . split ( ":" ) . pop ( ) ; b . elements . push ( c ) } b . complexTypes && ( d = a . getAttribute ( "type" ) , c = d . split ( ":" ) . pop ( ) , b . customTypes [ c ] = { name : a . getAttribute ( "name" ) , type : d } ) } , simpleType : function ( a , b ) { this . readChildNodes ( a , b ) } , restriction : function ( a , b ) { b . base = a . getAttribute ( "base" ) ; this . readRestriction ( a , b ) } } } , readRestriction : function ( a , b ) { for ( var c = a . childNodes , d , e , f = 0 , g = c . length ; f < g ; ++ f ) d = c [ f ] , 1 == d . nodeType && ( e = d . nodeName . split ( ":" ) . pop ( ) , d = d . getAttribute ( "value" ) ,
b [ e ] ? ( "string" == typeof b [ e ] && ( b [ e ] = [ b [ e ] ] ) , b [ e ] . push ( d ) ) : b [ e ] = d ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; return b } , CLASS _NAME : "OpenLayers.Format.WFSDescribeFeatureType" } ) ; OpenLayers . Format . GeoRSS = OpenLayers . Class ( OpenLayers . Format . XML , { rssns : "http://backend.userland.com/rss2" , featureNS : "http://mapserver.gis.umn.edu/mapserver" , georssns : "http://www.georss.org/georss" , geons : "http://www.w3.org/2003/01/geo/wgs84_pos#" , featureTitle : "Untitled" , featureDescription : "No Description" , gmlParser : null , xy : ! 1 , createGeometryFromItem : function ( a ) { var b = this . getElementsByTagNameNS ( a , this . georssns , "point" ) , c = this . getElementsByTagNameNS ( a , this . geons , "lat" ) , d = this . getElementsByTagNameNS ( a ,
this . geons , "long" ) , e = this . getElementsByTagNameNS ( a , this . georssns , "line" ) , f = this . getElementsByTagNameNS ( a , this . georssns , "polygon" ) , g = this . getElementsByTagNameNS ( a , this . georssns , "where" ) , a = this . getElementsByTagNameNS ( a , this . georssns , "box" ) ; if ( 0 < b . length || 0 < c . length && 0 < d . length ) { 0 < b . length ? ( c = OpenLayers . String . trim ( b [ 0 ] . firstChild . nodeValue ) . split ( /\s+/ ) , 2 != c . length && ( c = OpenLayers . String . trim ( b [ 0 ] . firstChild . nodeValue ) . split ( /\s*,\s*/ ) ) ) : c = [ parseFloat ( c [ 0 ] . firstChild . nodeValue ) , parseFloat ( d [ 0 ] . firstChild . nodeValue ) ] ;
var h = new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 0 ] ) } else if ( 0 < e . length ) { c = OpenLayers . String . trim ( this . getChildValue ( e [ 0 ] ) ) . split ( /\s+/ ) ; d = [ ] ; e = 0 ; for ( f = c . length ; e < f ; e += 2 ) b = new OpenLayers . Geometry . Point ( c [ e + 1 ] , c [ e ] ) , d . push ( b ) ; h = new OpenLayers . Geometry . LineString ( d ) } else if ( 0 < f . length ) { c = OpenLayers . String . trim ( this . getChildValue ( f [ 0 ] ) ) . split ( /\s+/ ) ; d = [ ] ; e = 0 ; for ( f = c . length ; e < f ; e += 2 ) b = new OpenLayers . Geometry . Point ( c [ e + 1 ] , c [ e ] ) , d . push ( b ) ; h = new OpenLayers . Geometry . Polygon ( [ new OpenLayers . Geometry . LinearRing ( d ) ] ) } else 0 <
g . length ? ( this . gmlParser || ( this . gmlParser = new OpenLayers . Format . GML ( { xy : this . xy } ) ) , h = this . gmlParser . parseFeature ( g [ 0 ] ) . geometry ) : 0 < a . length && ( c = OpenLayers . String . trim ( a [ 0 ] . firstChild . nodeValue ) . split ( /\s+/ ) , d = [ ] , 3 < c . length && ( b = new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 0 ] ) , d . push ( b ) , b = new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 2 ] ) , d . push ( b ) , b = new OpenLayers . Geometry . Point ( c [ 3 ] , c [ 2 ] ) , d . push ( b ) , b = new OpenLayers . Geometry . Point ( c [ 3 ] , c [ 0 ] ) , d . push ( b ) , b = new OpenLayers . Geometry . Point ( c [ 1 ] , c [ 0 ] ) , d . push ( b ) ) , h = new OpenLayers . Geometry . Polygon ( [ new OpenLayers . Geometry . LinearRing ( d ) ] ) ) ;
h && ( this . internalProjection && this . externalProjection ) && h . transform ( this . externalProjection , this . internalProjection ) ; return h } , createFeatureFromItem : function ( a ) { var b = this . createGeometryFromItem ( a ) , c = this . _getChildValue ( a , "*" , "title" , this . featureTitle ) , d = this . _getChildValue ( a , "*" , "description" , this . _getChildValue ( a , "*" , "content" , this . _getChildValue ( a , "*" , "summary" , this . featureDescription ) ) ) , e = this . _getChildValue ( a , "*" , "link" ) ; if ( ! e ) try { e = this . getElementsByTagNameNS ( a , "*" , "link" ) [ 0 ] . getAttribute ( "href" ) } catch ( f ) { e =
null } a = this . _getChildValue ( a , "*" , "id" , null ) ; b = new OpenLayers . Feature . Vector ( b , { title : c , description : d , link : e } ) ; b . fid = a ; return b } , _getChildValue : function ( a , b , c , d ) { return ( a = this . getElementsByTagNameNS ( a , b , c ) ) && a [ 0 ] && a [ 0 ] . firstChild && a [ 0 ] . firstChild . nodeValue ? this . getChildValue ( a [ 0 ] ) : void 0 == d ? "" : d } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var b = null , b = this . getElementsByTagNameNS ( a , "*" , "item" ) ; 0 == b . length && ( b = this . getElementsByTagNameNS ( a , "*" , "entry" ) ) ;
for ( var a = b . length , c = Array ( a ) , d = 0 ; d < a ; d ++ ) c [ d ] = this . createFeatureFromItem ( b [ d ] ) ; return c } , write : function ( a ) { var b ; if ( OpenLayers . Util . isArray ( a ) ) { b = this . createElementNS ( this . rssns , "rss" ) ; for ( var c = 0 , d = a . length ; c < d ; c ++ ) b . appendChild ( this . createFeatureXML ( a [ c ] ) ) } else b = this . createFeatureXML ( a ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) } , createFeatureXML : function ( a ) { var b = this . buildGeometryNode ( a . geometry ) , c = this . createElementNS ( this . rssns , "item" ) , d = this . createElementNS ( this . rssns , "title" ) ;
d . appendChild ( this . createTextNode ( a . attributes . title ? a . attributes . title : "" ) ) ; var e = this . createElementNS ( this . rssns , "description" ) ; e . appendChild ( this . createTextNode ( a . attributes . description ? a . attributes . description : "" ) ) ; c . appendChild ( d ) ; c . appendChild ( e ) ; a . attributes . link && ( d = this . createElementNS ( this . rssns , "link" ) , d . appendChild ( this . createTextNode ( a . attributes . link ) ) , c . appendChild ( d ) ) ; for ( var f in a . attributes ) "link" == f || ( "title" == f || "description" == f ) || ( d = this . createTextNode ( a . attributes [ f ] ) , e = f , - 1 !=
f . search ( ":" ) && ( e = f . split ( ":" ) [ 1 ] ) , e = this . createElementNS ( this . featureNS , "feature:" + e ) , e . appendChild ( d ) , c . appendChild ( e ) ) ; c . appendChild ( b ) ; return c } , buildGeometryNode : function ( a ) { this . internalProjection && this . externalProjection && ( a = a . clone ( ) , a . transform ( this . internalProjection , this . externalProjection ) ) ; var b ; if ( "OpenLayers.Geometry.Polygon" == a . CLASS _NAME ) b = this . createElementNS ( this . georssns , "georss:polygon" ) , b . appendChild ( this . buildCoordinatesNode ( a . components [ 0 ] ) ) ; else if ( "OpenLayers.Geometry.LineString" ==
a . CLASS _NAME ) b = this . createElementNS ( this . georssns , "georss:line" ) , b . appendChild ( this . buildCoordinatesNode ( a ) ) ; else if ( "OpenLayers.Geometry.Point" == a . CLASS _NAME ) b = this . createElementNS ( this . georssns , "georss:point" ) , b . appendChild ( this . buildCoordinatesNode ( a ) ) ; else throw "Couldn't parse " + a . CLASS _NAME ; return b } , buildCoordinatesNode : function ( a ) { var b = null ; a . components && ( b = a . components ) ; if ( b ) { for ( var a = b . length , c = Array ( a ) , d = 0 ; d < a ; d ++ ) c [ d ] = b [ d ] . y + " " + b [ d ] . x ; b = c . join ( " " ) } else b = a . y + " " + a . x ; return this . createTextNode ( b ) } ,
CLASS _NAME : "OpenLayers.Format.GeoRSS" } ) ; OpenLayers . Format . WPSCapabilities = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.0.0" , CLASS _NAME : "OpenLayers.Format.WPSCapabilities" } ) ; OpenLayers . Format . WPSCapabilities . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ows : "http://www.opengis.net/ows/1.1" , wps : "http://www.opengis.net/wps/1.0.0" , xlink : "http://www.w3.org/1999/xlink" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) } , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ;
var b = { } ; this . readNode ( a , b ) ; return b } , readers : { wps : { Capabilities : function ( a , b ) { this . readChildNodes ( a , b ) } , ProcessOfferings : function ( a , b ) { b . processOfferings = { } ; this . readChildNodes ( a , b . processOfferings ) } , Process : function ( a , b ) { var c = { processVersion : this . getAttributeNS ( a , this . namespaces . wps , "processVersion" ) } ; this . readChildNodes ( a , c ) ; b [ c . identifier ] = c } , Languages : function ( a , b ) { b . languages = [ ] ; this . readChildNodes ( a , b . languages ) } , Default : function ( a , b ) { var c = { isDefault : ! 0 } ; this . readChildNodes ( a , c ) ; b . push ( c ) } ,
Supported : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . push ( c ) } } , ows : OpenLayers . Format . OWSCommon . v1 _1 _0 . prototype . readers . ows } , CLASS _NAME : "OpenLayers.Format.WPSCapabilities.v1_0_0" } ) ; OpenLayers . Control . PinchZoom = OpenLayers . Class ( OpenLayers . Control , { type : OpenLayers . Control . TYPE _TOOL , containerCenter : null , pinchOrigin : null , currentCenter : null , autoActivate : ! 0 , initialize : function ( a ) { OpenLayers . Control . prototype . initialize . apply ( this , arguments ) ; this . handler = new OpenLayers . Handler . Pinch ( this , { start : this . pinchStart , move : this . pinchMove , done : this . pinchDone } , this . handlerOptions ) } , activate : function ( ) { var a = OpenLayers . Control . prototype . activate . apply ( this , arguments ) ; a && ( this . map . events . on ( { moveend : this . updateContainerCenter ,
scope : this } ) , this . updateContainerCenter ( ) ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) ; this . map && this . map . events && this . map . events . un ( { moveend : this . updateContainerCenter , scope : this } ) ; return a } , updateContainerCenter : function ( ) { var a = this . map . layerContainerDiv ; this . containerCenter = { x : parseInt ( a . style . left , 10 ) + 50 , y : parseInt ( a . style . top , 10 ) + 50 } } , pinchStart : function ( a ) { this . currentCenter = this . pinchOrigin = a . xy } , pinchMove : function ( a , b ) { var c = b . scale ,
d = this . containerCenter , e = this . pinchOrigin , f = a . xy , g = Math . round ( f . x - e . x + ( c - 1 ) * ( d . x - e . x ) ) , d = Math . round ( f . y - e . y + ( c - 1 ) * ( d . y - e . y ) ) ; this . applyTransform ( "translate(" + g + "px, " + d + "px) scale(" + c + ")" ) ; this . currentCenter = f } , applyTransform : function ( a ) { var b = this . map . layerContainerDiv . style ; b [ "-webkit-transform" ] = a ; b [ "-moz-transform" ] = a } , pinchDone : function ( a , b , c ) { this . applyTransform ( "" ) ; a = this . map . getZoomForResolution ( this . map . getResolution ( ) / c . scale , ! 0 ) ; if ( a !== this . map . getZoom ( ) || ! this . currentCenter . equals ( this . pinchOrigin ) ) { var b =
this . map . getResolutionForZoom ( a ) , c = this . map . getLonLatFromPixel ( this . pinchOrigin ) , d = this . currentCenter , e = this . map . getSize ( ) ; c . lon += b * ( e . w / 2 - d . x ) ; c . lat -= b * ( e . h / 2 - d . y ) ; this . map . div . clientWidth = this . map . div . clientWidth ; this . map . setCenter ( c , a ) } } , CLASS _NAME : "OpenLayers.Control.PinchZoom" } ) ; OpenLayers . Control . TouchNavigation = OpenLayers . Class ( OpenLayers . Control , { dragPan : null , dragPanOptions : null , pinchZoom : null , pinchZoomOptions : null , clickHandlerOptions : null , documentDrag : ! 1 , autoActivate : ! 0 , initialize : function ( a ) { this . handlers = { } ; OpenLayers . Control . prototype . initialize . apply ( this , arguments ) } , destroy : function ( ) { this . deactivate ( ) ; this . dragPan && this . dragPan . destroy ( ) ; this . dragPan = null ; this . pinchZoom && ( this . pinchZoom . destroy ( ) , delete this . pinchZoom ) ; OpenLayers . Control . prototype . destroy . apply ( this ,
arguments ) } , activate : function ( ) { return OpenLayers . Control . prototype . activate . apply ( this , arguments ) ? ( this . dragPan . activate ( ) , this . handlers . click . activate ( ) , this . pinchZoom . activate ( ) , ! 0 ) : ! 1 } , deactivate : function ( ) { return OpenLayers . Control . prototype . deactivate . apply ( this , arguments ) ? ( this . dragPan . deactivate ( ) , this . handlers . click . deactivate ( ) , this . pinchZoom . deactivate ( ) , ! 0 ) : ! 1 } , draw : function ( ) { var a = { click : this . defaultClick , dblclick : this . defaultDblClick } , b = OpenLayers . Util . extend ( { "double" : ! 0 , stopDouble : ! 0 ,
pixelTolerance : 2 } , this . clickHandlerOptions ) ; this . handlers . click = new OpenLayers . Handler . Click ( this , a , b ) ; this . dragPan = new OpenLayers . Control . DragPan ( OpenLayers . Util . extend ( { map : this . map , documentDrag : this . documentDrag } , this . dragPanOptions ) ) ; this . dragPan . draw ( ) ; this . pinchZoom = new OpenLayers . Control . PinchZoom ( OpenLayers . Util . extend ( { map : this . map } , this . pinchZoomOptions ) ) } , defaultClick : function ( a ) { a . lastTouches && 2 == a . lastTouches . length && this . map . zoomOut ( ) } , defaultDblClick : function ( a ) { this . map . setCenter ( this . map . getLonLatFromViewPortPx ( a . xy ) ,
this . map . zoom + 1 ) } , CLASS _NAME : "OpenLayers.Control.TouchNavigation" } ) ; OpenLayers . Style2 = OpenLayers . Class ( { id : null , name : null , title : null , description : null , layerName : null , isDefault : ! 1 , rules : null , initialize : function ( a ) { OpenLayers . Util . extend ( this , a ) ; this . id = OpenLayers . Util . createUniqueID ( this . CLASS _NAME + "_" ) } , destroy : function ( ) { for ( var a = 0 , b = this . rules . length ; a < b ; a ++ ) this . rules [ a ] . destroy ( ) ; delete this . rules } , clone : function ( ) { var a = OpenLayers . Util . extend ( { } , this ) ; if ( this . rules ) { a . rules = [ ] ; for ( var b = 0 , c = this . rules . length ; b < c ; ++ b ) a . rules . push ( this . rules [ b ] . clone ( ) ) } return new OpenLayers . Style2 ( a ) } ,
CLASS _NAME : "OpenLayers.Style2" } ) ; OpenLayers . Format . WFS = OpenLayers . Class ( OpenLayers . Format . GML , { layer : null , wfsns : "http://www.opengis.net/wfs" , ogcns : "http://www.opengis.net/ogc" , initialize : function ( a , b ) { OpenLayers . Format . GML . prototype . initialize . apply ( this , [ a ] ) ; this . layer = b ; this . layer . featureNS && ( this . featureNS = this . layer . featureNS ) ; this . layer . options . geometry _column && ( this . geometryName = this . layer . options . geometry _column ) ; this . layer . options . typename && ( this . featureName = this . layer . options . typename ) } , write : function ( a ) { var b = this . createElementNS ( this . wfsns ,
"wfs:Transaction" ) ; b . setAttribute ( "version" , "1.0.0" ) ; b . setAttribute ( "service" , "WFS" ) ; for ( var c = 0 ; c < a . length ; c ++ ) switch ( a [ c ] . state ) { case OpenLayers . State . INSERT : b . appendChild ( this . insert ( a [ c ] ) ) ; break ; case OpenLayers . State . UPDATE : b . appendChild ( this . update ( a [ c ] ) ) ; break ; case OpenLayers . State . DELETE : b . appendChild ( this . remove ( a [ c ] ) ) } return OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) } , createFeatureXML : function ( a ) { var b = this . buildGeometryNode ( a . geometry ) , c = this . createElementNS ( this . featureNS , "feature:" +
this . geometryName ) ; c . appendChild ( b ) ; b = this . createElementNS ( this . featureNS , "feature:" + this . featureName ) ; b . appendChild ( c ) ; for ( var d in a . attributes ) { var c = this . createTextNode ( a . attributes [ d ] ) , e = d ; - 1 != d . search ( ":" ) && ( e = d . split ( ":" ) [ 1 ] ) ; e = this . createElementNS ( this . featureNS , "feature:" + e ) ; e . appendChild ( c ) ; b . appendChild ( e ) } return b } , insert : function ( a ) { var b = this . createElementNS ( this . wfsns , "wfs:Insert" ) ; b . appendChild ( this . createFeatureXML ( a ) ) ; return b } , update : function ( a ) { a . fid || OpenLayers . Console . userError ( OpenLayers . i18n ( "noFID" ) ) ;
var b = this . createElementNS ( this . wfsns , "wfs:Update" ) ; b . setAttribute ( "typeName" , this . featurePrefix + ":" + this . featureName ) ; b . setAttribute ( "xmlns:" + this . featurePrefix , this . featureNS ) ; var c = this . createElementNS ( this . wfsns , "wfs:Property" ) , d = this . createElementNS ( this . wfsns , "wfs:Name" ) , e = this . createTextNode ( this . geometryName ) ; d . appendChild ( e ) ; c . appendChild ( d ) ; d = this . createElementNS ( this . wfsns , "wfs:Value" ) ; e = this . buildGeometryNode ( a . geometry ) ; a . layer && e . setAttribute ( "srsName" , a . layer . projection . getCode ( ) ) ;
d . appendChild ( e ) ; c . appendChild ( d ) ; b . appendChild ( c ) ; for ( var f in a . attributes ) c = this . createElementNS ( this . wfsns , "wfs:Property" ) , d = this . createElementNS ( this . wfsns , "wfs:Name" ) , d . appendChild ( this . createTextNode ( f ) ) , c . appendChild ( d ) , d = this . createElementNS ( this . wfsns , "wfs:Value" ) , d . appendChild ( this . createTextNode ( a . attributes [ f ] ) ) , c . appendChild ( d ) , b . appendChild ( c ) ; c = this . createElementNS ( this . ogcns , "ogc:Filter" ) ; f = this . createElementNS ( this . ogcns , "ogc:FeatureId" ) ; f . setAttribute ( "fid" , a . fid ) ; c . appendChild ( f ) ;
b . appendChild ( c ) ; return b } , remove : function ( a ) { if ( ! a . fid ) return OpenLayers . Console . userError ( OpenLayers . i18n ( "noFID" ) ) , ! 1 ; var b = this . createElementNS ( this . wfsns , "wfs:Delete" ) ; b . setAttribute ( "typeName" , this . featurePrefix + ":" + this . featureName ) ; b . setAttribute ( "xmlns:" + this . featurePrefix , this . featureNS ) ; var c = this . createElementNS ( this . ogcns , "ogc:Filter" ) , d = this . createElementNS ( this . ogcns , "ogc:FeatureId" ) ; d . setAttribute ( "fid" , a . fid ) ; c . appendChild ( d ) ; b . appendChild ( c ) ; return b } , destroy : function ( ) { this . layer =
null } , CLASS _NAME : "OpenLayers.Format.WFS" } ) ; OpenLayers . Format . SLD . v1 _0 _0 _GeoServer = OpenLayers . Class ( OpenLayers . Format . SLD . v1 _0 _0 , { version : "1.0.0" , profile : "GeoServer" , readers : OpenLayers . Util . applyDefaults ( { sld : OpenLayers . Util . applyDefaults ( { Priority : function ( a , b ) { var c = this . readers . ogc . _expression . call ( this , a ) ; c && ( b . priority = c ) } , VendorOption : function ( a , b ) { b . vendorOptions || ( b . vendorOptions = { } ) ; b . vendorOptions [ a . getAttribute ( "name" ) ] = this . getChildValue ( a ) } } , OpenLayers . Format . SLD . v1 _0 _0 . prototype . readers . sld ) } , OpenLayers . Format . SLD . v1 _0 _0 . prototype . readers ) ,
writers : OpenLayers . Util . applyDefaults ( { sld : OpenLayers . Util . applyDefaults ( { Priority : function ( a ) { return this . writers . sld . _OGCExpression . call ( this , "sld:Priority" , a ) } , VendorOption : function ( a ) { return this . createElementNSPlus ( "sld:VendorOption" , { attributes : { name : a . name } , value : a . value } ) } , TextSymbolizer : function ( a ) { var b = OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers . sld . TextSymbolizer . apply ( this , arguments ) ; ! 1 !== a . graphic && ( a . externalGraphic || a . graphicName ) && this . writeNode ( "Graphic" , a , b ) ; "priority" in a &&
this . writeNode ( "Priority" , a . priority , b ) ; return this . addVendorOptions ( b , a ) } , PointSymbolizer : function ( a ) { return this . addVendorOptions ( OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers . sld . PointSymbolizer . apply ( this , arguments ) , a ) } , LineSymbolizer : function ( a ) { return this . addVendorOptions ( OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers . sld . LineSymbolizer . apply ( this , arguments ) , a ) } , PolygonSymbolizer : function ( a ) { return this . addVendorOptions ( OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers . sld . PolygonSymbolizer . apply ( this ,
arguments ) , a ) } } , OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers . sld ) } , OpenLayers . Format . SLD . v1 _0 _0 . prototype . writers ) , addVendorOptions : function ( a , b ) { if ( b . vendorOptions ) for ( var c in b . vendorOptions ) this . writeNode ( "VendorOption" , { name : c , value : b . vendorOptions [ c ] } , a ) ; return a } , CLASS _NAME : "OpenLayers.Format.SLD.v1_0_0_GeoServer" } ) ; OpenLayers . Layer . Boxes = OpenLayers . Class ( OpenLayers . Layer . Markers , { drawMarker : function ( a ) { var b = this . map . getLayerPxFromLonLat ( { lon : a . bounds . left , lat : a . bounds . top } ) , c = this . map . getLayerPxFromLonLat ( { lon : a . bounds . right , lat : a . bounds . bottom } ) ; null == c || null == b ? a . display ( ! 1 ) : ( b = a . draw ( b , { w : Math . max ( 1 , c . x - b . x ) , h : Math . max ( 1 , c . y - b . y ) } ) , a . drawn || ( this . div . appendChild ( b ) , a . drawn = ! 0 ) ) } , removeMarker : function ( a ) { OpenLayers . Util . removeItem ( this . markers , a ) ; null != a . div && a . div . parentNode == this . div && this . div . removeChild ( a . div ) } ,
CLASS _NAME : "OpenLayers.Layer.Boxes" } ) ; OpenLayers . Format . WFSCapabilities . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . WFSCapabilities . v1 , { readers : { wfs : OpenLayers . Util . applyDefaults ( { Service : function ( a , b ) { b . service = { } ; this . readChildNodes ( a , b . service ) } , Fees : function ( a , b ) { var c = this . getChildValue ( a ) ; c && "none" != c . toLowerCase ( ) && ( b . fees = c ) } , AccessConstraints : function ( a , b ) { var c = this . getChildValue ( a ) ; c && "none" != c . toLowerCase ( ) && ( b . accessConstraints = c ) } , OnlineResource : function ( a , b ) { var c = this . getChildValue ( a ) ; c && "none" != c . toLowerCase ( ) && ( b . onlineResource =
c ) } , Keywords : function ( a , b ) { var c = this . getChildValue ( a ) ; c && "none" != c . toLowerCase ( ) && ( b . keywords = c . split ( ", " ) ) } , Capability : function ( a , b ) { b . capability = { } ; this . readChildNodes ( a , b . capability ) } , Request : function ( a , b ) { b . request = { } ; this . readChildNodes ( a , b . request ) } , GetFeature : function ( a , b ) { b . getfeature = { href : { } , formats : [ ] } ; this . readChildNodes ( a , b . getfeature ) } , ResultFormat : function ( a , b ) { for ( var c = a . childNodes , d , e = 0 ; e < c . length ; e ++ ) d = c [ e ] , 1 == d . nodeType && b . formats . push ( d . nodeName ) } , DCPType : function ( a , b ) { this . readChildNodes ( a ,
b ) } , HTTP : function ( a , b ) { this . readChildNodes ( a , b . href ) } , Get : function ( a , b ) { b . get = a . getAttribute ( "onlineResource" ) } , Post : function ( a , b ) { b . post = a . getAttribute ( "onlineResource" ) } , SRS : function ( a , b ) { var c = this . getChildValue ( a ) ; c && ( b . srs = c ) } } , OpenLayers . Format . WFSCapabilities . v1 . prototype . readers . wfs ) } , CLASS _NAME : "OpenLayers.Format.WFSCapabilities.v1_0_0" } ) ; OpenLayers . Format . WMSCapabilities = OpenLayers . Class ( OpenLayers . Format . XML . VersionedOGC , { defaultVersion : "1.1.1" , profile : null , CLASS _NAME : "OpenLayers.Format.WMSCapabilities" } ) ; OpenLayers . Format . WMSCapabilities . v1 = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { wms : "http://www.opengis.net/wms" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , defaultPrefix : "wms" , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var b = a ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var c = { } ; this . readNode ( a , c ) ; void 0 === c . service && ( a = new OpenLayers . Format . OGCExceptionReport , c . error = a . read ( b ) ) ; return c } , readers : { wms : { Service : function ( a ,
b ) { b . service = { } ; this . readChildNodes ( a , b . service ) } , Name : function ( a , b ) { b . name = this . getChildValue ( a ) } , Title : function ( a , b ) { b . title = this . getChildValue ( a ) } , Abstract : function ( a , b ) { b [ "abstract" ] = this . getChildValue ( a ) } , BoundingBox : function ( a ) { var b = { } ; b . bbox = [ parseFloat ( a . getAttribute ( "minx" ) ) , parseFloat ( a . getAttribute ( "miny" ) ) , parseFloat ( a . getAttribute ( "maxx" ) ) , parseFloat ( a . getAttribute ( "maxy" ) ) ] ; a = { x : parseFloat ( a . getAttribute ( "resx" ) ) , y : parseFloat ( a . getAttribute ( "resy" ) ) } ; if ( ! isNaN ( a . x ) || ! isNaN ( a . y ) ) b . res =
a ; return b } , OnlineResource : function ( a , b ) { b . href = this . getAttributeNS ( a , this . namespaces . xlink , "href" ) } , ContactInformation : function ( a , b ) { b . contactInformation = { } ; this . readChildNodes ( a , b . contactInformation ) } , ContactPersonPrimary : function ( a , b ) { b . personPrimary = { } ; this . readChildNodes ( a , b . personPrimary ) } , ContactPerson : function ( a , b ) { b . person = this . getChildValue ( a ) } , ContactOrganization : function ( a , b ) { b . organization = this . getChildValue ( a ) } , ContactPosition : function ( a , b ) { b . position = this . getChildValue ( a ) } , ContactAddress : function ( a ,
b ) { b . contactAddress = { } ; this . readChildNodes ( a , b . contactAddress ) } , AddressType : function ( a , b ) { b . type = this . getChildValue ( a ) } , Address : function ( a , b ) { b . address = this . getChildValue ( a ) } , City : function ( a , b ) { b . city = this . getChildValue ( a ) } , StateOrProvince : function ( a , b ) { b . stateOrProvince = this . getChildValue ( a ) } , PostCode : function ( a , b ) { b . postcode = this . getChildValue ( a ) } , Country : function ( a , b ) { b . country = this . getChildValue ( a ) } , ContactVoiceTelephone : function ( a , b ) { b . phone = this . getChildValue ( a ) } , ContactFacsimileTelephone : function ( a ,
b ) { b . fax = this . getChildValue ( a ) } , ContactElectronicMailAddress : function ( a , b ) { b . email = this . getChildValue ( a ) } , Fees : function ( a , b ) { var c = this . getChildValue ( a ) ; c && "none" != c . toLowerCase ( ) && ( b . fees = c ) } , AccessConstraints : function ( a , b ) { var c = this . getChildValue ( a ) ; c && "none" != c . toLowerCase ( ) && ( b . accessConstraints = c ) } , Capability : function ( a , b ) { b . capability = { nestedLayers : [ ] , layers : [ ] } ; this . readChildNodes ( a , b . capability ) } , Request : function ( a , b ) { b . request = { } ; this . readChildNodes ( a , b . request ) } , GetCapabilities : function ( a ,
b ) { b . getcapabilities = { formats : [ ] } ; this . readChildNodes ( a , b . getcapabilities ) } , Format : function ( a , b ) { OpenLayers . Util . isArray ( b . formats ) ? b . formats . push ( this . getChildValue ( a ) ) : b . format = this . getChildValue ( a ) } , DCPType : function ( a , b ) { this . readChildNodes ( a , b ) } , HTTP : function ( a , b ) { this . readChildNodes ( a , b ) } , Get : function ( a , b ) { b . get = { } ; this . readChildNodes ( a , b . get ) ; b . href || ( b . href = b . get . href ) } , Post : function ( a , b ) { b . post = { } ; this . readChildNodes ( a , b . post ) ; b . href || ( b . href = b . get . href ) } , GetMap : function ( a , b ) { b . getmap = { formats : [ ] } ;
this . readChildNodes ( a , b . getmap ) } , GetFeatureInfo : function ( a , b ) { b . getfeatureinfo = { formats : [ ] } ; this . readChildNodes ( a , b . getfeatureinfo ) } , Exception : function ( a , b ) { b . exception = { formats : [ ] } ; this . readChildNodes ( a , b . exception ) } , Layer : function ( a , b ) { var c , d ; b . capability ? ( d = b . capability , c = b ) : d = b ; var e = a . getAttributeNode ( "queryable" ) , f = e && e . specified ? a . getAttribute ( "queryable" ) : null , g = ( e = a . getAttributeNode ( "cascaded" ) ) && e . specified ? a . getAttribute ( "cascaded" ) : null , e = ( e = a . getAttributeNode ( "opaque" ) ) && e . specified ?
a . getAttribute ( "opaque" ) : null , h = a . getAttribute ( "noSubsets" ) , i = a . getAttribute ( "fixedWidth" ) , j = a . getAttribute ( "fixedHeight" ) , k = c || { } , l = OpenLayers . Util . extend ; c = { nestedLayers : [ ] , styles : c ? [ ] . concat ( c . styles ) : [ ] , srs : c ? l ( { } , k . srs ) : { } , metadataURLs : [ ] , bbox : c ? l ( { } , k . bbox ) : { } , llbbox : k . llbbox , dimensions : c ? l ( { } , k . dimensions ) : { } , authorityURLs : c ? l ( { } , k . authorityURLs ) : { } , identifiers : { } , keywords : [ ] , queryable : f && "" !== f ? "1" === f || "true" === f : k . queryable || ! 1 , cascaded : null !== g ? parseInt ( g ) : k . cascaded || 0 , opaque : e ? "1" ===
e || "true" === e : k . opaque || ! 1 , noSubsets : null !== h ? "1" === h || "true" === h : k . noSubsets || ! 1 , fixedWidth : null != i ? parseInt ( i ) : k . fixedWidth || 0 , fixedHeight : null != j ? parseInt ( j ) : k . fixedHeight || 0 , minScale : k . minScale , maxScale : k . maxScale , attribution : k . attribution } ; b . nestedLayers . push ( c ) ; c . capability = d ; this . readChildNodes ( a , c ) ; delete c . capability ; if ( c . name && ( f = c . name . split ( ":" ) , g = d . request , e = g . getfeatureinfo , 0 < f . length && ( c . prefix = f [ 0 ] ) , d . layers . push ( c ) , void 0 === c . formats && ( c . formats = g . getmap . formats ) , void 0 === c . infoFormats &&
e ) ) c . infoFormats = e . formats } , Attribution : function ( a , b ) { b . attribution = { } ; this . readChildNodes ( a , b . attribution ) } , LogoURL : function ( a , b ) { b . logo = { width : a . getAttribute ( "width" ) , height : a . getAttribute ( "height" ) } ; this . readChildNodes ( a , b . logo ) } , Style : function ( a , b ) { var c = { } ; b . styles . push ( c ) ; this . readChildNodes ( a , c ) } , LegendURL : function ( a , b ) { var c = { width : a . getAttribute ( "width" ) , height : a . getAttribute ( "height" ) } ; b . legend = c ; this . readChildNodes ( a , c ) } , MetadataURL : function ( a , b ) { var c = { type : a . getAttribute ( "type" ) } ; b . metadataURLs . push ( c ) ;
this . readChildNodes ( a , c ) } , DataURL : function ( a , b ) { b . dataURL = { } ; this . readChildNodes ( a , b . dataURL ) } , FeatureListURL : function ( a , b ) { b . featureListURL = { } ; this . readChildNodes ( a , b . featureListURL ) } , AuthorityURL : function ( a , b ) { var c = a . getAttribute ( "name" ) , d = { } ; this . readChildNodes ( a , d ) ; b . authorityURLs [ c ] = d . href } , Identifier : function ( a , b ) { var c = a . getAttribute ( "authority" ) ; b . identifiers [ c ] = this . getChildValue ( a ) } , KeywordList : function ( a , b ) { this . readChildNodes ( a , b ) } , SRS : function ( a , b ) { b . srs [ this . getChildValue ( a ) ] = ! 0 } } } ,
CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1" } ) ; OpenLayers . Format . WMSCapabilities . v1 _3 = OpenLayers . Class ( OpenLayers . Format . WMSCapabilities . v1 , { readers : { wms : OpenLayers . Util . applyDefaults ( { WMS _Capabilities : function ( a , b ) { this . readChildNodes ( a , b ) } , LayerLimit : function ( a , b ) { b . layerLimit = parseInt ( this . getChildValue ( a ) ) } , MaxWidth : function ( a , b ) { b . maxWidth = parseInt ( this . getChildValue ( a ) ) } , MaxHeight : function ( a , b ) { b . maxHeight = parseInt ( this . getChildValue ( a ) ) } , BoundingBox : function ( a , b ) { var c = OpenLayers . Format . WMSCapabilities . v1 . prototype . readers . wms . BoundingBox . apply ( this ,
[ a , b ] ) ; c . srs = a . getAttribute ( "CRS" ) ; b . bbox [ c . srs ] = c } , CRS : function ( a , b ) { this . readers . wms . SRS . apply ( this , [ a , b ] ) } , EX _GeographicBoundingBox : function ( a , b ) { b . llbbox = [ ] ; this . readChildNodes ( a , b . llbbox ) } , westBoundLongitude : function ( a , b ) { b [ 0 ] = this . getChildValue ( a ) } , eastBoundLongitude : function ( a , b ) { b [ 2 ] = this . getChildValue ( a ) } , southBoundLatitude : function ( a , b ) { b [ 1 ] = this . getChildValue ( a ) } , northBoundLatitude : function ( a , b ) { b [ 3 ] = this . getChildValue ( a ) } , MinScaleDenominator : function ( a , b ) { b . maxScale = parseFloat ( this . getChildValue ( a ) ) . toPrecision ( 16 ) } ,
MaxScaleDenominator : function ( a , b ) { b . minScale = parseFloat ( this . getChildValue ( a ) ) . toPrecision ( 16 ) } , Dimension : function ( a , b ) { var c = { name : a . getAttribute ( "name" ) . toLowerCase ( ) , units : a . getAttribute ( "units" ) , unitsymbol : a . getAttribute ( "unitSymbol" ) , nearestVal : "1" === a . getAttribute ( "nearestValue" ) , multipleVal : "1" === a . getAttribute ( "multipleValues" ) , "default" : a . getAttribute ( "default" ) || "" , current : "1" === a . getAttribute ( "current" ) , values : this . getChildValue ( a ) . split ( "," ) } ; b . dimensions [ c . name ] = c } , Keyword : function ( a ,
b ) { var c = { value : this . getChildValue ( a ) , vocabulary : a . getAttribute ( "vocabulary" ) } ; b . keywords && b . keywords . push ( c ) } } , OpenLayers . Format . WMSCapabilities . v1 . prototype . readers . wms ) , sld : { UserDefinedSymbolization : function ( a , b ) { this . readers . wms . UserDefinedSymbolization . apply ( this , [ a , b ] ) ; b . userSymbols . inlineFeature = 1 == parseInt ( a . getAttribute ( "InlineFeature" ) ) ; b . userSymbols . remoteWCS = 1 == parseInt ( a . getAttribute ( "RemoteWCS" ) ) } , DescribeLayer : function ( a , b ) { this . readers . wms . DescribeLayer . apply ( this , [ a , b ] ) } , GetLegendGraphic : function ( a ,
b ) { this . readers . wms . GetLegendGraphic . apply ( this , [ a , b ] ) } } } , CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1_3" } ) ; OpenLayers . Layer . Zoomify = OpenLayers . Class ( OpenLayers . Layer . Grid , { size : null , isBaseLayer : ! 0 , standardTileSize : 256 , tileOriginCorner : "tl" , numberOfTiers : 0 , tileCountUpToTier : null , tierSizeInTiles : null , tierImageSize : null , initialize : function ( a , b , c , d ) { this . initializeZoomify ( c ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , [ a , b , c , { } , d ] ) } , initializeZoomify : function ( a ) { var a = a . clone ( ) , b = new OpenLayers . Size ( Math . ceil ( a . w / this . standardTileSize ) , Math . ceil ( a . h / this . standardTileSize ) ) ; this . tierSizeInTiles = [ b ] ;
for ( this . tierImageSize = [ a ] ; a . w > this . standardTileSize || a . h > this . standardTileSize ; ) a = new OpenLayers . Size ( Math . floor ( a . w / 2 ) , Math . floor ( a . h / 2 ) ) , b = new OpenLayers . Size ( Math . ceil ( a . w / this . standardTileSize ) , Math . ceil ( a . h / this . standardTileSize ) ) , this . tierSizeInTiles . push ( b ) , this . tierImageSize . push ( a ) ; this . tierSizeInTiles . reverse ( ) ; this . tierImageSize . reverse ( ) ; this . numberOfTiers = this . tierSizeInTiles . length ; this . tileCountUpToTier = [ 0 ] ; for ( a = 1 ; a < this . numberOfTiers ; a ++ ) this . tileCountUpToTier . push ( this . tierSizeInTiles [ a -
1 ] . w * this . tierSizeInTiles [ a - 1 ] . h + this . tileCountUpToTier [ a - 1 ] ) } , destroy : function ( ) { OpenLayers . Layer . Grid . prototype . destroy . apply ( this , arguments ) ; this . tileCountUpToTier . length = 0 ; this . tierSizeInTiles . length = 0 ; this . tierImageSize . length = 0 } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . Zoomify ( this . name , this . url , this . size , this . options ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = this . map . getResolution ( ) , c = Math . round ( ( a . left - this . tileOrigin . lon ) /
( b * this . tileSize . w ) ) , a = Math . round ( ( this . tileOrigin . lat - a . top ) / ( b * this . tileSize . h ) ) , b = this . map . getZoom ( ) , c = "TileGroup" + Math . floor ( ( c + a * this . tierSizeInTiles [ b ] . w + this . tileCountUpToTier [ b ] ) / 256 ) + "/" + b + "-" + c + "-" + a + ".jpg" , a = this . url ; OpenLayers . Util . isArray ( a ) && ( a = this . selectUrl ( c , a ) ) ; return a + c } , getImageSize : function ( ) { if ( 0 < arguments . length ) { var a = this . adjustBounds ( arguments [ 0 ] ) , b = this . map . getResolution ( ) , c = Math . round ( ( a . left - this . tileOrigin . lon ) / ( b * this . tileSize . w ) ) , a = Math . round ( ( this . tileOrigin . lat -
a . top ) / ( b * this . tileSize . h ) ) , b = this . map . getZoom ( ) , d = this . standardTileSize , e = this . standardTileSize ; c == this . tierSizeInTiles [ b ] . w - 1 && ( d = this . tierImageSize [ b ] . w % this . standardTileSize ) ; a == this . tierSizeInTiles [ b ] . h - 1 && ( e = this . tierImageSize [ b ] . h % this . standardTileSize ) ; return new OpenLayers . Size ( d , e ) } return this . tileSize } , setMap : function ( a ) { OpenLayers . Layer . Grid . prototype . setMap . apply ( this , arguments ) ; this . tileOrigin = new OpenLayers . LonLat ( this . map . maxExtent . left , this . map . maxExtent . top ) } , calculateGridLayout : function ( a ,
b , c ) { var d = c * this . tileSize . w , c = c * this . tileSize . h , e = a . left - b . lon , f = Math . floor ( e / d ) - this . buffer , a = b . lat - a . top + c , g = Math . floor ( a / c ) - this . buffer ; return { tilelon : d , tilelat : c , tileoffsetlon : b . lon + f * d , tileoffsetlat : b . lat - c * g , tileoffsetx : - ( e / d - f ) * this . tileSize . w , tileoffsety : ( g - a / c ) * this . tileSize . h } } , CLASS _NAME : "OpenLayers.Layer.Zoomify" } ) ; OpenLayers . Layer . MapServer = OpenLayers . Class ( OpenLayers . Layer . Grid , { DEFAULT _PARAMS : { mode : "map" , map _imagetype : "png" } , initialize : function ( a , b , c , d ) { OpenLayers . Layer . Grid . prototype . initialize . apply ( this , arguments ) ; this . params = OpenLayers . Util . applyDefaults ( this . params , this . DEFAULT _PARAMS ) ; if ( null == d || null == d . isBaseLayer ) this . isBaseLayer = "true" != this . params . transparent && ! 0 != this . params . transparent } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . MapServer ( this . name , this . url , this . params , this . getOptions ( ) ) ) ;
return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , a = [ a . left , a . bottom , a . right , a . top ] , b = this . getImageSize ( ) ; return this . getFullRequestString ( { mapext : a , imgext : a , map _size : [ b . w , b . h ] , imgx : b . w / 2 , imgy : b . h / 2 , imgxy : [ b . w , b . h ] } ) } , getFullRequestString : function ( a , b ) { var c = null == b ? this . url : b , d = OpenLayers . Util . extend ( { } , this . params ) , d = OpenLayers . Util . extend ( d , a ) , e = OpenLayers . Util . getParameterString ( d ) ; OpenLayers . Util . isArray ( c ) && ( c = this . selectUrl ( e , c ) ) ;
var e = OpenLayers . Util . upperCaseObject ( OpenLayers . Util . getParameters ( c ) ) , f ; for ( f in d ) f . toUpperCase ( ) in e && delete d [ f ] ; e = OpenLayers . Util . getParameterString ( d ) ; d = c ; e = e . replace ( /,/g , "+" ) ; "" != e && ( f = c . charAt ( c . length - 1 ) , d = "&" == f || "?" == f ? d + e : - 1 == c . indexOf ( "?" ) ? d + ( "?" + e ) : d + ( "&" + e ) ) ; return d } , CLASS _NAME : "OpenLayers.Layer.MapServer" } ) ; OpenLayers . Renderer . VML = OpenLayers . Class ( OpenLayers . Renderer . Elements , { xmlns : "urn:schemas-microsoft-com:vml" , symbolCache : { } , offset : null , initialize : function ( a ) { if ( this . supported ( ) ) { if ( ! document . namespaces . olv ) { document . namespaces . add ( "olv" , this . xmlns ) ; for ( var b = document . createStyleSheet ( ) , c = "shape rect oval fill stroke imagedata group textbox" . split ( " " ) , d = 0 , e = c . length ; d < e ; d ++ ) b . addRule ( "olv\\:" + c [ d ] , "behavior: url(#default#VML); position: absolute; display: inline-block;" ) } OpenLayers . Renderer . Elements . prototype . initialize . apply ( this ,
arguments ) } } , supported : function ( ) { return ! ! document . namespaces } , setExtent : function ( a , b ) { var c = OpenLayers . Renderer . Elements . prototype . setExtent . apply ( this , arguments ) , d = this . getResolution ( ) , e = a . left / d | 0 , d = a . top / d - this . size . h | 0 ; b || ! this . offset ? ( this . offset = { x : e , y : d } , d = e = 0 ) : ( e -= this . offset . x , d -= this . offset . y ) ; this . root . coordorigin = e - this . xOffset + " " + d ; for ( var e = [ this . root , this . vectorRoot , this . textRoot ] , f = 0 , g = e . length ; f < g ; ++ f ) d = e [ f ] , d . coordsize = this . size . w + " " + this . size . h ; this . root . style . flip = "y" ; return c } ,
setSize : function ( a ) { OpenLayers . Renderer . prototype . setSize . apply ( this , arguments ) ; for ( var b = [ this . rendererRoot , this . root , this . vectorRoot , this . textRoot ] , c = this . size . w + "px" , d = this . size . h + "px" , e , f = 0 , g = b . length ; f < g ; ++ f ) e = b [ f ] , e . style . width = c , e . style . height = d } , getNodeType : function ( a , b ) { var c = null ; switch ( a . CLASS _NAME ) { case "OpenLayers.Geometry.Point" : c = b . externalGraphic ? "olv:rect" : this . isComplexSymbol ( b . graphicName ) ? "olv:shape" : "olv:oval" ; break ; case "OpenLayers.Geometry.Rectangle" : c = "olv:rect" ; break ; case "OpenLayers.Geometry.LineString" : case "OpenLayers.Geometry.LinearRing" : case "OpenLayers.Geometry.Polygon" : case "OpenLayers.Geometry.Curve" : c =
"olv:shape" } return c } , setStyle : function ( a , b , c , d ) { var b = b || a . _style , c = c || a . _options , e = b . fillColor ; if ( "OpenLayers.Geometry.Point" === a . _geometryClass ) if ( b . externalGraphic ) { c . isFilled = ! 0 ; b . graphicTitle && ( a . title = b . graphicTitle ) ; var e = b . graphicWidth || b . graphicHeight , f = b . graphicHeight || b . graphicWidth , e = e ? e : 2 * b . pointRadius , f = f ? f : 2 * b . pointRadius , g = this . getResolution ( ) , h = void 0 != b . graphicXOffset ? b . graphicXOffset : - ( 0.5 * e ) , i = void 0 != b . graphicYOffset ? b . graphicYOffset : - ( 0.5 * f ) ; a . style . left = ( ( d . x - this . featureDx ) /
g - this . offset . x + h | 0 ) + "px" ; a . style . top = ( d . y / g - this . offset . y - ( i + f ) | 0 ) + "px" ; a . style . width = e + "px" ; a . style . height = f + "px" ; a . style . flip = "y" ; e = "none" ; c . isStroked = ! 1 } else this . isComplexSymbol ( b . graphicName ) ? ( f = this . importSymbol ( b . graphicName ) , a . path = f . path , a . coordorigin = f . left + "," + f . bottom , f = f . size , a . coordsize = f + "," + f , this . drawCircle ( a , d , b . pointRadius ) , a . style . flip = "y" ) : this . drawCircle ( a , d , b . pointRadius ) ; c . isFilled ? a . fillcolor = e : a . filled = "false" ; d = a . getElementsByTagName ( "fill" ) ; d = 0 == d . length ? null : d [ 0 ] ; if ( c . isFilled ) { d ||
( d = this . createNode ( "olv:fill" , a . id + "_fill" ) ) ; d . opacity = b . fillOpacity ; if ( "OpenLayers.Geometry.Point" === a . _geometryClass && b . externalGraphic && ( b . graphicOpacity && ( d . opacity = b . graphicOpacity ) , d . src = b . externalGraphic , d . type = "frame" , ! b . graphicWidth || ! b . graphicHeight ) ) d . aspect = "atmost" ; d . parentNode != a && a . appendChild ( d ) } else d && a . removeChild ( d ) ; e = b . rotation ; if ( void 0 !== e || void 0 !== a . _rotation ) a . _rotation = e , b . externalGraphic ? ( this . graphicRotate ( a , h , i , b ) , d . opacity = 0 ) : "OpenLayers.Geometry.Point" === a . _geometryClass &&
( a . style . rotation = e || 0 ) ; h = a . getElementsByTagName ( "stroke" ) ; h = 0 == h . length ? null : h [ 0 ] ; if ( c . isStroked ) { if ( h || ( h = this . createNode ( "olv:stroke" , a . id + "_stroke" ) , a . appendChild ( h ) ) , h . on = ! 0 , h . color = b . strokeColor , h . weight = b . strokeWidth + "px" , h . opacity = b . strokeOpacity , h . endcap = "butt" == b . strokeLinecap ? "flat" : b . strokeLinecap || "round" , b . strokeDashstyle ) h . dashstyle = this . dashStyle ( b ) } else a . stroked = ! 1 , h && ( h . on = ! 1 ) ; "inherit" != b . cursor && null != b . cursor && ( a . style . cursor = b . cursor ) ; return a } , graphicRotate : function ( a , b , c ,
d ) { var d = d || a . _style , e = d . rotation || 0 , f , g ; if ( ! d . graphicWidth || ! d . graphicHeight ) { var h = new Image ; h . onreadystatechange = OpenLayers . Function . bind ( function ( ) { if ( "complete" == h . readyState || "interactive" == h . readyState ) f = h . width / h . height , g = Math . max ( 2 * d . pointRadius , d . graphicWidth || 0 , d . graphicHeight || 0 ) , b *= f , d . graphicWidth = g * f , d . graphicHeight = g , this . graphicRotate ( a , b , c , d ) } , this ) ; h . src = d . externalGraphic } else { g = Math . max ( d . graphicWidth , d . graphicHeight ) ; f = d . graphicWidth / d . graphicHeight ; var i = Math . round ( d . graphicWidth ||
g * f ) , j = Math . round ( d . graphicHeight || g ) ; a . style . width = i + "px" ; a . style . height = j + "px" ; var k = document . getElementById ( a . id + "_image" ) ; k || ( k = this . createNode ( "olv:imagedata" , a . id + "_image" ) , a . appendChild ( k ) ) ; k . style . width = i + "px" ; k . style . height = j + "px" ; k . src = d . externalGraphic ; k . style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='', sizingMethod='scale')" ; k = e * Math . PI / 180 ; e = Math . sin ( k ) ; k = Math . cos ( k ) ; e = "progid:DXImageTransform.Microsoft.Matrix(M11=" + k + ",M12=" + - e + ",M21=" + e + ",M22=" + k + ",SizingMethod='auto expand')\n" ;
( k = d . graphicOpacity || d . fillOpacity ) && 1 != k && ( e += "progid:DXImageTransform.Microsoft.BasicImage(opacity=" + k + ")\n" ) ; a . style . filter = e ; e = new OpenLayers . Geometry . Point ( - b , - c ) ; i = ( new OpenLayers . Bounds ( 0 , 0 , i , j ) ) . toGeometry ( ) ; i . rotate ( d . rotation , e ) ; i = i . getBounds ( ) ; a . style . left = Math . round ( parseInt ( a . style . left ) + i . left ) + "px" ; a . style . top = Math . round ( parseInt ( a . style . top ) - i . bottom ) + "px" } } , postDraw : function ( a ) { a . style . visibility = "visible" ; var b = a . _style . fillColor , c = a . _style . strokeColor ; "none" == b && a . fillcolor != b &&
( a . fillcolor = b ) ; "none" == c && a . strokecolor != c && ( a . strokecolor = c ) } , setNodeDimension : function ( a , b ) { var c = b . getBounds ( ) ; if ( c ) { var d = this . getResolution ( ) , c = new OpenLayers . Bounds ( ( c . left - this . featureDx ) / d - this . offset . x | 0 , c . bottom / d - this . offset . y | 0 , ( c . right - this . featureDx ) / d - this . offset . x | 0 , c . top / d - this . offset . y | 0 ) ; a . style . left = c . left + "px" ; a . style . top = c . top + "px" ; a . style . width = c . getWidth ( ) + "px" ; a . style . height = c . getHeight ( ) + "px" ; a . coordorigin = c . left + " " + c . top ; a . coordsize = c . getWidth ( ) + " " + c . getHeight ( ) } } , dashStyle : function ( a ) { a =
a . strokeDashstyle ; switch ( a ) { case "solid" : case "dot" : case "dash" : case "dashdot" : case "longdash" : case "longdashdot" : return a ; default : return a = a . split ( /[ ,]/ ) , 2 == a . length ? 1 * a [ 0 ] >= 2 * a [ 1 ] ? "longdash" : 1 == a [ 0 ] || 1 == a [ 1 ] ? "dot" : "dash" : 4 == a . length ? 1 * a [ 0 ] >= 2 * a [ 1 ] ? "longdashdot" : "dashdot" : "solid" } } , createNode : function ( a , b ) { var c = document . createElement ( a ) ; b && ( c . id = b ) ; c . unselectable = "on" ; c . onselectstart = OpenLayers . Function . False ; return c } , nodeTypeCompare : function ( a , b ) { var c = b , d = c . indexOf ( ":" ) ; - 1 != d && ( c = c . substr ( d +
1 ) ) ; var e = a . nodeName , d = e . indexOf ( ":" ) ; - 1 != d && ( e = e . substr ( d + 1 ) ) ; return c == e } , createRenderRoot : function ( ) { return this . nodeFactory ( this . container . id + "_vmlRoot" , "div" ) } , createRoot : function ( a ) { return this . nodeFactory ( this . container . id + a , "olv:group" ) } , drawPoint : function ( a , b ) { return this . drawCircle ( a , b , 1 ) } , drawCircle : function ( a , b , c ) { if ( ! isNaN ( b . x ) && ! isNaN ( b . y ) ) { var d = this . getResolution ( ) ; a . style . left = ( ( b . x - this . featureDx ) / d - this . offset . x | 0 ) - c + "px" ; a . style . top = ( b . y / d - this . offset . y | 0 ) - c + "px" ; b = 2 * c ; a . style . width =
b + "px" ; a . style . height = b + "px" ; return a } return ! 1 } , drawLineString : function ( a , b ) { return this . drawLine ( a , b , ! 1 ) } , drawLinearRing : function ( a , b ) { return this . drawLine ( a , b , ! 0 ) } , drawLine : function ( a , b , c ) { this . setNodeDimension ( a , b ) ; for ( var d = this . getResolution ( ) , e = b . components . length , f = Array ( e ) , g , h , i = 0 ; i < e ; i ++ ) g = b . components [ i ] , h = ( g . x - this . featureDx ) / d - this . offset . x | 0 , g = g . y / d - this . offset . y | 0 , f [ i ] = " " + h + "," + g + " l " ; a . path = "m" + f . join ( "" ) + ( c ? " x e" : " e" ) ; return a } , drawPolygon : function ( a , b ) { this . setNodeDimension ( a ,
b ) ; var c = this . getResolution ( ) , d = [ ] , e , f , g , h , i , j , k , l , m , n ; e = 0 ; for ( f = b . components . length ; e < f ; e ++ ) { d . push ( "m" ) ; g = b . components [ e ] . components ; h = 0 === e ; j = i = null ; k = 0 ; for ( l = g . length ; k < l ; k ++ ) m = g [ k ] , n = ( m . x - this . featureDx ) / c - this . offset . x | 0 , m = m . y / c - this . offset . y | 0 , n = " " + n + "," + m , d . push ( n ) , 0 == k && d . push ( " l" ) , h || ( i ? i != n && ( j ? j != n && ( h = ! 0 ) : j = n ) : i = n ) ; d . push ( h ? " x " : " " ) } d . push ( "e" ) ; a . path = d . join ( "" ) ; return a } , drawRectangle : function ( a , b ) { var c = this . getResolution ( ) ; a . style . left = ( ( b . x - this . featureDx ) / c - this . offset . x | 0 ) +
"px" ; a . style . top = ( b . y / c - this . offset . y | 0 ) + "px" ; a . style . width = ( b . width / c | 0 ) + "px" ; a . style . height = ( b . height / c | 0 ) + "px" ; return a } , drawText : function ( a , b , c ) { var d = this . nodeFactory ( a + this . LABEL _ID _SUFFIX , "olv:rect" ) , e = this . nodeFactory ( a + this . LABEL _ID _SUFFIX + "_textbox" , "olv:textbox" ) , f = this . getResolution ( ) ; d . style . left = ( ( c . x - this . featureDx ) / f - this . offset . x | 0 ) + "px" ; d . style . top = ( c . y / f - this . offset . y | 0 ) + "px" ; d . style . flip = "y" ; e . innerText = b . label ; "inherit" != b . cursor && null != b . cursor && ( e . style . cursor = b . cursor ) ; b . fontColor &&
( e . style . color = b . fontColor ) ; b . fontOpacity && ( e . style . filter = "alpha(opacity=" + 100 * b . fontOpacity + ")" ) ; b . fontFamily && ( e . style . fontFamily = b . fontFamily ) ; b . fontSize && ( e . style . fontSize = b . fontSize ) ; b . fontWeight && ( e . style . fontWeight = b . fontWeight ) ; b . fontStyle && ( e . style . fontStyle = b . fontStyle ) ; ! 0 === b . labelSelect && ( d . _featureId = a , e . _featureId = a , e . _geometry = c , e . _geometryClass = c . CLASS _NAME ) ; e . style . whiteSpace = "nowrap" ; e . inset = "1px,0px,0px,0px" ; d . parentNode || ( d . appendChild ( e ) , this . textRoot . appendChild ( d ) ) ; b = b . labelAlign ||
"cm" ; 1 == b . length && ( b += "m" ) ; a = e . clientWidth * OpenLayers . Renderer . VML . LABEL _SHIFT [ b . substr ( 0 , 1 ) ] ; e = e . clientHeight * OpenLayers . Renderer . VML . LABEL _SHIFT [ b . substr ( 1 , 1 ) ] ; d . style . left = parseInt ( d . style . left ) - a - 1 + "px" ; d . style . top = parseInt ( d . style . top ) + e + "px" } , moveRoot : function ( a ) { var b = this . map . getLayer ( a . container . id ) ; b instanceof OpenLayers . Layer . Vector . RootContainer && ( b = this . map . getLayer ( this . container . id ) ) ; b && b . renderer . clear ( ) ; OpenLayers . Renderer . Elements . prototype . moveRoot . apply ( this , arguments ) ; b && b . redraw ( ) } ,
importSymbol : function ( a ) { var b = this . container . id + "-" + a , c = this . symbolCache [ b ] ; if ( c ) return c ; c = OpenLayers . Renderer . symbol [ a ] ; if ( ! c ) throw Error ( a + " is not a valid symbol name" ) ; for ( var a = new OpenLayers . Bounds ( Number . MAX _VALUE , Number . MAX _VALUE , 0 , 0 ) , d = [ "m" ] , e = 0 ; e < c . length ; e += 2 ) { var f = c [ e ] , g = c [ e + 1 ] ; a . left = Math . min ( a . left , f ) ; a . bottom = Math . min ( a . bottom , g ) ; a . right = Math . max ( a . right , f ) ; a . top = Math . max ( a . top , g ) ; d . push ( f ) ; d . push ( g ) ; 0 == e && d . push ( "l" ) } d . push ( "x e" ) ; c = d . join ( " " ) ; d = ( a . getWidth ( ) - a . getHeight ( ) ) / 2 ;
0 < d ? ( a . bottom -= d , a . top += d ) : ( a . left += d , a . right -= d ) ; c = { path : c , size : a . getWidth ( ) , left : a . left , bottom : a . bottom } ; return this . symbolCache [ b ] = c } , CLASS _NAME : "OpenLayers.Renderer.VML" } ) ; OpenLayers . Renderer . VML . LABEL _SHIFT = { l : 0 , c : 0.5 , r : 1 , t : 0 , m : 0.5 , b : 1 } ; OpenLayers . Control . CacheRead = OpenLayers . Class ( OpenLayers . Control , { fetchEvent : "tileloadstart" , layers : null , autoActivate : ! 0 , setMap : function ( a ) { OpenLayers . Control . prototype . setMap . apply ( this , arguments ) ; var b , c = this . layers || a . layers ; for ( b = c . length - 1 ; 0 <= b ; -- b ) this . addLayer ( { layer : c [ b ] } ) ; if ( ! this . layers ) a . events . on ( { addlayer : this . addLayer , removeLayer : this . removeLayer , scope : this } ) } , addLayer : function ( a ) { a . layer . events . register ( this . fetchEvent , this , this . fetch ) } , removeLayer : function ( a ) { a . layer . events . unregister ( this . fetchEvent ,
this , this . fetch ) } , fetch : function ( a ) { if ( this . active && window . localStorage && a . tile instanceof OpenLayers . Tile . Image ) { var b = a . tile , c = b . url ; ! b . layer . crossOriginKeyword && ( OpenLayers . ProxyHost && 0 === c . indexOf ( OpenLayers . ProxyHost ) ) && ( c = OpenLayers . Control . CacheWrite . urlMap [ c ] ) ; if ( c = window . localStorage . getItem ( "olCache_" + c ) ) b . url = c , "tileerror" === a . type && b . setImgSrc ( c ) } } , destroy : function ( ) { if ( this . layers || this . map ) { var a , b = this . layers || this . map . layers ; for ( a = b . length - 1 ; 0 <= a ; -- a ) this . removeLayer ( { layer : b [ a ] } ) } this . map &&
this . map . events . un ( { addlayer : this . addLayer , removeLayer : this . removeLayer , scope : this } ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , CLASS _NAME : "OpenLayers.Control.CacheRead" } ) ; OpenLayers . Protocol . WFS . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Protocol . WFS . v1 , { version : "1.0.0" , CLASS _NAME : "OpenLayers.Protocol.WFS.v1_0_0" } ) ; OpenLayers . Format . WMSGetFeatureInfo = OpenLayers . Class ( OpenLayers . Format . XML , { layerIdentifier : "_layer" , featureIdentifier : "_feature" , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , gmlFormat : null , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; var b = a . documentElement ; if ( b ) var c = this [ "read_" + b . nodeName ] , a = c ? c . call ( this , b ) : ( new OpenLayers . Format . GML ( this . options ? this . options : { } ) ) . read ( a ) ; return a } , read _msGMLOutput : function ( a ) { var b =
[ ] ; if ( a = this . getSiblingNodesByTagCriteria ( a , this . layerIdentifier ) ) for ( var c = 0 , d = a . length ; c < d ; ++ c ) { var e = a [ c ] , f = e . nodeName ; e . prefix && ( f = f . split ( ":" ) [ 1 ] ) ; f = f . replace ( this . layerIdentifier , "" ) ; if ( e = this . getSiblingNodesByTagCriteria ( e , this . featureIdentifier ) ) for ( var g = 0 ; g < e . length ; g ++ ) { var h = e [ g ] , i = this . parseGeometry ( h ) , h = this . parseAttributes ( h ) , h = new OpenLayers . Feature . Vector ( i . geometry , h , null ) ; h . bounds = i . bounds ; h . type = f ; b . push ( h ) } } return b } , read _FeatureInfoResponse : function ( a ) { for ( var b = [ ] , a = this . getElementsByTagNameNS ( a ,
"*" , "FIELDS" ) , c = 0 , d = a . length ; c < d ; c ++ ) { var e = a [ c ] , f = { } , g , h = e . attributes . length ; if ( 0 < h ) for ( g = 0 ; g < h ; g ++ ) { var i = e . attributes [ g ] ; f [ i . nodeName ] = i . nodeValue } else { e = e . childNodes ; g = 0 ; for ( h = e . length ; g < h ; ++ g ) i = e [ g ] , 3 != i . nodeType && ( f [ i . getAttribute ( "name" ) ] = i . getAttribute ( "value" ) ) } b . push ( new OpenLayers . Feature . Vector ( null , f , null ) ) } return b } , getSiblingNodesByTagCriteria : function ( a , b ) { var c = [ ] , d , e , f , g ; if ( a && a . hasChildNodes ( ) ) { d = a . childNodes ; f = d . length ; for ( var h = 0 ; h < f ; h ++ ) { for ( g = d [ h ] ; g && 1 != g . nodeType ; ) g = g . nextSibling ,
h ++ ; e = g ? g . nodeName : "" ; 0 < e . length && - 1 < e . indexOf ( b ) ? c . push ( g ) : ( e = this . getSiblingNodesByTagCriteria ( g , b ) , 0 < e . length && ( 0 == c . length ? c = e : c . push ( e ) ) ) } } return c } , parseAttributes : function ( a ) { var b = { } ; if ( 1 == a . nodeType ) for ( var a = a . childNodes , c = a . length , d = 0 ; d < c ; ++ d ) { var e = a [ d ] ; if ( 1 == e . nodeType ) { var f = e . childNodes , e = e . prefix ? e . nodeName . split ( ":" ) [ 1 ] : e . nodeName ; if ( 0 == f . length ) b [ e ] = null ; else if ( 1 == f . length && ( f = f [ 0 ] , 3 == f . nodeType || 4 == f . nodeType ) ) f = f . nodeValue . replace ( this . regExes . trimSpace , "" ) , b [ e ] = f } } return b } ,
parseGeometry : function ( a ) { this . gmlFormat || ( this . gmlFormat = new OpenLayers . Format . GML ) ; var a = this . gmlFormat . parseFeature ( a ) , b , c = null ; a && ( b = a . geometry && a . geometry . clone ( ) , c = a . bounds && a . bounds . clone ( ) , a . destroy ( ) ) ; return { geometry : b , bounds : c } } , CLASS _NAME : "OpenLayers.Format.WMSGetFeatureInfo" } ) ; OpenLayers . Control . WMTSGetFeatureInfo = OpenLayers . Class ( OpenLayers . Control , { hover : ! 1 , requestEncoding : "KVP" , drillDown : ! 1 , maxFeatures : 10 , clickCallback : "click" , layers : null , queryVisible : ! 0 , infoFormat : "text/html" , vendorParams : { } , format : null , formatOptions : null , handlerOptions : null , handler : null , hoverRequest : null , pending : 0 , initialize : function ( a ) { a = a || { } ; a . handlerOptions = a . handlerOptions || { } ; OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . format || ( this . format = new OpenLayers . Format . WMSGetFeatureInfo ( a . formatOptions ) ) ;
! 0 === this . drillDown && ( this . hover = ! 1 ) ; this . hover ? this . handler = new OpenLayers . Handler . Hover ( this , { move : this . cancelHover , pause : this . getInfoForHover } , OpenLayers . Util . extend ( this . handlerOptions . hover || { } , { delay : 250 } ) ) : ( a = { } , a [ this . clickCallback ] = this . getInfoForClick , this . handler = new OpenLayers . Handler . Click ( this , a , this . handlerOptions . click || { } ) ) } , getInfoForClick : function ( a ) { this . request ( a . xy , { } ) } , getInfoForHover : function ( a ) { this . request ( a . xy , { hover : ! 0 } ) } , cancelHover : function ( ) { this . hoverRequest && ( -- this . pending ,
0 >= this . pending && ( OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olCursorWait" ) , this . pending = 0 ) , this . hoverRequest . abort ( ) , this . hoverRequest = null ) } , findLayers : function ( ) { for ( var a = this . layers || this . map . layers , b = [ ] , c , d = a . length - 1 ; 0 <= d ; -- d ) if ( c = a [ d ] , c instanceof OpenLayers . Layer . WMTS && c . requestEncoding === this . requestEncoding && ( ! this . queryVisible || c . getVisibility ( ) ) ) if ( b . push ( c ) , ! this . drillDown || this . hover ) break ; return b } , buildRequestOptions : function ( a , b ) { var c = this . map . getLonLatFromPixel ( b ) , d =
a . getURL ( new OpenLayers . Bounds ( c . lon , c . lat , c . lon , c . lat ) ) , d = OpenLayers . Util . getParameters ( d ) , c = a . getTileInfo ( c ) ; OpenLayers . Util . extend ( d , { service : "WMTS" , version : a . version , request : "GetFeatureInfo" , infoFormat : this . infoFormat , i : c . i , j : c . j } ) ; OpenLayers . Util . applyDefaults ( d , this . vendorParams ) ; return { url : OpenLayers . Util . isArray ( a . url ) ? a . url [ 0 ] : a . url , params : OpenLayers . Util . upperCaseObject ( d ) , callback : function ( c ) { this . handleResponse ( b , c , a ) } , scope : this } } , request : function ( a , b ) { var b = b || { } , c = this . findLayers ( ) ;
if ( 0 < c . length ) { for ( var d , e , f = 0 , g = c . length ; f < g ; f ++ ) e = c [ f ] , d = this . events . triggerEvent ( "beforegetfeatureinfo" , { xy : a , layer : e } ) , ! 1 !== d && ( ++ this . pending , d = this . buildRequestOptions ( e , a ) , d = OpenLayers . Request . GET ( d ) , ! 0 === b . hover && ( this . hoverRequest = d ) ) ; 0 < this . pending && OpenLayers . Element . addClass ( this . map . viewPortDiv , "olCursorWait" ) } } , handleResponse : function ( a , b , c ) { -- this . pending ; 0 >= this . pending && ( OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olCursorWait" ) , this . pending = 0 ) ; if ( b . status && ( 200 > b . status ||
300 <= b . status ) ) this . events . triggerEvent ( "exception" , { xy : a , request : b , layer : c } ) ; else { var d = b . responseXML ; if ( ! d || ! d . documentElement ) d = b . responseText ; var e , f ; try { e = this . format . read ( d ) } catch ( g ) { f = ! 0 , this . events . triggerEvent ( "exception" , { xy : a , request : b , error : g , layer : c } ) } f || this . events . triggerEvent ( "getfeatureinfo" , { text : b . responseText , features : e , request : b , xy : a , layer : c } ) } } , CLASS _NAME : "OpenLayers.Control.WMTSGetFeatureInfo" } ) ; OpenLayers . Strategy . Paging = OpenLayers . Class ( OpenLayers . Strategy , { features : null , length : 10 , num : null , paging : ! 1 , activate : function ( ) { var a = OpenLayers . Strategy . prototype . activate . call ( this ) ; if ( a ) this . layer . events . on ( { beforefeaturesadded : this . cacheFeatures , scope : this } ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Strategy . prototype . deactivate . call ( this ) ; a && ( this . clearCache ( ) , this . layer . events . un ( { beforefeaturesadded : this . cacheFeatures , scope : this } ) ) ; return a } , cacheFeatures : function ( a ) { this . paging || ( this . clearCache ( ) ,
this . features = a . features , this . pageNext ( a ) ) } , clearCache : function ( ) { if ( this . features ) for ( var a = 0 ; a < this . features . length ; ++ a ) this . features [ a ] . destroy ( ) ; this . num = this . features = null } , pageCount : function ( ) { return Math . ceil ( ( this . features ? this . features . length : 0 ) / this . length ) } , pageNum : function ( ) { return this . num } , pageLength : function ( a ) { a && 0 < a && ( this . length = a ) ; return this . length } , pageNext : function ( a ) { var b = ! 1 ; this . features && ( null === this . num && ( this . num = - 1 ) , b = this . page ( ( this . num + 1 ) * this . length , a ) ) ; return b } , pagePrevious : function ( ) { var a =
! 1 ; this . features && ( null === this . num && ( this . num = this . pageCount ( ) ) , a = this . page ( ( this . num - 1 ) * this . length ) ) ; return a } , page : function ( a , b ) { var c = ! 1 ; if ( this . features && 0 <= a && a < this . features . length ) { var d = Math . floor ( a / this . length ) ; d != this . num && ( this . paging = ! 0 , c = this . features . slice ( a , a + this . length ) , this . layer . removeFeatures ( this . layer . features ) , this . num = d , b && b . features ? b . features = c : this . layer . addFeatures ( c ) , this . paging = ! 1 , c = ! 0 ) } return c } , CLASS _NAME : "OpenLayers.Strategy.Paging" } ) ; OpenLayers . Protocol . CSW . v2 _0 _2 = OpenLayers . Class ( OpenLayers . Protocol , { formatOptions : null , initialize : function ( a ) { OpenLayers . Protocol . prototype . initialize . apply ( this , [ a ] ) ; a . format || ( this . format = new OpenLayers . Format . CSWGetRecords . v2 _0 _2 ( OpenLayers . Util . extend ( { } , this . formatOptions ) ) ) } , destroy : function ( ) { this . options && ! this . options . format && this . format . destroy ( ) ; this . format = null ; OpenLayers . Protocol . prototype . destroy . apply ( this ) } , read : function ( a ) { a = OpenLayers . Util . extend ( { } , a ) ; OpenLayers . Util . applyDefaults ( a ,
this . options || { } ) ; var b = new OpenLayers . Protocol . Response ( { requestType : "read" } ) , c = this . format . write ( a . params ) ; b . priv = OpenLayers . Request . POST ( { url : a . url , callback : this . createCallback ( this . handleRead , b , a ) , params : a . params , headers : a . headers , data : c } ) ; return b } , handleRead : function ( a , b ) { if ( b . callback ) { var c = a . priv ; 200 <= c . status && 300 > c . status ? ( a . data = this . parseData ( c ) , a . code = OpenLayers . Protocol . Response . SUCCESS ) : a . code = OpenLayers . Protocol . Response . FAILURE ; b . callback . call ( b . scope , a ) } } , parseData : function ( a ) { var b =
a . responseXML ; if ( ! b || ! b . documentElement ) b = a . responseText ; return ! b || 0 >= b . length ? null : this . format . read ( b ) } , CLASS _NAME : "OpenLayers.Protocol.CSW.v2_0_2" } ) ; OpenLayers . Format . WMSCapabilities . v1 _1 = OpenLayers . Class ( OpenLayers . Format . WMSCapabilities . v1 , { readers : { wms : OpenLayers . Util . applyDefaults ( { WMT _MS _Capabilities : function ( a , b ) { this . readChildNodes ( a , b ) } , Keyword : function ( a , b ) { b . keywords && b . keywords . push ( this . getChildValue ( a ) ) } , DescribeLayer : function ( a , b ) { b . describelayer = { formats : [ ] } ; this . readChildNodes ( a , b . describelayer ) } , GetLegendGraphic : function ( a , b ) { b . getlegendgraphic = { formats : [ ] } ; this . readChildNodes ( a , b . getlegendgraphic ) } , GetStyles : function ( a , b ) { b . getstyles =
{ formats : [ ] } ; this . readChildNodes ( a , b . getstyles ) } , PutStyles : function ( a , b ) { b . putstyles = { formats : [ ] } ; this . readChildNodes ( a , b . putstyles ) } , UserDefinedSymbolization : function ( a , b ) { var c = { supportSLD : 1 == parseInt ( a . getAttribute ( "SupportSLD" ) ) , userLayer : 1 == parseInt ( a . getAttribute ( "UserLayer" ) ) , userStyle : 1 == parseInt ( a . getAttribute ( "UserStyle" ) ) , remoteWFS : 1 == parseInt ( a . getAttribute ( "RemoteWFS" ) ) } ; b . userSymbols = c } , LatLonBoundingBox : function ( a , b ) { b . llbbox = [ parseFloat ( a . getAttribute ( "minx" ) ) , parseFloat ( a . getAttribute ( "miny" ) ) ,
parseFloat ( a . getAttribute ( "maxx" ) ) , parseFloat ( a . getAttribute ( "maxy" ) ) ] } , BoundingBox : function ( a , b ) { var c = OpenLayers . Format . WMSCapabilities . v1 . prototype . readers . wms . BoundingBox . apply ( this , [ a , b ] ) ; c . srs = a . getAttribute ( "SRS" ) ; b . bbox [ c . srs ] = c } , ScaleHint : function ( a , b ) { var c = a . getAttribute ( "min" ) , d = a . getAttribute ( "max" ) , e = Math . pow ( 2 , 0.5 ) , f = OpenLayers . INCHES _PER _UNIT . m ; b . maxScale = parseFloat ( ( c / e * f * OpenLayers . DOTS _PER _INCH ) . toPrecision ( 13 ) ) ; b . minScale = parseFloat ( ( d / e * f * OpenLayers . DOTS _PER _INCH ) . toPrecision ( 13 ) ) } ,
Dimension : function ( a , b ) { var c = { name : a . getAttribute ( "name" ) . toLowerCase ( ) , units : a . getAttribute ( "units" ) , unitsymbol : a . getAttribute ( "unitSymbol" ) } ; b . dimensions [ c . name ] = c } , Extent : function ( a , b ) { var c = a . getAttribute ( "name" ) . toLowerCase ( ) ; if ( c in b . dimensions ) { c = b . dimensions [ c ] ; c . nearestVal = "1" === a . getAttribute ( "nearestValue" ) ; c . multipleVal = "1" === a . getAttribute ( "multipleValues" ) ; c . current = "1" === a . getAttribute ( "current" ) ; c [ "default" ] = a . getAttribute ( "default" ) || "" ; var d = this . getChildValue ( a ) ; c . values = d . split ( "," ) } } } ,
OpenLayers . Format . WMSCapabilities . v1 . prototype . readers . wms ) } , CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1_1" } ) ; OpenLayers . Control . Graticule = OpenLayers . Class ( OpenLayers . Control , { autoActivate : ! 0 , intervals : [ 45 , 30 , 20 , 10 , 5 , 2 , 1 , 0.5 , 0.2 , 0.1 , 0.05 , 0.01 , 0.005 , 0.002 , 0.001 ] , displayInLayerSwitcher : ! 0 , visible : ! 0 , numPoints : 50 , targetSize : 200 , layerName : null , labelled : ! 0 , labelFormat : "dm" , lineSymbolizer : { strokeColor : "#333" , strokeWidth : 1 , strokeOpacity : 0.5 } , labelSymbolizer : { } , gratLayer : null , initialize : function ( a ) { a = a || { } ; a . layerName = a . layerName || OpenLayers . i18n ( "Graticule" ) ; OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ;
this . labelSymbolizer . stroke = ! 1 ; this . labelSymbolizer . fill = ! 1 ; this . labelSymbolizer . label = "${label}" ; this . labelSymbolizer . labelAlign = "${labelAlign}" ; this . labelSymbolizer . labelXOffset = "${xOffset}" ; this . labelSymbolizer . labelYOffset = "${yOffset}" } , destroy : function ( ) { this . deactivate ( ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) ; this . gratLayer && ( this . gratLayer . destroy ( ) , this . gratLayer = null ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this , arguments ) ; if ( ! this . gratLayer ) { var a = new OpenLayers . Style ( { } ,
{ rules : [ new OpenLayers . Rule ( { symbolizer : { Point : this . labelSymbolizer , Line : this . lineSymbolizer } } ) ] } ) ; this . gratLayer = new OpenLayers . Layer . Vector ( this . layerName , { styleMap : new OpenLayers . StyleMap ( { "default" : a } ) , visibility : this . visible , displayInLayerSwitcher : this . displayInLayerSwitcher } ) } return this . div } , activate : function ( ) { return OpenLayers . Control . prototype . activate . apply ( this , arguments ) ? ( this . map . addLayer ( this . gratLayer ) , this . map . events . register ( "moveend" , this , this . update ) , this . update ( ) , ! 0 ) : ! 1 } , deactivate : function ( ) { return OpenLayers . Control . prototype . deactivate . apply ( this ,
arguments ) ? ( this . map . events . unregister ( "moveend" , this , this . update ) , this . map . removeLayer ( this . gratLayer ) , ! 0 ) : ! 1 } , update : function ( ) { var a = this . map . getExtent ( ) ; if ( a ) { this . gratLayer . destroyFeatures ( ) ; var b = new OpenLayers . Projection ( "EPSG:4326" ) , c = this . map . getProjectionObject ( ) , d = this . map . getResolution ( ) ; c . proj && "longlat" == c . proj . projName && ( this . numPoints = 1 ) ; var e = this . map . getCenter ( ) , f = new OpenLayers . Pixel ( e . lon , e . lat ) ; OpenLayers . Projection . transform ( f , c , b ) ; for ( var e = this . targetSize * d , e = e * e , g , d = 0 ; d < this . intervals . length ; ++ d ) { g =
this . intervals [ d ] ; var h = g / 2 , i = f . offset ( { x : - h , y : - h } ) , h = f . offset ( { x : h , y : h } ) ; OpenLayers . Projection . transform ( i , b , c ) ; OpenLayers . Projection . transform ( h , b , c ) ; if ( ( i . x - h . x ) * ( i . x - h . x ) + ( i . y - h . y ) * ( i . y - h . y ) <= e ) break } f . x = Math . floor ( f . x / g ) * g ; f . y = Math . floor ( f . y / g ) * g ; var d = 0 , e = [ f . clone ( ) ] , h = f . clone ( ) , j ; do h = h . offset ( { x : 0 , y : g } ) , j = OpenLayers . Projection . transform ( h . clone ( ) , b , c ) , e . unshift ( h ) ; while ( a . containsPixel ( j ) && 1E3 > ++ d ) ; h = f . clone ( ) ; do h = h . offset ( { x : 0 , y : - g } ) , j = OpenLayers . Projection . transform ( h . clone ( ) , b , c ) , e . push ( h ) ;
while ( a . containsPixel ( j ) && 1E3 > ++ d ) ; d = 0 ; i = [ f . clone ( ) ] ; h = f . clone ( ) ; do h = h . offset ( { x : - g , y : 0 } ) , j = OpenLayers . Projection . transform ( h . clone ( ) , b , c ) , i . unshift ( h ) ; while ( a . containsPixel ( j ) && 1E3 > ++ d ) ; h = f . clone ( ) ; do h = h . offset ( { x : g , y : 0 } ) , j = OpenLayers . Projection . transform ( h . clone ( ) , b , c ) , i . push ( h ) ; while ( a . containsPixel ( j ) && 1E3 > ++ d ) ; g = [ ] ; for ( d = 0 ; d < i . length ; ++ d ) { j = i [ d ] . x ; for ( var f = [ ] , k = null , l = Math . min ( e [ 0 ] . y , 90 ) , h = Math . max ( e [ e . length - 1 ] . y , - 90 ) , m = ( l - h ) / this . numPoints , l = h , h = 0 ; h <= this . numPoints ; ++ h ) { var n = new OpenLayers . Geometry . Point ( j ,
l ) ; n . transform ( b , c ) ; f . push ( n ) ; l += m ; n . y >= a . bottom && ! k && ( k = n ) } this . labelled && ( k = new OpenLayers . Geometry . Point ( k . x , a . bottom ) , j = { value : j , label : this . labelled ? OpenLayers . Util . getFormattedLonLat ( j , "lon" , this . labelFormat ) : "" , labelAlign : "cb" , xOffset : 0 , yOffset : 2 } , this . gratLayer . addFeatures ( new OpenLayers . Feature . Vector ( k , j ) ) ) ; f = new OpenLayers . Geometry . LineString ( f ) ; g . push ( new OpenLayers . Feature . Vector ( f ) ) } for ( h = 0 ; h < e . length ; ++ h ) if ( l = e [ h ] . y , ! ( - 90 > l || 90 < l ) ) { f = [ ] ; d = i [ 0 ] . x ; m = ( i [ i . length - 1 ] . x - d ) / this . numPoints ;
j = d ; k = null ; for ( d = 0 ; d <= this . numPoints ; ++ d ) n = new OpenLayers . Geometry . Point ( j , l ) , n . transform ( b , c ) , f . push ( n ) , j += m , n . x < a . right && ( k = n ) ; this . labelled && ( k = new OpenLayers . Geometry . Point ( a . right , k . y ) , j = { value : l , label : this . labelled ? OpenLayers . Util . getFormattedLonLat ( l , "lat" , this . labelFormat ) : "" , labelAlign : "rb" , xOffset : - 2 , yOffset : 2 } , this . gratLayer . addFeatures ( new OpenLayers . Feature . Vector ( k , j ) ) ) ; f = new OpenLayers . Geometry . LineString ( f ) ; g . push ( new OpenLayers . Feature . Vector ( f ) ) } this . gratLayer . addFeatures ( g ) } } , CLASS _NAME : "OpenLayers.Control.Graticule" } ) ; OpenLayers . Layer . UTFGrid = OpenLayers . Class ( OpenLayers . Layer . XYZ , { isBaseLayer : ! 1 , projection : new OpenLayers . Projection ( "EPSG:900913" ) , useJSONP : ! 1 , tileClass : OpenLayers . Tile . UTFGrid , initialize : function ( a ) { OpenLayers . Layer . Grid . prototype . initialize . apply ( this , [ a . name , a . url , { } , a ] ) ; this . tileOptions = OpenLayers . Util . extend ( { utfgridResolution : this . utfgridResolution } , this . tileOptions ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . UTFGrid ( this . getOptions ( ) ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this ,
[ a ] ) } , getFeatureInfo : function ( a ) { var b = null , a = this . getTileData ( a ) ; a . tile && ( b = a . tile . getFeatureInfo ( a . i , a . j ) ) ; return b } , getFeatureId : function ( a ) { var b = null , a = this . getTileData ( a ) ; a . tile && ( b = a . tile . getFeatureId ( a . i , a . j ) ) ; return b } , CLASS _NAME : "OpenLayers.Layer.UTFGrid" } ) ; OpenLayers . Layer . ArcGISCache = OpenLayers . Class ( OpenLayers . Layer . XYZ , { url : null , tileOrigin : null , tileSize : new OpenLayers . Size ( 256 , 256 ) , useArcGISServer : ! 0 , type : "png" , useScales : ! 1 , overrideDPI : ! 1 , initialize : function ( a , b , c ) { OpenLayers . Layer . XYZ . prototype . initialize . apply ( this , arguments ) ; this . resolutions && ( this . serverResolutions = this . resolutions , this . maxExtent = this . getMaxExtentForResolution ( this . resolutions [ 0 ] ) ) ; if ( this . layerInfo ) { var d = this . layerInfo , e = new OpenLayers . Bounds ( d . fullExtent . xmin , d . fullExtent . ymin ,
d . fullExtent . xmax , d . fullExtent . ymax ) ; this . projection = "EPSG:" + d . spatialReference . wkid ; this . sphericalMercator = 102100 == d . spatialReference . wkid ; this . units = "esriFeet" == d . units ? "ft" : "m" ; if ( d . tileInfo ) { this . tileSize = new OpenLayers . Size ( d . tileInfo . width || d . tileInfo . cols , d . tileInfo . height || d . tileInfo . rows ) ; this . tileOrigin = new OpenLayers . LonLat ( d . tileInfo . origin . x , d . tileInfo . origin . y ) ; var f = new OpenLayers . Geometry . Point ( e . left , e . top ) , e = new OpenLayers . Geometry . Point ( e . right , e . bottom ) ; this . useScales ? this . scales =
[ ] : this . resolutions = [ ] ; this . lods = [ ] ; for ( var g in d . tileInfo . lods ) if ( d . tileInfo . lods . hasOwnProperty ( g ) ) { var h = d . tileInfo . lods [ g ] ; this . useScales ? this . scales . push ( h . scale ) : this . resolutions . push ( h . resolution ) ; var i = this . getContainingTileCoords ( f , h . resolution ) ; h . startTileCol = i . x ; h . startTileRow = i . y ; i = this . getContainingTileCoords ( e , h . resolution ) ; h . endTileCol = i . x ; h . endTileRow = i . y ; this . lods . push ( h ) } this . maxExtent = this . calculateMaxExtentWithLOD ( this . lods [ 0 ] ) ; this . serverResolutions = this . resolutions ; this . overrideDPI &&
d . tileInfo . dpi && ( OpenLayers . DOTS _PER _INCH = d . tileInfo . dpi ) } } } , getContainingTileCoords : function ( a , b ) { return new OpenLayers . Pixel ( Math . max ( Math . floor ( ( a . x - this . tileOrigin . lon ) / ( this . tileSize . w * b ) ) , 0 ) , Math . max ( Math . floor ( ( this . tileOrigin . lat - a . y ) / ( this . tileSize . h * b ) ) , 0 ) ) } , calculateMaxExtentWithLOD : function ( a ) { var b = this . tileOrigin . lon + a . startTileCol * this . tileSize . w * a . resolution , c = this . tileOrigin . lat - a . startTileRow * this . tileSize . h * a . resolution ; return new OpenLayers . Bounds ( b , c - ( a . endTileRow - a . startTileRow +
1 ) * this . tileSize . h * a . resolution , b + ( a . endTileCol - a . startTileCol + 1 ) * this . tileSize . w * a . resolution , c ) } , calculateMaxExtentWithExtent : function ( a , b ) { var c = new OpenLayers . Geometry . Point ( a . left , a . top ) , d = new OpenLayers . Geometry . Point ( a . right , a . bottom ) , c = this . getContainingTileCoords ( c , b ) , d = this . getContainingTileCoords ( d , b ) ; return this . calculateMaxExtentWithLOD ( { resolution : b , startTileCol : c . x , startTileRow : c . y , endTileCol : d . x , endTileRow : d . y } ) } , getUpperLeftTileCoord : function ( a ) { return this . getContainingTileCoords ( new OpenLayers . Geometry . Point ( this . maxExtent . left ,
this . maxExtent . top ) , a ) } , getLowerRightTileCoord : function ( a ) { return this . getContainingTileCoords ( new OpenLayers . Geometry . Point ( this . maxExtent . right , this . maxExtent . bottom ) , a ) } , getMaxExtentForResolution : function ( a ) { var b = this . getUpperLeftTileCoord ( a ) , c = this . getLowerRightTileCoord ( a ) , d = this . tileOrigin . lon + b . x * this . tileSize . w * a , e = this . tileOrigin . lat - b . y * this . tileSize . h * a ; return new OpenLayers . Bounds ( d , e - ( c . y - b . y + 1 ) * this . tileSize . h * a , d + ( c . x - b . x + 1 ) * this . tileSize . w * a , e ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . ArcGISCache ( this . name ,
this . url , this . options ) ) ; return OpenLayers . Layer . XYZ . prototype . clone . apply ( this , [ a ] ) } , getMaxExtent : function ( ) { return this . maxExtent = this . getMaxExtentForResolution ( this . map . getResolution ( ) ) } , getTileOrigin : function ( ) { var a = this . getMaxExtent ( ) ; return new OpenLayers . LonLat ( a . left , a . bottom ) } , getURL : function ( a ) { var b = this . getResolution ( ) , c = this . tileOrigin . lon + b * this . tileSize . w / 2 , d = this . tileOrigin . lat - b * this . tileSize . h / 2 , a = a . getCenterLonLat ( ) , c = Math . round ( Math . abs ( ( a . lon - c ) / ( b * this . tileSize . w ) ) ) , d = Math . round ( Math . abs ( ( d -
a . lat ) / ( b * this . tileSize . h ) ) ) , a = this . map . getZoom ( ) ; if ( this . lods ) { if ( b = this . lods [ this . map . getZoom ( ) ] , c < b . startTileCol || c > b . endTileCol || d < b . startTileRow || d > b . endTileRow ) return null } else { var e = this . getUpperLeftTileCoord ( b ) , b = this . getLowerRightTileCoord ( b ) ; if ( c < e . x || c >= b . x || d < e . y || d >= b . y ) return null } b = this . url ; e = "" + c + d + a ; OpenLayers . Util . isArray ( b ) && ( b = this . selectUrl ( e , b ) ) ; this . useArcGISServer ? b += "/tile/${z}/${y}/${x}" : ( c = "C" + this . zeroPad ( c , 8 , 16 ) , d = "R" + this . zeroPad ( d , 8 , 16 ) , a = "L" + this . zeroPad ( a , 2 , 16 ) , b =
b + "/${z}/${y}/${x}." + this . type ) ; b = OpenLayers . String . format ( b , { x : c , y : d , z : a } ) ; return OpenLayers . Util . urlAppend ( b , OpenLayers . Util . getParameterString ( this . params ) ) } , zeroPad : function ( a , b , c ) { for ( a = a . toString ( c || 10 ) ; a . length < b ; ) a = "0" + a ; return a } , CLASS _NAME : "OpenLayers.Layer.ArcGISCache" } ) ; OpenLayers . Control . WMSGetFeatureInfo = OpenLayers . Class ( OpenLayers . Control , { hover : ! 1 , drillDown : ! 1 , maxFeatures : 10 , clickCallback : "click" , output : "features" , layers : null , queryVisible : ! 1 , url : null , layerUrls : null , infoFormat : "text/html" , vendorParams : { } , format : null , formatOptions : null , handlerOptions : null , handler : null , hoverRequest : null , initialize : function ( a ) { a = a || { } ; a . handlerOptions = a . handlerOptions || { } ; OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . format || ( this . format = new OpenLayers . Format . WMSGetFeatureInfo ( a . formatOptions ) ) ;
! 0 === this . drillDown && ( this . hover = ! 1 ) ; this . hover ? this . handler = new OpenLayers . Handler . Hover ( this , { move : this . cancelHover , pause : this . getInfoForHover } , OpenLayers . Util . extend ( this . handlerOptions . hover || { } , { delay : 250 } ) ) : ( a = { } , a [ this . clickCallback ] = this . getInfoForClick , this . handler = new OpenLayers . Handler . Click ( this , a , this . handlerOptions . click || { } ) ) } , getInfoForClick : function ( a ) { this . events . triggerEvent ( "beforegetfeatureinfo" , { xy : a . xy } ) ; OpenLayers . Element . addClass ( this . map . viewPortDiv , "olCursorWait" ) ; this . request ( a . xy ,
{ } ) } , getInfoForHover : function ( a ) { this . events . triggerEvent ( "beforegetfeatureinfo" , { xy : a . xy } ) ; this . request ( a . xy , { hover : ! 0 } ) } , cancelHover : function ( ) { this . hoverRequest && ( this . hoverRequest . abort ( ) , this . hoverRequest = null ) } , findLayers : function ( ) { for ( var a = this . layers || this . map . layers , b = [ ] , c , d , e = a . length - 1 ; 0 <= e ; -- e ) if ( c = a [ e ] , c instanceof OpenLayers . Layer . WMS && ( ! this . queryVisible || c . getVisibility ( ) ) ) d = OpenLayers . Util . isArray ( c . url ) ? c . url [ 0 ] : c . url , ! 1 === this . drillDown && ! this . url && ( this . url = d ) , ( ! 0 === this . drillDown ||
this . urlMatches ( d ) ) && b . push ( c ) ; return b } , urlMatches : function ( a ) { var b = OpenLayers . Util . isEquivalentUrl ( this . url , a ) ; if ( ! b && this . layerUrls ) for ( var c = 0 , d = this . layerUrls . length ; c < d ; ++ c ) if ( OpenLayers . Util . isEquivalentUrl ( this . layerUrls [ c ] , a ) ) { b = ! 0 ; break } return b } , buildWMSOptions : function ( a , b , c , d ) { for ( var e = [ ] , f = [ ] , g = 0 , h = b . length ; g < h ; g ++ ) null != b [ g ] . params . LAYERS && ( e = e . concat ( b [ g ] . params . LAYERS ) , f = f . concat ( this . getStyleNames ( b [ g ] ) ) ) ; b = b [ 0 ] ; g = this . map . getProjection ( ) ; ( h = b . projection ) && h . equals ( this . map . getProjectionObject ( ) ) &&
( g = h . getCode ( ) ) ; d = OpenLayers . Util . extend ( { service : "WMS" , version : b . params . VERSION , request : "GetFeatureInfo" , exceptions : b . params . EXCEPTIONS , bbox : this . map . getExtent ( ) . toBBOX ( null , b . reverseAxisOrder ( ) ) , feature _count : this . maxFeatures , height : this . map . getSize ( ) . h , width : this . map . getSize ( ) . w , format : d , info _format : b . params . INFO _FORMAT || this . infoFormat } , 1.3 <= parseFloat ( b . params . VERSION ) ? { crs : g , i : parseInt ( c . x ) , j : parseInt ( c . y ) } : { srs : g , x : parseInt ( c . x ) , y : parseInt ( c . y ) } ) ; 0 != e . length && ( d = OpenLayers . Util . extend ( { layers : e ,
query _layers : e , styles : f } , d ) ) ; OpenLayers . Util . applyDefaults ( d , this . vendorParams ) ; return { url : a , params : OpenLayers . Util . upperCaseObject ( d ) , callback : function ( b ) { this . handleResponse ( c , b , a ) } , scope : this } } , getStyleNames : function ( a ) { return a . params . STYLES ? a . params . STYLES : OpenLayers . Util . isArray ( a . params . LAYERS ) ? Array ( a . params . LAYERS . length ) : a . params . LAYERS . replace ( /[^,]/g , "" ) } , request : function ( a , b ) { var c = this . findLayers ( ) ; if ( 0 == c . length ) this . events . triggerEvent ( "nogetfeatureinfo" ) , OpenLayers . Element . removeClass ( this . map . viewPortDiv ,
"olCursorWait" ) ; else if ( b = b || { } , ! 1 === this . drillDown ) { var c = this . buildWMSOptions ( this . url , c , a , c [ 0 ] . params . FORMAT ) , d = OpenLayers . Request . GET ( c ) ; ! 0 === b . hover && ( this . hoverRequest = d ) } else { this . _numRequests = this . _requestCount = 0 ; this . features = [ ] ; for ( var d = { } , e , f = 0 , g = c . length ; f < g ; f ++ ) { var h = c [ f ] ; e = OpenLayers . Util . isArray ( h . url ) ? h . url [ 0 ] : h . url ; e in d ? d [ e ] . push ( h ) : ( this . _numRequests ++ , d [ e ] = [ h ] ) } for ( e in d ) c = d [ e ] , c = this . buildWMSOptions ( e , c , a , c [ 0 ] . params . FORMAT ) , OpenLayers . Request . GET ( c ) } } , triggerGetFeatureInfo : function ( a ,
b , c ) { this . events . triggerEvent ( "getfeatureinfo" , { text : a . responseText , features : c , request : a , xy : b } ) ; OpenLayers . Element . removeClass ( this . map . viewPortDiv , "olCursorWait" ) } , handleResponse : function ( a , b , c ) { var d = b . responseXML ; if ( ! d || ! d . documentElement ) d = b . responseText ; d = this . format . read ( d ) ; ! 1 === this . drillDown ? this . triggerGetFeatureInfo ( b , a , d ) : ( this . _requestCount ++ , this . _features = "object" === this . output ? ( this . _features || [ ] ) . concat ( { url : c , features : d } ) : ( this . _features || [ ] ) . concat ( d ) , this . _requestCount === this . _numRequests &&
( this . triggerGetFeatureInfo ( b , a , this . _features . concat ( ) ) , delete this . _features , delete this . _requestCount , delete this . _numRequests ) ) } , CLASS _NAME : "OpenLayers.Control.WMSGetFeatureInfo" } ) ; OpenLayers . Format . WMSCapabilities . v1 _3 _0 = OpenLayers . Class ( OpenLayers . Format . WMSCapabilities . v1 _3 , { version : "1.3.0" , CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1_3_0" } ) ; OpenLayers . Format . SOSGetFeatureOfInterest = OpenLayers . Class ( OpenLayers . Format . XML , { VERSION : "1.0.0" , namespaces : { sos : "http://www.opengis.net/sos/1.0" , gml : "http://www.opengis.net/gml" , sa : "http://www.opengis.net/sampling/1.0" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , schemaLocation : "http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd" , defaultPrefix : "sos" , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , read : function ( a ) { "string" ==
typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { features : [ ] } ; this . readNode ( a , b ) ; for ( var a = [ ] , c = 0 , d = b . features . length ; c < d ; c ++ ) { var e = b . features [ c ] ; this . internalProjection && ( this . externalProjection && e . components [ 0 ] ) && e . components [ 0 ] . transform ( this . externalProjection , this . internalProjection ) ; e = new OpenLayers . Feature . Vector ( e . components [ 0 ] , e . attributes ) ; a . push ( e ) } return a } , readers : { sa : { SamplingPoint : function ( a , b ) { if ( ! b . attributes ) { var c =
{ attributes : { } } ; b . features . push ( c ) ; b = c } b . attributes . id = this . getAttributeNS ( a , this . namespaces . gml , "id" ) ; this . readChildNodes ( a , b ) } , position : function ( a , b ) { this . readChildNodes ( a , b ) } } , gml : OpenLayers . Util . applyDefaults ( { FeatureCollection : function ( a , b ) { this . readChildNodes ( a , b ) } , featureMember : function ( a , b ) { var c = { attributes : { } } ; b . features . push ( c ) ; this . readChildNodes ( a , c ) } , name : function ( a , b ) { b . attributes . name = this . getChildValue ( a ) } , pos : function ( a , b ) { this . externalProjection || ( this . externalProjection = new OpenLayers . Projection ( a . getAttribute ( "srsName" ) ) ) ;
OpenLayers . Format . GML . v3 . prototype . readers . gml . pos . apply ( this , [ a , b ] ) } } , OpenLayers . Format . GML . v3 . prototype . readers . gml ) } , writers : { sos : { GetFeatureOfInterest : function ( a ) { for ( var b = this . createElementNSPlus ( "GetFeatureOfInterest" , { attributes : { version : this . VERSION , service : "SOS" , "xsi:schemaLocation" : this . schemaLocation } } ) , c = 0 , d = a . fois . length ; c < d ; c ++ ) this . writeNode ( "FeatureOfInterestId" , { foi : a . fois [ c ] } , b ) ; return b } , FeatureOfInterestId : function ( a ) { return this . createElementNSPlus ( "FeatureOfInterestId" , { value : a . foi } ) } } } ,
CLASS _NAME : "OpenLayers.Format.SOSGetFeatureOfInterest" } ) ; OpenLayers . Format . SOSGetObservation = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { ows : "http://www.opengis.net/ows" , gml : "http://www.opengis.net/gml" , sos : "http://www.opengis.net/sos/1.0" , ogc : "http://www.opengis.net/ogc" , om : "http://www.opengis.net/om/1.0" , sa : "http://www.opengis.net/sampling/1.0" , xlink : "http://www.w3.org/1999/xlink" , xsi : "http://www.w3.org/2001/XMLSchema-instance" } , regExes : { trimSpace : /^\s*|\s*$/g , removeSpace : /\s*/g , splitSpace : /\s+/ , trimComma : /\s*,\s*/g } , VERSION : "1.0.0" , schemaLocation : "http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd" ,
defaultPrefix : "sos" , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { measurements : [ ] , observations : [ ] } ; this . readNode ( a , b ) ; return b } , write : function ( a ) { a = this . writeNode ( "sos:GetObservation" , a ) ; a . setAttribute ( "xmlns:om" , this . namespaces . om ) ; a . setAttribute ( "xmlns:ogc" , this . namespaces . ogc ) ; this . setAttributeNS ( a , this . namespaces . xsi , "xsi:schemaLocation" , this . schemaLocation ) ; return OpenLayers . Format . XML . prototype . write . apply ( this ,
[ a ] ) } , readers : { om : { ObservationCollection : function ( a , b ) { b . id = this . getAttributeNS ( a , this . namespaces . gml , "id" ) ; this . readChildNodes ( a , b ) } , member : function ( a , b ) { this . readChildNodes ( a , b ) } , Measurement : function ( a , b ) { var c = { } ; b . measurements . push ( c ) ; this . readChildNodes ( a , c ) } , Observation : function ( a , b ) { var c = { } ; b . observations . push ( c ) ; this . readChildNodes ( a , c ) } , samplingTime : function ( a , b ) { var c = { } ; b . samplingTime = c ; this . readChildNodes ( a , c ) } , observedProperty : function ( a , b ) { b . observedProperty = this . getAttributeNS ( a , this . namespaces . xlink ,
"href" ) ; this . readChildNodes ( a , b ) } , procedure : function ( a , b ) { b . procedure = this . getAttributeNS ( a , this . namespaces . xlink , "href" ) ; this . readChildNodes ( a , b ) } , featureOfInterest : function ( a , b ) { var c = { features : [ ] } ; b . fois = [ ] ; b . fois . push ( c ) ; this . readChildNodes ( a , c ) ; for ( var d = [ ] , e = 0 , f = c . features . length ; e < f ; e ++ ) { var g = c . features [ e ] ; d . push ( new OpenLayers . Feature . Vector ( g . components [ 0 ] , g . attributes ) ) } c . features = d } , result : function ( a , b ) { var c = { } ; b . result = c ; "" !== this . getChildValue ( a ) ? ( c . value = this . getChildValue ( a ) , c . uom =
a . getAttribute ( "uom" ) ) : this . readChildNodes ( a , c ) } } , sa : OpenLayers . Format . SOSGetFeatureOfInterest . prototype . readers . sa , gml : OpenLayers . Util . applyDefaults ( { TimeInstant : function ( a , b ) { var c = { } ; b . timeInstant = c ; this . readChildNodes ( a , c ) } , timePosition : function ( a , b ) { b . timePosition = this . getChildValue ( a ) } } , OpenLayers . Format . SOSGetFeatureOfInterest . prototype . readers . gml ) } , writers : { sos : { GetObservation : function ( a ) { var b = this . createElementNSPlus ( "GetObservation" , { attributes : { version : this . VERSION , service : "SOS" } } ) ; this . writeNode ( "offering" ,
a , b ) ; a . eventTime && this . writeNode ( "eventTime" , a , b ) ; for ( var c in a . procedures ) this . writeNode ( "procedure" , a . procedures [ c ] , b ) ; for ( var d in a . observedProperties ) this . writeNode ( "observedProperty" , a . observedProperties [ d ] , b ) ; a . foi && this . writeNode ( "featureOfInterest" , a . foi , b ) ; this . writeNode ( "responseFormat" , a , b ) ; a . resultModel && this . writeNode ( "resultModel" , a , b ) ; a . responseMode && this . writeNode ( "responseMode" , a , b ) ; return b } , featureOfInterest : function ( a ) { var b = this . createElementNSPlus ( "featureOfInterest" ) ; this . writeNode ( "ObjectID" ,
a . objectId , b ) ; return b } , ObjectID : function ( a ) { return this . createElementNSPlus ( "ObjectID" , { value : a } ) } , responseFormat : function ( a ) { return this . createElementNSPlus ( "responseFormat" , { value : a . responseFormat } ) } , procedure : function ( a ) { return this . createElementNSPlus ( "procedure" , { value : a } ) } , offering : function ( a ) { return this . createElementNSPlus ( "offering" , { value : a . offering } ) } , observedProperty : function ( a ) { return this . createElementNSPlus ( "observedProperty" , { value : a } ) } , eventTime : function ( a ) { var b = this . createElementNSPlus ( "eventTime" ) ;
"latest" === a . eventTime && this . writeNode ( "ogc:TM_Equals" , a , b ) ; return b } , resultModel : function ( a ) { return this . createElementNSPlus ( "resultModel" , { value : a . resultModel } ) } , responseMode : function ( a ) { return this . createElementNSPlus ( "responseMode" , { value : a . responseMode } ) } } , ogc : { TM _Equals : function ( a ) { var b = this . createElementNSPlus ( "ogc:TM_Equals" ) ; this . writeNode ( "ogc:PropertyName" , { property : "urn:ogc:data:time:iso8601" } , b ) ; "latest" === a . eventTime && this . writeNode ( "gml:TimeInstant" , { value : "latest" } , b ) ; return b } , PropertyName : function ( a ) { return this . createElementNSPlus ( "ogc:PropertyName" ,
{ value : a . property } ) } } , gml : { TimeInstant : function ( a ) { var b = this . createElementNSPlus ( "gml:TimeInstant" ) ; this . writeNode ( "gml:timePosition" , a , b ) ; return b } , timePosition : function ( a ) { return this . createElementNSPlus ( "gml:timePosition" , { value : a . value } ) } } } , CLASS _NAME : "OpenLayers.Format.SOSGetObservation" } ) ; OpenLayers . Control . UTFGrid = OpenLayers . Class ( OpenLayers . Control , { autoActivate : ! 0 , layers : null , defaultHandlerOptions : { delay : 300 , pixelTolerance : 4 , stopMove : ! 1 , single : ! 0 , "double" : ! 1 , stopSingle : ! 1 , stopDouble : ! 1 } , handlerMode : "click" , setHandler : function ( a ) { this . handlerMode = a ; this . resetHandler ( ) } , resetHandler : function ( ) { this . handler && ( this . handler . deactivate ( ) , this . handler . destroy ( ) , this . handler = null ) ; "hover" == this . handlerMode ? this . handler = new OpenLayers . Handler . Hover ( this , { pause : this . handleEvent , move : this . reset } ,
this . handlerOptions ) : "click" == this . handlerMode ? this . handler = new OpenLayers . Handler . Click ( this , { click : this . handleEvent } , this . handlerOptions ) : "move" == this . handlerMode && ( this . handler = new OpenLayers . Handler . Hover ( this , { pause : this . handleEvent , move : this . handleEvent } , this . handlerOptions ) ) ; return this . handler ? ! 0 : ! 1 } , initialize : function ( a ) { a = a || { } ; a . handlerOptions = a . handlerOptions || this . defaultHandlerOptions ; OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . resetHandler ( ) } , handleEvent : function ( a ) { if ( null ==
a ) this . reset ( ) ; else { var b = this . map . getLonLatFromPixel ( a . xy ) ; if ( b ) { var c = this . findLayers ( ) ; if ( 0 < c . length ) { for ( var d = { } , e , f , g = 0 , h = c . length ; g < h ; g ++ ) e = c [ g ] , f = OpenLayers . Util . indexOf ( this . map . layers , e ) , d [ f ] = e . getFeatureInfo ( b ) ; this . callback ( d , b , a . xy ) } } } } , callback : function ( ) { } , reset : function ( ) { this . callback ( null ) } , findLayers : function ( ) { for ( var a = this . layers || this . map . layers , b = [ ] , c , d = a . length - 1 ; 0 <= d ; -- d ) c = a [ d ] , c instanceof OpenLayers . Layer . UTFGrid && b . push ( c ) ; return b } , CLASS _NAME : "OpenLayers.Control.UTFGrid" } ) ; OpenLayers . Format . CQL = function ( ) { function a ( a ) { function b ( ) { var a = e . pop ( ) ; switch ( a . type ) { case "LOGICAL" : var c = b ( ) , g = b ( ) ; return new OpenLayers . Filter . Logical ( { filters : [ g , c ] , type : f [ a . text . toUpperCase ( ) ] } ) ; case "NOT" : return c = b ( ) , new OpenLayers . Filter . Logical ( { filters : [ c ] , type : OpenLayers . Filter . Logical . NOT } ) ; case "BETWEEN" : return e . pop ( ) , g = b ( ) , a = b ( ) , c = b ( ) , new OpenLayers . Filter . Comparison ( { property : c , lowerBoundary : a , upperBoundary : g , type : OpenLayers . Filter . Comparison . BETWEEN } ) ; case "COMPARISON" : return g =
b ( ) , c = b ( ) , new OpenLayers . Filter . Comparison ( { property : c , value : g , type : d [ a . text . toUpperCase ( ) ] } ) ; case "VALUE" : return /^'.*'$/ . test ( a . text ) ? a . text . substr ( 1 , a . text . length - 2 ) : Number ( a . text ) ; case "SPATIAL" : switch ( a . text . toUpperCase ( ) ) { case "BBOX" : var c = b ( ) , a = b ( ) , g = b ( ) , h = b ( ) , i = b ( ) ; return new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . BBOX , property : i , value : OpenLayers . Bounds . fromArray ( [ h , g , a , c ] ) } ) ; case "INTERSECTS" : return g = b ( ) , c = b ( ) , new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . INTERSECTS ,
property : c , value : g } ) ; case "WITHIN" : return g = b ( ) , c = b ( ) , new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . WITHIN , property : c , value : g } ) ; case "CONTAINS" : return g = b ( ) , c = b ( ) , new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . CONTAINS , property : c , value : g } ) ; case "DWITHIN" : return a = b ( ) , g = b ( ) , c = b ( ) , new OpenLayers . Filter . Spatial ( { type : OpenLayers . Filter . Spatial . DWITHIN , value : g , property : c , distance : Number ( a ) } ) } case "GEOMETRY" : return OpenLayers . Geometry . fromWKT ( a . text ) ; default : return a . text } }
for ( var c = [ ] , e = [ ] ; a . length ; ) { var g = a . shift ( ) ; switch ( g . type ) { case "PROPERTY" : case "GEOMETRY" : case "VALUE" : e . push ( g ) ; break ; case "COMPARISON" : case "BETWEEN" : case "LOGICAL" : for ( var i = h [ g . type ] ; 0 < c . length && h [ c [ c . length - 1 ] . type ] <= i ; ) e . push ( c . pop ( ) ) ; c . push ( g ) ; break ; case "SPATIAL" : case "NOT" : case "LPAREN" : c . push ( g ) ; break ; case "RPAREN" : for ( ; 0 < c . length && "LPAREN" != c [ c . length - 1 ] . type ; ) e . push ( c . pop ( ) ) ; c . pop ( ) ; 0 < c . length && "SPATIAL" == c [ c . length - 1 ] . type && e . push ( c . pop ( ) ) ; case "COMMA" : case "END" : break ; default : throw Error ( "Unknown token type " +
g . type ) ; } } for ( ; 0 < c . length ; ) e . push ( c . pop ( ) ) ; a = b ( ) ; if ( 0 < e . length ) { a = "Remaining tokens after building AST: \n" ; for ( c = e . length - 1 ; 0 <= c ; c -- ) a += e [ c ] . type + ": " + e [ c ] . text + "\n" ; throw Error ( a ) ; } return a } var b = { PROPERTY : /^[_a-zA-Z]\w*/ , COMPARISON : /^(=|<>|<=|<|>=|>|LIKE)/i , COMMA : /^,/ , LOGICAL : /^(AND|OR)/i , VALUE : /^('\w+'|\d+(\.\d*)?|\.\d+)/ , LPAREN : /^\(/ , RPAREN : /^\)/ , SPATIAL : /^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i , NOT : /^NOT/i , BETWEEN : /^BETWEEN/i , GEOMETRY : function ( a ) { var b = /^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/ . exec ( a ) ;
if ( b ) { var c = a . length , b = a . indexOf ( "(" , b [ 0 ] . length ) ; if ( - 1 < b ) for ( var d = 1 ; b < c && 0 < d ; ) switch ( b ++ , a . charAt ( b ) ) { case "(" : d ++ ; break ; case ")" : d -- } return [ a . substr ( 0 , b + 1 ) ] } } , END : /^$/ } , c = { LPAREN : [ "GEOMETRY" , "SPATIAL" , "PROPERTY" , "VALUE" , "LPAREN" ] , RPAREN : [ "NOT" , "LOGICAL" , "END" , "RPAREN" ] , PROPERTY : [ "COMPARISON" , "BETWEEN" , "COMMA" ] , BETWEEN : [ "VALUE" ] , COMPARISON : [ "VALUE" ] , COMMA : [ "GEOMETRY" , "VALUE" , "PROPERTY" ] , VALUE : [ "LOGICAL" , "COMMA" , "RPAREN" , "END" ] , SPATIAL : [ "LPAREN" ] , LOGICAL : [ "NOT" , "VALUE" , "SPATIAL" , "PROPERTY" , "LPAREN" ] ,
NOT : [ "PROPERTY" , "LPAREN" ] , GEOMETRY : [ "COMMA" , "RPAREN" ] } , d = { "=" : OpenLayers . Filter . Comparison . EQUAL _TO , "<>" : OpenLayers . Filter . Comparison . NOT _EQUAL _TO , "<" : OpenLayers . Filter . Comparison . LESS _THAN , "<=" : OpenLayers . Filter . Comparison . LESS _THAN _OR _EQUAL _TO , ">" : OpenLayers . Filter . Comparison . GREATER _THAN , ">=" : OpenLayers . Filter . Comparison . GREATER _THAN _OR _EQUAL _TO , LIKE : OpenLayers . Filter . Comparison . LIKE , BETWEEN : OpenLayers . Filter . Comparison . BETWEEN } , e = { } , f = { AND : OpenLayers . Filter . Logical . AND , OR : OpenLayers . Filter . Logical . OR } ,
g = { } , h = { RPAREN : 3 , LOGICAL : 2 , COMPARISON : 1 } , i ; for ( i in d ) d . hasOwnProperty ( i ) && ( e [ d [ i ] ] = i ) ; for ( i in f ) f . hasOwnProperty ( i ) && ( g [ f [ i ] ] = i ) ; return OpenLayers . Class ( OpenLayers . Format , { read : function ( d ) { var e = d , d = [ ] , f , g = [ "NOT" , "GEOMETRY" , "SPATIAL" , "PROPERTY" , "LPAREN" ] ; do { a : { f = g ; for ( var h = void 0 , g = void 0 , i = f . length , h = 0 ; h < i ; h ++ ) { var g = f [ h ] , p = b [ g ] instanceof RegExp ? b [ g ] . exec ( e ) : ( 0 , b [ g ] ) ( e ) ; if ( p ) { f = p [ 0 ] ; e = e . substr ( f . length ) . replace ( /^\s*/ , "" ) ; f = { type : g , text : f , remainder : e } ; break a } } d = "ERROR: In parsing: [" + e + "], expected one of: " ;
for ( h = 0 ; h < i ; h ++ ) g = f [ h ] , d += "\n " + g + ": " + b [ g ] ; throw Error ( d ) ; } e = f . remainder ; g = c [ f . type ] ; if ( "END" != f . type && ! g ) throw Error ( "No follows list for " + f . type ) ; d . push ( f ) } while ( "END" != f . type ) ; d = a ( d ) ; this . keepData && ( this . data = d ) ; return d } , write : function ( a ) { if ( a instanceof OpenLayers . Geometry ) return a . toString ( ) ; switch ( a . CLASS _NAME ) { case "OpenLayers.Filter.Spatial" : switch ( a . type ) { case OpenLayers . Filter . Spatial . BBOX : return "BBOX(" + a . property + "," + a . value . toBBOX ( ) + ")" ; case OpenLayers . Filter . Spatial . DWITHIN : return "DWITHIN(" +
a . property + ", " + this . write ( a . value ) + ", " + a . distance + ")" ; case OpenLayers . Filter . Spatial . WITHIN : return "WITHIN(" + a . property + ", " + this . write ( a . value ) + ")" ; case OpenLayers . Filter . Spatial . INTERSECTS : return "INTERSECTS(" + a . property + ", " + this . write ( a . value ) + ")" ; case OpenLayers . Filter . Spatial . CONTAINS : return "CONTAINS(" + a . property + ", " + this . write ( a . value ) + ")" ; default : throw Error ( "Unknown spatial filter type: " + a . type ) ; } case "OpenLayers.Filter.Logical" : if ( a . type == OpenLayers . Filter . Logical . NOT ) return "NOT (" + this . write ( a . filters [ 0 ] ) +
")" ; for ( var b = "(" , c = ! 0 , d = 0 ; d < a . filters . length ; d ++ ) c ? c = ! 1 : b += ") " + g [ a . type ] + " (" , b += this . write ( a . filters [ d ] ) ; return b + ")" ; case "OpenLayers.Filter.Comparison" : return a . type == OpenLayers . Filter . Comparison . BETWEEN ? a . property + " BETWEEN " + this . write ( a . lowerBoundary ) + " AND " + this . write ( a . upperBoundary ) : a . property + " " + e [ a . type ] + " " + this . write ( a . value ) ; case void 0 : if ( "string" === typeof a ) return "'" + a + "'" ; if ( "number" === typeof a ) return "" + a ; default : throw Error ( "Can't encode: " + a . CLASS _NAME + " " + a ) ; } } , CLASS _NAME : "OpenLayers.Format.CQL" } ) } ( ) ; OpenLayers . Control . Split = OpenLayers . Class ( OpenLayers . Control , { layer : null , source : null , sourceOptions : null , tolerance : null , edge : ! 0 , deferDelete : ! 1 , mutual : ! 0 , targetFilter : null , sourceFilter : null , handler : null , initialize : function ( a ) { OpenLayers . Control . prototype . initialize . apply ( this , [ a ] ) ; this . options = a || { } ; this . options . source && this . setSource ( this . options . source ) } , setSource : function ( a ) { this . active ? ( this . deactivate ( ) , this . handler && ( this . handler . destroy ( ) , delete this . handler ) , this . source = a , this . activate ( ) ) : this . source =
a } , activate : function ( ) { var a = OpenLayers . Control . prototype . activate . call ( this ) ; if ( a ) if ( this . source ) { if ( this . source . events ) this . source . events . on ( { sketchcomplete : this . onSketchComplete , afterfeaturemodified : this . afterFeatureModified , scope : this } ) } else this . handler || ( this . handler = new OpenLayers . Handler . Path ( this , { done : function ( a ) { this . onSketchComplete ( { feature : new OpenLayers . Feature . Vector ( a ) } ) } } , { layerOptions : this . sourceOptions } ) ) , this . handler . activate ( ) ; return a } , deactivate : function ( ) { var a = OpenLayers . Control . prototype . deactivate . call ( this ) ;
a && this . source && this . source . events && this . layer . events . un ( { sketchcomplete : this . onSketchComplete , afterfeaturemodified : this . afterFeatureModified , scope : this } ) ; return a } , onSketchComplete : function ( a ) { this . feature = null ; return ! this . considerSplit ( a . feature ) } , afterFeatureModified : function ( a ) { a . modified && "function" === typeof a . feature . geometry . split && ( this . feature = a . feature , this . considerSplit ( a . feature ) ) } , removeByGeometry : function ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; ++ c ) if ( a [ c ] . geometry === b ) { a . splice ( c , 1 ) ; break } } ,
isEligible : function ( a ) { return a . geometry ? a . state !== OpenLayers . State . DELETE && "function" === typeof a . geometry . split && this . feature !== a && ( ! this . targetFilter || this . targetFilter . evaluate ( a . attributes ) ) : ! 1 } , considerSplit : function ( a ) { var b = ! 1 , c = ! 1 ; if ( ! this . sourceFilter || this . sourceFilter . evaluate ( a . attributes ) ) { for ( var d = this . layer && this . layer . features || [ ] , e , f , g = [ ] , h = [ ] , i = this . layer === this . source && this . mutual , j = { edge : this . edge , tolerance : this . tolerance , mutual : i } , k = [ a . geometry ] , l , m , n , o = 0 , p = d . length ; o < p ; ++ o ) if ( l =
d [ o ] , this . isEligible ( l ) ) { m = [ l . geometry ] ; for ( var q = 0 ; q < k . length ; ++ q ) { n = k [ q ] ; for ( var r = 0 ; r < m . length ; ++ r ) if ( e = m [ r ] , n . getBounds ( ) . intersectsBounds ( e . getBounds ( ) ) && ( e = n . split ( e , j ) ) ) if ( f = this . events . triggerEvent ( "beforesplit" , { source : a , target : l } ) , ! 1 !== f && ( i && ( f = e [ 0 ] , 1 < f . length && ( f . unshift ( q , 1 ) , Array . prototype . splice . apply ( k , f ) , q += f . length - 3 ) , e = e [ 1 ] ) , 1 < e . length ) ) e . unshift ( r , 1 ) , Array . prototype . splice . apply ( m , e ) , r += e . length - 3 } m && 1 < m . length && ( this . geomsToFeatures ( l , m ) , this . events . triggerEvent ( "split" , { original : l ,
features : m } ) , Array . prototype . push . apply ( g , m ) , h . push ( l ) , c = ! 0 ) } k && 1 < k . length && ( this . geomsToFeatures ( a , k ) , this . events . triggerEvent ( "split" , { original : a , features : k } ) , Array . prototype . push . apply ( g , k ) , h . push ( a ) , b = ! 0 ) ; if ( b || c ) { if ( this . deferDelete ) { d = [ ] ; o = 0 ; for ( p = h . length ; o < p ; ++ o ) c = h [ o ] , c . state === OpenLayers . State . INSERT ? d . push ( c ) : ( c . state = OpenLayers . State . DELETE , this . layer . drawFeature ( c ) ) ; this . layer . destroyFeatures ( d , { silent : ! 0 } ) ; o = 0 ; for ( p = g . length ; o < p ; ++ o ) g [ o ] . state = OpenLayers . State . INSERT } else this . layer . destroyFeatures ( h ,
{ silent : ! 0 } ) ; this . layer . addFeatures ( g , { silent : ! 0 } ) ; this . events . triggerEvent ( "aftersplit" , { source : a , features : g } ) } } return b } , geomsToFeatures : function ( a , b ) { var c = a . clone ( ) ; delete c . geometry ; for ( var d , e = 0 , f = b . length ; e < f ; ++ e ) d = c . clone ( ) , d . geometry = b [ e ] , d . state = OpenLayers . State . INSERT , b [ e ] = d } , destroy : function ( ) { this . active && this . deactivate ( ) ; OpenLayers . Control . prototype . destroy . call ( this ) } , CLASS _NAME : "OpenLayers.Control.Split" } ) ; OpenLayers . Layer . WMTS = OpenLayers . Class ( OpenLayers . Layer . Grid , { isBaseLayer : ! 0 , version : "1.0.0" , requestEncoding : "KVP" , url : null , layer : null , matrixSet : null , style : null , format : "image/jpeg" , tileOrigin : null , tileFullExtent : null , formatSuffix : null , matrixIds : null , dimensions : null , params : null , zoomOffset : 0 , serverResolutions : null , formatSuffixMap : { "image/png" : "png" , "image/png8" : "png" , "image/png24" : "png" , "image/png32" : "png" , png : "png" , "image/jpeg" : "jpg" , "image/jpg" : "jpg" , jpeg : "jpg" , jpg : "jpg" } , matrix : null , initialize : function ( a ) { var b =
{ url : ! 0 , layer : ! 0 , style : ! 0 , matrixSet : ! 0 } , c ; for ( c in b ) if ( ! ( c in a ) ) throw Error ( "Missing property '" + c + "' in layer configuration." ) ; a . params = OpenLayers . Util . upperCaseObject ( a . params ) ; OpenLayers . Layer . Grid . prototype . initialize . apply ( this , [ a . name , a . url , a . params , a ] ) ; this . formatSuffix || ( this . formatSuffix = this . formatSuffixMap [ this . format ] || this . format . split ( "/" ) . pop ( ) ) ; if ( this . matrixIds && ( a = this . matrixIds . length ) && "string" === typeof this . matrixIds [ 0 ] ) { b = this . matrixIds ; this . matrixIds = Array ( a ) ; for ( c = 0 ; c < a ; ++ c ) this . matrixIds [ c ] =
{ identifier : b [ c ] } } } , setMap : function ( ) { OpenLayers . Layer . Grid . prototype . setMap . apply ( this , arguments ) ; this . updateMatrixProperties ( ) } , updateMatrixProperties : function ( ) { if ( this . matrix = this . getMatrix ( ) ) if ( this . matrix . topLeftCorner && ( this . tileOrigin = this . matrix . topLeftCorner ) , this . matrix . tileWidth && this . matrix . tileHeight && ( this . tileSize = new OpenLayers . Size ( this . matrix . tileWidth , this . matrix . tileHeight ) ) , this . tileOrigin || ( this . tileOrigin = new OpenLayers . LonLat ( this . maxExtent . left , this . maxExtent . top ) ) , ! this . tileFullExtent ) this . tileFullExtent =
this . maxExtent } , moveTo : function ( a , b , c ) { ( b || ! this . matrix ) && this . updateMatrixProperties ( ) ; return OpenLayers . Layer . Grid . prototype . moveTo . apply ( this , arguments ) } , clone : function ( a ) { null == a && ( a = new OpenLayers . Layer . WMTS ( this . options ) ) ; return a = OpenLayers . Layer . Grid . prototype . clone . apply ( this , [ a ] ) } , getIdentifier : function ( ) { return this . getServerZoom ( ) } , getMatrix : function ( ) { var a ; if ( ! this . matrixIds || 0 === this . matrixIds . length ) a = { identifier : this . getIdentifier ( ) } ; else if ( "scaleDenominator" in this . matrixIds [ 0 ] ) for ( var b =
OpenLayers . METERS _PER _INCH * OpenLayers . INCHES _PER _UNIT [ this . units ] * this . getServerResolution ( ) / 2.8 E - 4 , c = Number . POSITIVE _INFINITY , d , e = 0 , f = this . matrixIds . length ; e < f ; ++ e ) d = Math . abs ( 1 - this . matrixIds [ e ] . scaleDenominator / b ) , d < c && ( c = d , a = this . matrixIds [ e ] ) ; else a = this . matrixIds [ this . getIdentifier ( ) ] ; return a } , getTileInfo : function ( a ) { var b = this . getServerResolution ( ) , c = ( a . lon - this . tileOrigin . lon ) / ( b * this . tileSize . w ) , a = ( this . tileOrigin . lat - a . lat ) / ( b * this . tileSize . h ) , b = Math . floor ( c ) , d = Math . floor ( a ) ; return { col : b ,
row : d , i : Math . floor ( ( c - b ) * this . tileSize . w ) , j : Math . floor ( ( a - d ) * this . tileSize . h ) } } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = "" ; if ( ! this . tileFullExtent || this . tileFullExtent . intersectsBounds ( a ) ) { var c = this . getTileInfo ( a . getCenterLonLat ( ) ) , a = this . dimensions ; if ( "REST" === this . requestEncoding . toUpperCase ( ) ) if ( b = this . params , "string" === typeof this . url && - 1 !== this . url . indexOf ( "{" ) ) { var d = this . url . replace ( /\{/g , "${" ) , c = { style : this . style , Style : this . style , TileMatrixSet : this . matrixSet , TileMatrix : this . matrix . identifier ,
TileRow : c . row , TileCol : c . col } ; if ( a ) { var e , f ; for ( f = a . length - 1 ; 0 <= f ; -- f ) e = a [ f ] , c [ e ] = b [ e . toUpperCase ( ) ] } b = OpenLayers . String . format ( d , c ) } else { d = this . version + "/" + this . layer + "/" + this . style + "/" ; if ( a ) for ( f = 0 ; f < a . length ; f ++ ) b [ a [ f ] ] && ( d = d + b [ a [ f ] ] + "/" ) ; d = d + this . matrixSet + "/" + this . matrix . identifier + "/" + c . row + "/" + c . col + "." + this . formatSuffix ; b = OpenLayers . Util . isArray ( this . url ) ? this . selectUrl ( d , this . url ) : this . url ; b . match ( /\/$/ ) || ( b += "/" ) ; b += d } else "KVP" === this . requestEncoding . toUpperCase ( ) && ( b = { SERVICE : "WMTS" , REQUEST : "GetTile" ,
VERSION : this . version , LAYER : this . layer , STYLE : this . style , TILEMATRIXSET : this . matrixSet , TILEMATRIX : this . matrix . identifier , TILEROW : c . row , TILECOL : c . col , FORMAT : this . format } , b = OpenLayers . Layer . Grid . prototype . getFullRequestString . apply ( this , [ b ] ) ) } return b } , mergeNewParams : function ( a ) { if ( "KVP" === this . requestEncoding . toUpperCase ( ) ) return OpenLayers . Layer . Grid . prototype . mergeNewParams . apply ( this , [ OpenLayers . Util . upperCaseObject ( a ) ] ) } , CLASS _NAME : "OpenLayers.Layer.WMTS" } ) ; OpenLayers . Protocol . SOS . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Protocol , { fois : null , formatOptions : null , initialize : function ( a ) { OpenLayers . Protocol . prototype . initialize . apply ( this , [ a ] ) ; a . format || ( this . format = new OpenLayers . Format . SOSGetFeatureOfInterest ( this . formatOptions ) ) } , destroy : function ( ) { this . options && ! this . options . format && this . format . destroy ( ) ; this . format = null ; OpenLayers . Protocol . prototype . destroy . apply ( this ) } , read : function ( a ) { a = OpenLayers . Util . extend ( { } , a ) ; OpenLayers . Util . applyDefaults ( a , this . options ||
{ } ) ; var b = new OpenLayers . Protocol . Response ( { requestType : "read" } ) , c = this . format , c = OpenLayers . Format . XML . prototype . write . apply ( c , [ c . writeNode ( "sos:GetFeatureOfInterest" , { fois : this . fois } ) ] ) ; b . priv = OpenLayers . Request . POST ( { url : a . url , callback : this . createCallback ( this . handleRead , b , a ) , data : c } ) ; return b } , handleRead : function ( a , b ) { if ( b . callback ) { var c = a . priv ; 200 <= c . status && 300 > c . status ? ( a . features = this . parseFeatures ( c ) , a . code = OpenLayers . Protocol . Response . SUCCESS ) : a . code = OpenLayers . Protocol . Response . FAILURE ;
b . callback . call ( b . scope , a ) } } , parseFeatures : function ( a ) { var b = a . responseXML ; if ( ! b || ! b . documentElement ) b = a . responseText ; return ! b || 0 >= b . length ? null : this . format . read ( b ) } , CLASS _NAME : "OpenLayers.Protocol.SOS.v1_0_0" } ) ; OpenLayers . Layer . KaMapCache = OpenLayers . Class ( OpenLayers . Layer . KaMap , { IMAGE _EXTENSIONS : { jpeg : "jpg" , gif : "gif" , png : "png" , png8 : "png" , png24 : "png" , dithered : "png" } , DEFAULT _FORMAT : "jpeg" , initialize : function ( a , b , c , d ) { OpenLayers . Layer . KaMap . prototype . initialize . apply ( this , arguments ) ; this . extension = this . IMAGE _EXTENSIONS [ this . params . i . toLowerCase ( ) || this . DEFAULT _FORMAT ] } , getURL : function ( a ) { var a = this . adjustBounds ( a ) , b = this . map . getResolution ( ) , c = Math . round ( 1E4 * this . map . getScale ( ) ) / 1E4 , d = Math . round ( a . left / b ) , a =
- Math . round ( a . top / b ) , b = Math . floor ( d / this . tileSize . w / this . params . metaTileSize . w ) * this . tileSize . w * this . params . metaTileSize . w , e = Math . floor ( a / this . tileSize . h / this . params . metaTileSize . h ) * this . tileSize . h * this . params . metaTileSize . h , c = [ "/" , this . params . map , "/" , c , "/" , this . params . g . replace ( /\s/g , "_" ) , "/def/t" , e , "/l" , b , "/t" , a , "l" , d , "." , this . extension ] , d = this . url ; OpenLayers . Util . isArray ( d ) && ( d = this . selectUrl ( c . join ( "" ) , d ) ) ; return d + c . join ( "" ) } , CLASS _NAME : "OpenLayers.Layer.KaMapCache" } ) ; OpenLayers . Protocol . WFS . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Protocol . WFS . v1 , { version : "1.1.0" , initialize : function ( a ) { OpenLayers . Protocol . WFS . v1 . prototype . initialize . apply ( this , arguments ) ; this . outputFormat && ! this . readFormat && ( "gml2" == this . outputFormat . toLowerCase ( ) ? this . readFormat = new OpenLayers . Format . GML . v2 ( { featureType : this . featureType , featureNS : this . featureNS , geometryName : this . geometryName } ) : "json" == this . outputFormat . toLowerCase ( ) && ( this . readFormat = new OpenLayers . Format . GeoJSON ) ) } , CLASS _NAME : "OpenLayers.Protocol.WFS.v1_1_0" } ) ; OpenLayers . Format . WMSCapabilities . v1 _1 _1 = OpenLayers . Class ( OpenLayers . Format . WMSCapabilities . v1 _1 , { version : "1.1.1" , readers : { wms : OpenLayers . Util . applyDefaults ( { SRS : function ( a , b ) { b . srs [ this . getChildValue ( a ) ] = ! 0 } } , OpenLayers . Format . WMSCapabilities . v1 _1 . prototype . readers . wms ) } , CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1_1_1" } ) ; OpenLayers . Format . WMSCapabilities . v1 _1 _1 _WMSC = OpenLayers . Class ( OpenLayers . Format . WMSCapabilities . v1 _1 _1 , { version : "1.1.1" , profile : "WMSC" , readers : { wms : OpenLayers . Util . applyDefaults ( { VendorSpecificCapabilities : function ( a , b ) { b . vendorSpecific = { tileSets : [ ] } ; this . readChildNodes ( a , b . vendorSpecific ) } , TileSet : function ( a , b ) { var c = { srs : { } , bbox : { } , resolutions : [ ] } ; this . readChildNodes ( a , c ) ; b . tileSets . push ( c ) } , Resolutions : function ( a , b ) { for ( var c = this . getChildValue ( a ) . split ( " " ) , d = 0 , e = c . length ; d < e ; d ++ ) "" != c [ d ] && b . resolutions . push ( parseFloat ( c [ d ] ) ) } ,
Width : function ( a , b ) { b . width = parseInt ( this . getChildValue ( a ) ) } , Height : function ( a , b ) { b . height = parseInt ( this . getChildValue ( a ) ) } , Layers : function ( a , b ) { b . layers = this . getChildValue ( a ) } , Styles : function ( a , b ) { b . styles = this . getChildValue ( a ) } } , OpenLayers . Format . WMSCapabilities . v1 _1 _1 . prototype . readers . wms ) } , CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC" } ) ; OpenLayers . Format . WMSCapabilities . v1 _1 _0 = OpenLayers . Class ( OpenLayers . Format . WMSCapabilities . v1 _1 , { version : "1.1.0" , readers : { wms : OpenLayers . Util . applyDefaults ( { SRS : function ( a , b ) { for ( var c = this . getChildValue ( a ) . split ( / +/ ) , d = 0 , e = c . length ; d < e ; d ++ ) b . srs [ c [ d ] ] = ! 0 } } , OpenLayers . Format . WMSCapabilities . v1 _1 . prototype . readers . wms ) } , CLASS _NAME : "OpenLayers.Format.WMSCapabilities.v1_1_0" } ) ; OpenLayers . Control . LayerSwitcher = OpenLayers . Class ( OpenLayers . Control , { roundedCorner : ! 1 , roundedCornerColor : "darkblue" , layerStates : null , layersDiv : null , baseLayersDiv : null , baseLayers : null , dataLbl : null , dataLayersDiv : null , dataLayers : null , minimizeDiv : null , maximizeDiv : null , ascending : ! 0 , initialize : function ( a ) { OpenLayers . Control . prototype . initialize . apply ( this , arguments ) ; this . layerStates = [ ] ; this . roundedCorner && OpenLayers . Console . warn ( "roundedCorner option is deprecated" ) } , destroy : function ( ) { this . clearLayersArray ( "base" ) ;
this . clearLayersArray ( "data" ) ; this . map . events . un ( { buttonclick : this . onButtonClick , addlayer : this . redraw , changelayer : this . redraw , removelayer : this . redraw , changebaselayer : this . redraw , scope : this } ) ; this . events . unregister ( "buttonclick" , this , this . onButtonClick ) ; OpenLayers . Control . prototype . destroy . apply ( this , arguments ) } , setMap : function ( a ) { OpenLayers . Control . prototype . setMap . apply ( this , arguments ) ; this . map . events . on ( { addlayer : this . redraw , changelayer : this . redraw , removelayer : this . redraw , changebaselayer : this . redraw ,
scope : this } ) ; this . outsideViewport ? ( this . events . attachToElement ( this . div ) , this . events . register ( "buttonclick" , this , this . onButtonClick ) ) : this . map . events . register ( "buttonclick" , this , this . onButtonClick ) } , draw : function ( ) { OpenLayers . Control . prototype . draw . apply ( this ) ; this . loadContents ( ) ; this . outsideViewport || this . minimizeControl ( ) ; this . redraw ( ) ; return this . div } , onButtonClick : function ( a ) { a = a . buttonElement ; a === this . minimizeDiv ? this . minimizeControl ( ) : a === this . maximizeDiv ? this . maximizeControl ( ) : a . _layerSwitcher ===
this . id && ( a [ "for" ] && ( a = document . getElementById ( a [ "for" ] ) ) , a . disabled || ( "radio" == a . type ? ( a . checked = ! 0 , this . map . setBaseLayer ( this . map . getLayer ( a . _layer ) ) ) : ( a . checked = ! a . checked , this . updateMap ( ) ) ) ) } , clearLayersArray : function ( a ) { this [ a + "LayersDiv" ] . innerHTML = "" ; this [ a + "Layers" ] = [ ] } , checkRedraw : function ( ) { var a = ! 1 ; if ( ! this . layerStates . length || this . map . layers . length != this . layerStates . length ) a = ! 0 ; else for ( var b = 0 , c = this . layerStates . length ; b < c ; b ++ ) { var d = this . layerStates [ b ] , e = this . map . layers [ b ] ; if ( d . name !=
e . name || d . inRange != e . inRange || d . id != e . id || d . visibility != e . visibility ) { a = ! 0 ; break } } return a } , redraw : function ( ) { if ( ! this . checkRedraw ( ) ) return this . div ; this . clearLayersArray ( "base" ) ; this . clearLayersArray ( "data" ) ; var a = ! 1 , b = ! 1 , c = this . map . layers . length ; this . layerStates = Array ( c ) ; for ( var d = 0 ; d < c ; d ++ ) { var e = this . map . layers [ d ] ; this . layerStates [ d ] = { name : e . name , visibility : e . visibility , inRange : e . inRange , id : e . id } } var f = this . map . layers . slice ( ) ; this . ascending || f . reverse ( ) ; d = 0 ; for ( c = f . length ; d < c ; d ++ ) { var e = f [ d ] ,
g = e . isBaseLayer ; if ( e . displayInLayerSwitcher ) { g ? b = ! 0 : a = ! 0 ; var h = g ? e == this . map . baseLayer : e . getVisibility ( ) , i = document . createElement ( "input" ) ; i . id = this . id + "_input_" + e . name ; i . name = g ? this . id + "_baseLayers" : e . name ; i . type = g ? "radio" : "checkbox" ; i . value = e . name ; i . checked = h ; i . defaultChecked = h ; i . className = "olButton" ; i . _layer = e . id ; i . _layerSwitcher = this . id ; ! g && ! e . inRange && ( i . disabled = ! 0 ) ; h = document . createElement ( "label" ) ; h [ "for" ] = i . id ; OpenLayers . Element . addClass ( h , "labelSpan olButton" ) ; h . _layer = e . id ; h . _layerSwitcher =
this . id ; ! g && ! e . inRange && ( h . style . color = "gray" ) ; h . innerHTML = e . name ; h . style . verticalAlign = g ? "bottom" : "baseline" ; var j = document . createElement ( "br" ) ; ( g ? this . baseLayers : this . dataLayers ) . push ( { layer : e , inputElem : i , labelSpan : h } ) ; e = g ? this . baseLayersDiv : this . dataLayersDiv ; e . appendChild ( i ) ; e . appendChild ( h ) ; e . appendChild ( j ) } } this . dataLbl . style . display = a ? "" : "none" ; this . baseLbl . style . display = b ? "" : "none" ; return this . div } , updateMap : function ( ) { for ( var a = 0 , b = this . baseLayers . length ; a < b ; a ++ ) { var c = this . baseLayers [ a ] ;
c . inputElem . checked && this . map . setBaseLayer ( c . layer , ! 1 ) } a = 0 ; for ( b = this . dataLayers . length ; a < b ; a ++ ) c = this . dataLayers [ a ] , c . layer . setVisibility ( c . inputElem . checked ) } , maximizeControl : function ( a ) { this . div . style . width = "" ; this . div . style . height = "" ; this . showControls ( ! 1 ) ; null != a && OpenLayers . Event . stop ( a ) } , minimizeControl : function ( a ) { this . div . style . width = "0px" ; this . div . style . height = "0px" ; this . showControls ( ! 0 ) ; null != a && OpenLayers . Event . stop ( a ) } , showControls : function ( a ) { this . maximizeDiv . style . display = a ? "" : "none" ;
this . minimizeDiv . style . display = a ? "none" : "" ; this . layersDiv . style . display = a ? "none" : "" } , loadContents : function ( ) { this . layersDiv = document . createElement ( "div" ) ; this . layersDiv . id = this . id + "_layersDiv" ; OpenLayers . Element . addClass ( this . layersDiv , "layersDiv" ) ; this . baseLbl = document . createElement ( "div" ) ; this . baseLbl . innerHTML = OpenLayers . i18n ( "Base Layer" ) ; OpenLayers . Element . addClass ( this . baseLbl , "baseLbl" ) ; this . baseLayersDiv = document . createElement ( "div" ) ; OpenLayers . Element . addClass ( this . baseLayersDiv , "baseLayersDiv" ) ;
this . dataLbl = document . createElement ( "div" ) ; this . dataLbl . innerHTML = OpenLayers . i18n ( "Overlays" ) ; OpenLayers . Element . addClass ( this . dataLbl , "dataLbl" ) ; this . dataLayersDiv = document . createElement ( "div" ) ; OpenLayers . Element . addClass ( this . dataLayersDiv , "dataLayersDiv" ) ; this . ascending ? ( this . layersDiv . appendChild ( this . baseLbl ) , this . layersDiv . appendChild ( this . baseLayersDiv ) , this . layersDiv . appendChild ( this . dataLbl ) , this . layersDiv . appendChild ( this . dataLayersDiv ) ) : ( this . layersDiv . appendChild ( this . dataLbl ) , this . layersDiv . appendChild ( this . dataLayersDiv ) ,
this . layersDiv . appendChild ( this . baseLbl ) , this . layersDiv . appendChild ( this . baseLayersDiv ) ) ; this . div . appendChild ( this . layersDiv ) ; this . roundedCorner && ( OpenLayers . Rico . Corner . round ( this . div , { corners : "tl bl" , bgColor : "transparent" , color : this . roundedCornerColor , blend : ! 1 } ) , OpenLayers . Rico . Corner . changeOpacity ( this . layersDiv , 0.75 ) ) ; var a = OpenLayers . Util . getImageLocation ( "layer-switcher-maximize.png" ) ; this . maximizeDiv = OpenLayers . Util . createAlphaImageDiv ( "OpenLayers_Control_MaximizeDiv" , null , null , a , "absolute" ) ;
OpenLayers . Element . addClass ( this . maximizeDiv , "maximizeDiv olButton" ) ; this . maximizeDiv . style . display = "none" ; this . div . appendChild ( this . maximizeDiv ) ; a = OpenLayers . Util . getImageLocation ( "layer-switcher-minimize.png" ) ; this . minimizeDiv = OpenLayers . Util . createAlphaImageDiv ( "OpenLayers_Control_MinimizeDiv" , null , null , a , "absolute" ) ; OpenLayers . Element . addClass ( this . minimizeDiv , "minimizeDiv olButton" ) ; this . minimizeDiv . style . display = "none" ; this . div . appendChild ( this . minimizeDiv ) } , CLASS _NAME : "OpenLayers.Control.LayerSwitcher" } ) ; OpenLayers . Format . Atom = OpenLayers . Class ( OpenLayers . Format . XML , { namespaces : { atom : "http://www.w3.org/2005/Atom" , georss : "http://www.georss.org/georss" } , feedTitle : "untitled" , defaultEntryTitle : "untitled" , gmlParser : null , xy : ! 1 , read : function ( a ) { "string" == typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; return this . parseFeatures ( a ) } , write : function ( a ) { var b ; if ( OpenLayers . Util . isArray ( a ) ) { b = this . createElementNSPlus ( "atom:feed" ) ; b . appendChild ( this . createElementNSPlus ( "atom:title" , { value : this . feedTitle } ) ) ;
for ( var c = 0 , d = a . length ; c < d ; c ++ ) b . appendChild ( this . buildEntryNode ( a [ c ] ) ) } else b = this . buildEntryNode ( a ) ; return OpenLayers . Format . XML . prototype . write . apply ( this , [ b ] ) } , buildContentNode : function ( a ) { var b = this . createElementNSPlus ( "atom:content" , { attributes : { type : a . type || null } } ) ; if ( a . src ) b . setAttribute ( "src" , a . src ) ; else if ( "text" == a . type || null == a . type ) b . appendChild ( this . createTextNode ( a . value ) ) ; else if ( "html" == a . type ) { if ( "string" != typeof a . value ) throw "HTML content must be in form of an escaped string" ; b . appendChild ( this . createTextNode ( a . value ) ) } else "xhtml" ==
a . type ? b . appendChild ( a . value ) : "xhtml" == a . type || a . type . match ( /(\+|\/)xml$/ ) ? b . appendChild ( a . value ) : b . appendChild ( this . createTextNode ( a . value ) ) ; return b } , buildEntryNode : function ( a ) { var b = a . attributes , c = b . atom || { } , d = this . createElementNSPlus ( "atom:entry" ) ; if ( c . authors ) for ( var e = OpenLayers . Util . isArray ( c . authors ) ? c . authors : [ c . authors ] , f = 0 , g = e . length ; f < g ; f ++ ) d . appendChild ( this . buildPersonConstructNode ( "author" , e [ f ] ) ) ; if ( c . categories ) for ( var e = OpenLayers . Util . isArray ( c . categories ) ? c . categories : [ c . categories ] ,
h , f = 0 , g = e . length ; f < g ; f ++ ) h = e [ f ] , d . appendChild ( this . createElementNSPlus ( "atom:category" , { attributes : { term : h . term , scheme : h . scheme || null , label : h . label || null } } ) ) ; c . content && d . appendChild ( this . buildContentNode ( c . content ) ) ; if ( c . contributors ) { e = OpenLayers . Util . isArray ( c . contributors ) ? c . contributors : [ c . contributors ] ; f = 0 ; for ( g = e . length ; f < g ; f ++ ) d . appendChild ( this . buildPersonConstructNode ( "contributor" , e [ f ] ) ) } a . fid && d . appendChild ( this . createElementNSPlus ( "atom:id" , { value : a . fid } ) ) ; if ( c . links ) { e = OpenLayers . Util . isArray ( c . links ) ?
c . links : [ c . links ] ; f = 0 ; for ( g = e . length ; f < g ; f ++ ) h = e [ f ] , d . appendChild ( this . createElementNSPlus ( "atom:link" , { attributes : { href : h . href , rel : h . rel || null , type : h . type || null , hreflang : h . hreflang || null , title : h . title || null , length : h . length || null } } ) ) } c . published && d . appendChild ( this . createElementNSPlus ( "atom:published" , { value : c . published } ) ) ; c . rights && d . appendChild ( this . createElementNSPlus ( "atom:rights" , { value : c . rights } ) ) ; if ( c . summary || b . description ) d . appendChild ( this . createElementNSPlus ( "atom:summary" , { value : c . summary ||
b . description } ) ) ; d . appendChild ( this . createElementNSPlus ( "atom:title" , { value : c . title || b . title || this . defaultEntryTitle } ) ) ; c . updated && d . appendChild ( this . createElementNSPlus ( "atom:updated" , { value : c . updated } ) ) ; a . geometry && ( b = this . createElementNSPlus ( "georss:where" ) , b . appendChild ( this . buildGeometryNode ( a . geometry ) ) , d . appendChild ( b ) ) ; return d } , initGmlParser : function ( ) { this . gmlParser = new OpenLayers . Format . GML . v3 ( { xy : this . xy , featureNS : "http://example.com#feature" , internalProjection : this . internalProjection ,
externalProjection : this . externalProjection } ) } , buildGeometryNode : function ( a ) { this . gmlParser || this . initGmlParser ( ) ; return this . gmlParser . writeNode ( "feature:_geometry" , a ) . firstChild } , buildPersonConstructNode : function ( a , b ) { var c = [ "uri" , "email" ] , d = this . createElementNSPlus ( "atom:" + a ) ; d . appendChild ( this . createElementNSPlus ( "atom:name" , { value : b . name } ) ) ; for ( var e = 0 , f = c . length ; e < f ; e ++ ) b [ c [ e ] ] && d . appendChild ( this . createElementNSPlus ( "atom:" + c [ e ] , { value : b [ c [ e ] ] } ) ) ; return d } , getFirstChildValue : function ( a , b , c ,
d ) { return ( a = this . getElementsByTagNameNS ( a , b , c ) ) && 0 < a . length ? this . getChildValue ( a [ 0 ] , d ) : d } , parseFeature : function ( a ) { var b = { } , c = null , d = null , e = null , f = this . namespaces . atom ; this . parsePersonConstructs ( a , "author" , b ) ; d = this . getElementsByTagNameNS ( a , f , "category" ) ; 0 < d . length && ( b . categories = [ ] ) ; for ( var g = 0 , h = d . length ; g < h ; g ++ ) { c = { } ; c . term = d [ g ] . getAttribute ( "term" ) ; if ( e = d [ g ] . getAttribute ( "scheme" ) ) c . scheme = e ; if ( e = d [ g ] . getAttribute ( "label" ) ) c . label = e ; b . categories . push ( c ) } d = this . getElementsByTagNameNS ( a , f , "content" ) ;
if ( 0 < d . length ) { c = { } ; if ( e = d [ 0 ] . getAttribute ( "type" ) ) c . type = e ; ( e = d [ 0 ] . getAttribute ( "src" ) ) ? c . src = e : ( c . value = "text" == c . type || "html" == c . type || null == c . type ? this . getFirstChildValue ( a , f , "content" , null ) : "xhtml" == c . type || c . type . match ( /(\+|\/)xml$/ ) ? this . getChildEl ( d [ 0 ] ) : this . getFirstChildValue ( a , f , "content" , null ) , b . content = c ) } this . parsePersonConstructs ( a , "contributor" , b ) ; b . id = this . getFirstChildValue ( a , f , "id" , null ) ; d = this . getElementsByTagNameNS ( a , f , "link" ) ; 0 < d . length && ( b . links = Array ( d . length ) ) ; for ( var i = [ "rel" ,
"type" , "hreflang" , "title" , "length" ] , g = 0 , h = d . length ; g < h ; g ++ ) { c = { } ; c . href = d [ g ] . getAttribute ( "href" ) ; for ( var j = 0 , k = i . length ; j < k ; j ++ ) ( e = d [ g ] . getAttribute ( i [ j ] ) ) && ( c [ i [ j ] ] = e ) ; b . links [ g ] = c } if ( c = this . getFirstChildValue ( a , f , "published" , null ) ) b . published = c ; if ( c = this . getFirstChildValue ( a , f , "rights" , null ) ) b . rights = c ; if ( c = this . getFirstChildValue ( a , f , "summary" , null ) ) b . summary = c ; b . title = this . getFirstChildValue ( a , f , "title" , null ) ; b . updated = this . getFirstChildValue ( a , f , "updated" , null ) ; c = { title : b . title , description : b . summary ,
atom : b } ; a = this . parseLocations ( a ) [ 0 ] ; a = new OpenLayers . Feature . Vector ( a , c ) ; a . fid = b . id ; return a } , parseFeatures : function ( a ) { var b = [ ] , c = this . getElementsByTagNameNS ( a , this . namespaces . atom , "entry" ) ; 0 == c . length && ( c = [ a ] ) ; for ( var a = 0 , d = c . length ; a < d ; a ++ ) b . push ( this . parseFeature ( c [ a ] ) ) ; return b } , parseLocations : function ( a ) { var b = this . namespaces . georss , c = { components : [ ] } , d = this . getElementsByTagNameNS ( a , b , "where" ) ; if ( d && 0 < d . length ) { this . gmlParser || this . initGmlParser ( ) ; for ( var e = 0 , f = d . length ; e < f ; e ++ ) this . gmlParser . readChildNodes ( d [ e ] ,
c ) } c = c . components ; if ( ( d = this . getElementsByTagNameNS ( a , b , "point" ) ) && 0 < d . length ) { e = 0 ; for ( f = d . length ; e < f ; e ++ ) { var g = OpenLayers . String . trim ( d [ e ] . firstChild . nodeValue ) . split ( /\s+/ ) ; 2 != g . length && ( g = OpenLayers . String . trim ( d [ e ] . firstChild . nodeValue ) . split ( /\s*,\s*/ ) ) ; c . push ( new OpenLayers . Geometry . Point ( g [ 1 ] , g [ 0 ] ) ) } } var h = this . getElementsByTagNameNS ( a , b , "line" ) ; if ( h && 0 < h . length ) for ( var i , e = 0 , f = h . length ; e < f ; e ++ ) { d = OpenLayers . String . trim ( h [ e ] . firstChild . nodeValue ) . split ( /\s+/ ) ; i = [ ] ; for ( var j = 0 , k = d . length ; j <
k ; j += 2 ) g = new OpenLayers . Geometry . Point ( d [ j + 1 ] , d [ j ] ) , i . push ( g ) ; c . push ( new OpenLayers . Geometry . LineString ( i ) ) } if ( ( a = this . getElementsByTagNameNS ( a , b , "polygon" ) ) && 0 < a . length ) { e = 0 ; for ( f = a . length ; e < f ; e ++ ) { d = OpenLayers . String . trim ( a [ e ] . firstChild . nodeValue ) . split ( /\s+/ ) ; i = [ ] ; j = 0 ; for ( k = d . length ; j < k ; j += 2 ) g = new OpenLayers . Geometry . Point ( d [ j + 1 ] , d [ j ] ) , i . push ( g ) ; c . push ( new OpenLayers . Geometry . Polygon ( [ new OpenLayers . Geometry . LinearRing ( c ) ] ) ) } } if ( this . internalProjection && this . externalProjection ) { e = 0 ; for ( f = c . length ; e <
f ; e ++ ) c [ e ] && c [ e ] . transform ( this . externalProjection , this . internalProjection ) } return c } , parsePersonConstructs : function ( a , b , c ) { for ( var d = [ ] , e = this . namespaces . atom , a = this . getElementsByTagNameNS ( a , e , b ) , f = [ "uri" , "email" ] , g = 0 , h = a . length ; g < h ; g ++ ) { var i = { } ; i . name = this . getFirstChildValue ( a [ g ] , e , "name" , null ) ; for ( var j = 0 , k = f . length ; j < k ; j ++ ) { var l = this . getFirstChildValue ( a [ g ] , e , f [ j ] , null ) ; l && ( i [ f [ j ] ] = l ) } d . push ( i ) } 0 < d . length && ( c [ b + "s" ] = d ) } , CLASS _NAME : "OpenLayers.Format.Atom" } ) ; OpenLayers . Control . KeyboardDefaults = OpenLayers . Class ( OpenLayers . Control , { autoActivate : ! 0 , slideFactor : 75 , observeElement : null , draw : function ( ) { this . handler = new OpenLayers . Handler . Keyboard ( this , { keydown : this . defaultKeyPress } , { observeElement : this . observeElement || document } ) } , defaultKeyPress : function ( a ) { var b , c = ! 0 ; switch ( a . keyCode ) { case OpenLayers . Event . KEY _LEFT : this . map . pan ( - this . slideFactor , 0 ) ; break ; case OpenLayers . Event . KEY _RIGHT : this . map . pan ( this . slideFactor , 0 ) ; break ; case OpenLayers . Event . KEY _UP : this . map . pan ( 0 ,
- this . slideFactor ) ; break ; case OpenLayers . Event . KEY _DOWN : this . map . pan ( 0 , this . slideFactor ) ; break ; case 33 : b = this . map . getSize ( ) ; this . map . pan ( 0 , - 0.75 * b . h ) ; break ; case 34 : b = this . map . getSize ( ) ; this . map . pan ( 0 , 0.75 * b . h ) ; break ; case 35 : b = this . map . getSize ( ) ; this . map . pan ( 0.75 * b . w , 0 ) ; break ; case 36 : b = this . map . getSize ( ) ; this . map . pan ( - 0.75 * b . w , 0 ) ; break ; case 43 : case 61 : case 187 : case 107 : this . map . zoomIn ( ) ; break ; case 45 : case 109 : case 189 : case 95 : this . map . zoomOut ( ) ; break ; default : c = ! 1 } c && OpenLayers . Event . stop ( a ) } , CLASS _NAME : "OpenLayers.Control.KeyboardDefaults" } ) ; OpenLayers . Format . WMTSCapabilities . v1 _0 _0 = OpenLayers . Class ( OpenLayers . Format . OWSCommon . v1 _1 _0 , { version : "1.0.0" , namespaces : { ows : "http://www.opengis.net/ows/1.1" , wmts : "http://www.opengis.net/wmts/1.0" , xlink : "http://www.w3.org/1999/xlink" } , yx : null , defaultPrefix : "wmts" , initialize : function ( a ) { OpenLayers . Format . XML . prototype . initialize . apply ( this , [ a ] ) ; this . options = a ; a = OpenLayers . Util . extend ( { } , OpenLayers . Format . WMTSCapabilities . prototype . yx ) ; this . yx = OpenLayers . Util . extend ( a , this . yx ) } , read : function ( a ) { "string" ==
typeof a && ( a = OpenLayers . Format . XML . prototype . read . apply ( this , [ a ] ) ) ; a && 9 == a . nodeType && ( a = a . documentElement ) ; var b = { } ; this . readNode ( a , b ) ; b . version = this . version ; return b } , readers : { wmts : { Capabilities : function ( a , b ) { this . readChildNodes ( a , b ) } , Contents : function ( a , b ) { b . contents = { } ; b . contents . layers = [ ] ; b . contents . tileMatrixSets = { } ; this . readChildNodes ( a , b . contents ) } , Layer : function ( a , b ) { var c = { styles : [ ] , formats : [ ] , dimensions : [ ] , tileMatrixSetLinks : [ ] , layers : [ ] } ; this . readChildNodes ( a , c ) ; b . layers . push ( c ) } , Style : function ( a ,
b ) { var c = { } ; c . isDefault = "true" === a . getAttribute ( "isDefault" ) ; this . readChildNodes ( a , c ) ; b . styles . push ( c ) } , Format : function ( a , b ) { b . formats . push ( this . getChildValue ( a ) ) } , TileMatrixSetLink : function ( a , b ) { var c = { } ; this . readChildNodes ( a , c ) ; b . tileMatrixSetLinks . push ( c ) } , TileMatrixSet : function ( a , b ) { if ( b . layers ) { var c = { matrixIds : [ ] } ; this . readChildNodes ( a , c ) ; b . tileMatrixSets [ c . identifier ] = c } else b . tileMatrixSet = this . getChildValue ( a ) } , TileMatrix : function ( a , b ) { var c = { supportedCRS : b . supportedCRS } ; this . readChildNodes ( a ,
c ) ; b . matrixIds . push ( c ) } , ScaleDenominator : function ( a , b ) { b . scaleDenominator = parseFloat ( this . getChildValue ( a ) ) } , TopLeftCorner : function ( a , b ) { var c = this . getChildValue ( a ) . split ( " " ) , d ; b . supportedCRS && ( d = ! ! this . yx [ b . supportedCRS . replace ( /urn:ogc:def:crs:(\w+):.+:(\w+)$/ , "urn:ogc:def:crs:$1::$2" ) ] ) ; b . topLeftCorner = d ? new OpenLayers . LonLat ( c [ 1 ] , c [ 0 ] ) : new OpenLayers . LonLat ( c [ 0 ] , c [ 1 ] ) } , TileWidth : function ( a , b ) { b . tileWidth = parseInt ( this . getChildValue ( a ) ) } , TileHeight : function ( a , b ) { b . tileHeight = parseInt ( this . getChildValue ( a ) ) } ,
MatrixWidth : function ( a , b ) { b . matrixWidth = parseInt ( this . getChildValue ( a ) ) } , MatrixHeight : function ( a , b ) { b . matrixHeight = parseInt ( this . getChildValue ( a ) ) } , ResourceURL : function ( a , b ) { b . resourceUrl = b . resourceUrl || { } ; b . resourceUrl [ a . getAttribute ( "resourceType" ) ] = { format : a . getAttribute ( "format" ) , template : a . getAttribute ( "template" ) } } , WSDL : function ( a , b ) { b . wsdl = { } ; b . wsdl . href = a . getAttribute ( "xlink:href" ) } , ServiceMetadataURL : function ( a , b ) { b . serviceMetadataUrl = { } ; b . serviceMetadataUrl . href = a . getAttribute ( "xlink:href" ) } ,
LegendURL : function ( a , b ) { b . legend = { } ; b . legend . href = a . getAttribute ( "xlink:href" ) ; b . legend . format = a . getAttribute ( "format" ) } , Dimension : function ( a , b ) { var c = { values : [ ] } ; this . readChildNodes ( a , c ) ; b . dimensions . push ( c ) } , Default : function ( a , b ) { b [ "default" ] = this . getChildValue ( a ) } , Value : function ( a , b ) { b . values . push ( this . getChildValue ( a ) ) } } , ows : OpenLayers . Format . OWSCommon . v1 _1 _0 . prototype . readers . ows } , CLASS _NAME : "OpenLayers.Format.WMTSCapabilities.v1_0_0" } ) ;