/* OpenLayers.js -- OpenLayers Map Viewer Library Copyright (c) 2006-2013 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. Includes compressed code under the following licenses: (For uncompressed versions of the code used, please see the OpenLayers Github repository: ) */ /** * Contains XMLHttpRequest.js * 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 */ /** * 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. */ var OpenLayers = { VERSION_NUMBER: "Release 2.13.1", 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) { a = a.split("-"); for (var 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); if (void 0 === f) break; 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, b) { var c = a; !0 === b && null != a && a.replace && (a = a.replace(/^\s*|\s*$/g, "")); return OpenLayers.String.isNumeric(a) ? parseFloat(a) : c; }, }; 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; }, zeroPad: function (a, b, c) { for (a = a.toString(c || 10); a.length < b; ) a = "0" + a; return a; }, }; 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) { if (a) switch (a.CLASS_NAME) { case "OpenLayers.LonLat": this.extendXY(a.lon, a.lat); break; case "OpenLayers.Geometry.Point": this.extendXY(a.x, a.y); break; case "OpenLayers.Bounds": this.centerLonLat = null; if (null == this.left || a.left < this.left) this.left = a.left; if (null == this.bottom || a.bottom < this.bottom) this.bottom = a.bottom; if (null == this.right || a.right > this.right) this.right = a.right; if (null == this.top || a.top > this.top) this.top = a.top; } }, extendXY: function (a, b) { this.centerLonLat = null; if (null == this.left || a < this.left) this.left = a; if (null == this.bottom || b < this.bottom) this.bottom = b; if (null == this.right || a > this.right) this.right = a; if (null == this.top || b > this.top) this.top = b; }, containsLonLat: function (a, b) { "boolean" === typeof b && (b = { inclusive: b }); b = b || {}; var 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; a = OpenLayers.Util.toFloat(a); b = OpenLayers.Util.toFloat(b); var 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) { b = b || {}; var 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) { a = OpenLayers.Util.getElement(a); var 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); }; OpenLayers.Util.removeItem = function (a, b) { for (var c = a.length - 1; 0 <= c; c--) a[c] == b && a.splice(c, 1); return a; }; OpenLayers.Util.indexOf = function (a, b) { if ("function" == typeof a.indexOf) return a.indexOf(b); for (var c = 0, d = a.length; c < d; c++) if (a[c] == b) return c; return -1; }; OpenLayers.Util.dotless = /\./g; OpenLayers.Util.modifyDOMElement = function (a, b, c, d, e, f, g, h) { b && (a.id = b.replace(OpenLayers.Util.dotless, "_")); c && ((a.style.left = c.x + "px"), (a.style.top = c.y + "px")); d && ((a.style.width = d.w + "px"), (a.style.height = d.h + "px")); e && (a.style.position = e); f && (a.style.border = f); g && (a.style.overflow = g); 0 <= parseFloat(h) && 1 > parseFloat(h) ? ((a.style.filter = "alpha(opacity=" + 100 * h + ")"), (a.style.opacity = h)) : 1 == parseFloat(h) && ((a.style.filter = ""), (a.style.opacity = "")); }; OpenLayers.Util.createDiv = function (a, b, c, d, e, f, g, h) { var k = document.createElement("div"); d && (k.style.backgroundImage = "url(" + d + ")"); a || (a = OpenLayers.Util.createUniqueID("OpenLayersDiv")); e || (e = "absolute"); OpenLayers.Util.modifyDOMElement(k, a, b, c, e, f, g, h); return k; }; OpenLayers.Util.createImage = function (a, b, c, d, e, f, g, h) { var k = document.createElement("img"); a || (a = OpenLayers.Util.createUniqueID("OpenLayersDiv")); e || (e = "relative"); OpenLayers.Util.modifyDOMElement(k, a, b, c, e, f, null, g); h && ((k.style.display = "none"), (b = function () { k.style.display = ""; OpenLayers.Event.stopObservingElement(k); }), OpenLayers.Event.observe(k, "load", b), OpenLayers.Event.observe(k, "error", b)); k.style.alt = a; k.galleryImg = "no"; d && (k.src = d); return k; }; OpenLayers.IMAGE_RELOAD_ATTEMPTS = 0; OpenLayers.Util.alphaHackNeeded = null; OpenLayers.Util.alphaHack = function () { if (null == OpenLayers.Util.alphaHackNeeded) { var a = navigator.appVersion.split("MSIE"), a = parseFloat(a[1]), b = !1; try { b = !!document.body.filters; } catch (c) {} OpenLayers.Util.alphaHackNeeded = b && 5.5 <= a && 7 > a; } return OpenLayers.Util.alphaHackNeeded; }; OpenLayers.Util.modifyAlphaImageDiv = function (a, b, c, d, e, f, g, h, k) { OpenLayers.Util.modifyDOMElement(a, b, c, d, f, null, null, k); b = a.childNodes[0]; e && (b.src = e); OpenLayers.Util.modifyDOMElement(b, a.id + "_innerImage", null, d, "relative", g); OpenLayers.Util.alphaHack() && ("none" != a.style.display && (a.style.display = "inline-block"), null == h && (h = "scale"), (a.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + b.src + "', sizingMethod='" + h + "')"), 0 <= parseFloat(a.style.opacity) && 1 > parseFloat(a.style.opacity) && (a.style.filter += " alpha(opacity=" + 100 * a.style.opacity + ")"), (b.style.filter = "alpha(opacity=0)")); }; OpenLayers.Util.createAlphaImageDiv = function (a, b, c, d, e, f, g, h, k) { var l = OpenLayers.Util.createDiv(); k = OpenLayers.Util.createImage(null, null, null, null, null, null, null, k); k.className = "olAlphaImg"; l.appendChild(k); OpenLayers.Util.modifyAlphaImageDiv(l, a, b, c, d, e, f, g, h); return l; }; 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) { a = a || {}; var c = "function" == typeof window.Event && b instanceof window.Event, d; for (d in b) if (void 0 === a[d] || (!c && b.hasOwnProperty && b.hasOwnProperty(d) && !a.hasOwnProperty(d))) a[d] = b[d]; !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 (null != d && "function" != typeof d) { if ("object" == typeof d && d.constructor == Array) { for (var e = [], f, g = 0, h = d.length; g < h; g++) (f = d[g]), e.push(encodeURIComponent(null === f || void 0 === f ? "" : 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; b || (b = a.textContent); 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 && null != c; ) c = c.parentNode; return c != b; }; OpenLayers.Util.DEFAULT_PRECISION = 14; OpenLayers.Util.toFloat = function (a, b) { null == b && (b = OpenLayers.Util.DEFAULT_PRECISION); "number" !== typeof a && (a = parseFloat(a)); return 0 === b ? a : parseFloat(a.toPrecision(b)); }; OpenLayers.Util.rad = function (a) { return (a * Math.PI) / 180; }; OpenLayers.Util.deg = function (a) { return (180 * a) / 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))), k = Math.sin(g), g = Math.cos(g), l = Math.sin(h), h = Math.cos(h), m = f, n = 2 * Math.PI, p = 20; 1e-12 < Math.abs(m - n) && 0 < --p; ) { var q = Math.sin(m), r = Math.cos(m), s = Math.sqrt(h * q * h * q + (g * l - k * h * r) * (g * l - k * h * r)); if (0 == s) return 0; var r = k * l + g * h * r, t = Math.atan2(s, r), u = Math.asin((g * h * q) / s), v = Math.cos(u) * Math.cos(u), q = r - (2 * k * l) / v, w = (c / 16) * v * (4 + c * (4 - 3 * v)), n = m, m = f + (1 - w) * c * Math.sin(u) * (t + w * s * (q + w * r * (-1 + 2 * q * q))); } if (0 == p) return NaN; d = (v * (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)))) * (t - c * s * (q + (c / 4) * (r * (-1 + 2 * q * q) - (c / 6) * q * (-3 + 4 * s * s) * (-3 + 4 * q * q)))) ).toFixed(3) / 1e3 ); }; OpenLayers.Util.destinationVincenty = function (a, b, c) { var d = OpenLayers.Util, e = d.VincentyConstants, f = e.a, g = e.b, h = e.f, e = a.lon; a = a.lat; var k = d.rad(b); b = Math.sin(k); k = Math.cos(k); a = (1 - h) * Math.tan(d.rad(a)); var l = 1 / Math.sqrt(1 + a * a), m = a * l, n = Math.atan2(a, k); a = l * b; for ( var p = 1 - a * a, f = (p * (f * f - g * g)) / (g * g), q = 1 + (f / 16384) * (4096 + f * (-768 + f * (320 - 175 * f))), r = (f / 1024) * (256 + f * (-128 + f * (74 - 47 * f))), f = c / (g * q), s = 2 * Math.PI; 1e-12 < Math.abs(f - s); ) var t = Math.cos(2 * n + f), u = Math.sin(f), v = Math.cos(f), w = r * u * (t + (r / 4) * (v * (-1 + 2 * t * t) - (r / 6) * t * (-3 + 4 * u * u) * (-3 + 4 * t * t))), s = f, f = c / (g * q) + w; c = m * u - l * v * k; g = Math.atan2(m * v + l * u * k, (1 - h) * Math.sqrt(a * a + c * c)); b = Math.atan2(u * b, l * v - m * u * k); k = (h / 16) * p * (4 + h * (4 - 3 * p)); t = b - (1 - k) * h * a * (f + k * u * (t + k * v * (-1 + 2 * t * t))); Math.atan2(a, -c); return new OpenLayers.LonLat(e + d.deg(t), d.deg(g)); }; OpenLayers.Util.getParameters = function (a, b) { b = b || {}; a = null === a || void 0 === a ? window.location.href : a; var c = ""; if (OpenLayers.String.contains(a, "?")) var d = a.indexOf("?") + 1, c = OpenLayers.String.contains(a, "#") ? a.indexOf("#") : a.length, c = a.substring(d, c); for (var d = {}, c = c.split(/[&;]/), e = 0, f = c.length; e < f; ++e) { var g = c[e].split("="); if (g[0]) { var h = g[0]; try { h = decodeURIComponent(h); } catch (k) { h = unescape(h); } g = (g[1] || "").replace(/\+/g, " "); try { g = decodeURIComponent(g); } catch (l) { g = unescape(g); } !1 !== b.splitArgs && (g = g.split(",")); 1 == g.length && (g = g[0]); d[h] = g; } } return d; }; OpenLayers.Util.lastSeqID = 0; OpenLayers.Util.createUniqueID = function (a) { a = null == a ? "id_" : a.replace(OpenLayers.Util.dotless, "_"); OpenLayers.Util.lastSeqID += 1; return a + OpenLayers.Util.lastSeqID; }; OpenLayers.INCHES_PER_UNIT = { inches: 1, ft: 12, mi: 63360, m: 39.37, km: 39370, 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.54e-5 / OpenLayers.METERS_PER_INCH, Mil: 2.54e-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 1 < a ? 1 / a : a; }; OpenLayers.Util.getResolutionFromScale = function (a, b) { var c; a && (null == b && (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) { null == b && (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 && "absolute" == OpenLayers.Element.getStyle(a, "position") && ("" == a.style.top || "" == a.style.left), e = null; if (a.getBoundingClientRect) (a = a.getBoundingClientRect()), (e = window.pageYOffset || c.scrollTop), (b[0] = a.left + (window.pageXOffset || 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] += e.offsetLeft), (b[1] += e.offsetTop), (e = e.offsetParent); c = OpenLayers.BROWSER_NAME; if ("opera" == c || ("safari" == c && "absolute" == OpenLayers.Element.getStyle(a, "position"))) b[1] -= document.body.offsetTop; for (e = a.offsetParent; e && e != document.body; ) { b[0] -= e.scrollLeft; if ("opera" != c || "TR" != e.tagName) b[1] -= e.scrollTop; e = e.offsetParent; } } return b; }; OpenLayers.Util.getViewportElement = function () { var a = arguments.callee.viewportElement; void 0 == a && ((a = "msie" == OpenLayers.BROWSER_NAME && "CSS1Compat" != document.compatMode ? document.body : document.documentElement), (arguments.callee.viewportElement = a)); return a; }; OpenLayers.Util.isEquivalentUrl = function (a, b, c) { c = c || {}; OpenLayers.Util.applyDefaults(c, { ignoreCase: !0, ignorePort80: !0, ignoreHash: !0, splitArgs: !1, }); a = OpenLayers.Util.createUrlObject(a, c); b = OpenLayers.Util.createUrlObject(b, c); for (var d in a) if ("args" !== d && a[d] != b[d]) return !1; for (d in a.args) { if (a.args[d] != b.args[d]) return !1; delete b.args[d]; } for (d in b.args) return !1; return !0; }; 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; 0 === a.indexOf("/") ? (a = d + a) : ((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 ? "80" == c.port || "0" == c.port ? "" : c.port : "" == c.port || "0" == c.port ? "80" : c.port; d.hash = b.ignoreHash || "#" === c.hash ? "" : c.hash; var e = c.search; e || ((e = a.indexOf("?")), (e = -1 != e ? a.substr(e) : "")); d.args = OpenLayers.Util.getParameters(e, { splitArgs: b.splitArgs }); 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 = -1 == b ? -1 != c ? a.substr(0, c) : a : -1 != c ? a.substr(0, Math.min(b, c)) : a.substr(0, b)); }; OpenLayers.IS_GECKO = (function () { var a = navigator.userAgent.toLowerCase(); return -1 == a.indexOf("webkit") && -1 != a.indexOf("gecko"); })(); 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(); -1 != b.indexOf("opera") ? (a = "opera") : -1 != b.indexOf("msie") ? (a = "msie") : -1 != b.indexOf("safari") ? (a = "safari") : -1 != b.indexOf("mozilla") && (a = -1 != b.indexOf("firefox") ? "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 = !1, k = null, l = g; l && "body" != l.tagName.toLowerCase(); ) { var m = OpenLayers.Element.getStyle(l, "position"); if ("absolute" == m) { h = !0; break; } else if (m && "static" != m) break; l = l.parentNode; } !h || (0 !== g.clientHeight && 0 !== g.clientWidth) || ((k = document.createElement("div")), (k.style.visibility = "hidden"), (k.style.position = "absolute"), (k.style.overflow = "visible"), (k.style.width = document.body.clientWidth + "px"), (k.style.height = document.body.clientHeight + "px"), k.appendChild(f)); f.style.position = "absolute"; b && (b.w ? ((d = b.w), (f.style.width = d + "px")) : b.h && ((e = b.h), (f.style.height = e + "px"))); c && c.displayClass && (f.className = c.displayClass); b = document.createElement("div"); b.innerHTML = a; b.style.overflow = "visible"; if (b.childNodes) for (a = 0, c = b.childNodes.length; a < c; a++) b.childNodes[a].style && (b.childNodes[a].style.overflow = "visible"); f.appendChild(b); k ? g.appendChild(k) : g.appendChild(f); d || ((d = parseInt(b.scrollWidth)), (f.style.width = d + "px")); e || (e = parseInt(b.scrollHeight)); f.removeChild(b); k ? (k.removeChild(f), g.removeChild(k)) : g.removeChild(f); return new OpenLayers.Size(d, e); }; OpenLayers.Util.getScrollbarWidth = function () { var a = OpenLayers.Util._scrollbarWidth; if (null == a) { 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"); a = ((a + 540) % 360) - 180; var d = Math.abs(a), e = Math.floor(d), f = (d = (d - e) / (1 / 60)), d = Math.floor(d), f = Math.round(10 * ((f - d) / (1 / 60))), f = f / 10; 60 <= f && ((f -= 60), (d += 1), 60 <= d && ((d -= 60), (e += 1))); 10 > e && (e = "0" + e); e += "\u00b0"; 0 <= c.indexOf("dm") && (10 > d && (d = "0" + d), (e += d + "'"), 0 <= c.indexOf("dms") && (10 > f && (f = "0" + f), (e += f + '"'))); return (e = "lon" == b ? e + (0 > a ? OpenLayers.i18n("W") : OpenLayers.i18n("E")) : e + (0 > a ? 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 (a) { throw Error("Read not implemented."); }, write: function (a) { throw Error("Write not implemented."); }, CLASS_NAME: "OpenLayers.Format", }); OpenLayers.Format.CSWGetRecords = function (a) { a = OpenLayers.Util.applyDefaults(a, OpenLayers.Format.CSWGetRecords.DEFAULTS); var 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, handlerOptions: 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) { 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 || OpenLayers.Event.preventDefault(a); a.stopPropagation ? a.stopPropagation() : (a.cancelBubble = !0); }, preventDefault: function (a) { a.preventDefault ? a.preventDefault() : (a.returnValue = !1); }, 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; "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) { d = d || !1; a = OpenLayers.Util.getElement(a); var e = a._eventCacheID; "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 k = g[h]; if (k.name == b && k.observer == c && k.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 = {}; this._msTouches = []; 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 (a) {}, 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 = !!window.navigator.msMaxTouchPoints, c, d = 0, e = this.BROWSER_EVENTS.length; d < e; d++ ) (c = this.BROWSER_EVENTS[d]), OpenLayers.Event.observe(a, c, this.eventHandler), b && 0 === c.indexOf("touch") && this.addMsTouchListener(a, c, 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 = this.getTouchClientXY(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); } }, getTouchClientXY: function (a) { var b = window.olMockWin || window, c = b.pageXOffset, b = b.pageYOffset, d = a.clientX, e = a.clientY; if ( (0 === a.pageY && Math.floor(e) > Math.floor(a.pageY)) || (0 === a.pageX && Math.floor(d) > Math.floor(a.pageX)) ) (d -= c), (e -= b); else if (e < a.pageY - b || d < a.pageX - c) (d = a.pageX - c), (e = a.pageY - b); a.olClientX = d; a.olClientY = e; return { clientX: d, clientY: e }; }, clearMouseCache: function () { this.element.scrolls = null; this.element.lefttop = null; 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 = [ window.pageXOffset || b.scrollLeft, window.pageYOffset || 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] ); }, addMsTouchListener: function (a, b, c) { function d(a) { c( OpenLayers.Util.applyDefaults( { stopPropagation: function () { for (var a = e.length - 1; 0 <= a; --a) e[a].stopPropagation(); }, preventDefault: function () { for (var a = e.length - 1; 0 <= a; --a) e[a].preventDefault(); }, type: b, }, a ) ); } var e = this._msTouches; switch (b) { case "touchstart": return this.addMsTouchListenerStart(a, b, d); case "touchend": return this.addMsTouchListenerEnd(a, b, d); case "touchmove": return this.addMsTouchListenerMove(a, b, d); default: throw "Unknown touch event type"; } }, addMsTouchListenerStart: function (a, b, c) { var d = this._msTouches; OpenLayers.Event.observe(a, "MSPointerDown", function (a) { for (var b = !1, g = 0, h = d.length; g < h; ++g) if (d[g].pointerId == a.pointerId) { b = !0; break; } b || d.push(a); a.touches = d.slice(); c(a); }); OpenLayers.Event.observe(a, "MSPointerUp", function (a) { for (var b = 0, c = d.length; b < c; ++b) if (d[b].pointerId == a.pointerId) { d.splice(b, 1); break; } }); }, addMsTouchListenerMove: function (a, b, c) { var d = this._msTouches; OpenLayers.Event.observe(a, "MSPointerMove", function (a) { if (a.pointerType != a.MSPOINTER_TYPE_MOUSE || 0 != a.buttons) if (1 != d.length || d[0].pageX != a.pageX || d[0].pageY != a.pageY) { for (var b = 0, g = d.length; b < g; ++b) if (d[b].pointerId == a.pointerId) { d[b] = a; break; } a.touches = d.slice(); c(a); } }); }, addMsTouchListenerEnd: function (a, b, c) { var d = this._msTouches; OpenLayers.Event.observe(a, "MSPointerUp", function (a) { for (var b = 0, g = d.length; b < g; ++b) if (d[b].pointerId == a.pointerId) { d.splice(b, 1); break; } a.touches = d.slice(); c(a); }); }, 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; }, ignore: function (a) { var b = 3, c = !1; do { if ("a" === a.nodeName.toLowerCase()) { c = !0; 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 if (this.startEvt) { if (this.completeRegEx.test(a.type)) { var b = OpenLayers.Util.pagePosition(c), d = OpenLayers.Util.getViewportElement(), e = window.pageYOffset || d.scrollTop; b[0] -= window.pageXOffset || d.scrollLeft; b[1] -= e; 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 (b = !this.ignore(OpenLayers.Event.element(a))), delete this.startEvt; return b; }, }); OpenLayers.Util = OpenLayers.Util || {}; OpenLayers.Util.vendorPrefix = (function () { function a(a) { return a ? a .replace(/([A-Z])/g, function (a) { return "-" + a.toLowerCase(); }) .replace(/^ms-/, "-ms-") : null; } function b(a, b) { if (void 0 === g[b]) { var c, e = 0, f = d.length, p = "undefined" !== typeof a.cssText; for (g[b] = null; e < f; e++) if ( ((c = d[e]) ? (p || (c = c.toLowerCase()), (c = c + b.charAt(0).toUpperCase() + b.slice(1))) : (c = b), void 0 !== a[c]) ) { g[b] = c; break; } } return g[b]; } function c(a) { return b(e, a); } var d = ["", "O", "ms", "Moz", "Webkit"], e = document.createElement("div").style, f = {}, g = {}; return { css: function (b) { if (void 0 === f[b]) { var d = b.replace(/(-[\s\S])/g, function (a) { return a.charAt(1).toUpperCase(); }), d = c(d); f[b] = a(d); } return f[b]; }, js: b, style: c, cssCache: f, jsCache: g, }; })(); OpenLayers.Animation = (function (a) { var b = OpenLayers.Util.vendorPrefix.js(a, "requestAnimationFrame"), c = !!b, d = (function () { var c = a[b] || function (b, c) { a.setTimeout(b, 16); }; return function (b, d) { c.apply(a, [b, d]); }; })(), e = 0, f = {}; return { isNative: c, requestFrame: d, start: function (a, b, c) { b = 0 < b ? b : Number.POSITIVE_INFINITY; var l = ++e, m = +new Date(); f[l] = function () { f[l] && +new Date() - m <= b ? (a(), f[l] && d(f[l], c)) : delete f[l]; }; d(f[l], c); return l; }, stop: function (a) { delete f[a]; }, }; })(window); OpenLayers.Tween = OpenLayers.Class({ easing: null, begin: null, finish: null, duration: null, callbacks: null, time: null, minFrameRate: null, startTime: 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.minFrameRate = d.minFrameRate || 30; this.time = 0; this.startTime = new Date().getTime(); 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 && (new Date().getTime() - this.startTime) / this.time <= 1e3 / this.minFrameRate && 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; "object" == typeof 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)), "object" == typeof 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.003750834e7, -2.003750834e7, 2.003750834e7, 2.003750834e7], }, }; 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 { b = b.getCode(); c = c.getCode(); var 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; var b = (Math.log(Math.tan(((90 + a.y) * Math.PI) / 360)) / Math.PI) * d; a.y = Math.max(-2.003750834e7, Math.min(b, 2.003750834e7)); return a; } function c(c, d) { var e = OpenLayers.Projection.addTransform, f = OpenLayers.Projection.nullTransform, g, p, q, r, s; g = 0; for (p = d.length; g < p; ++g) for (q = d[g], e(c, q, b), e(q, c, a), s = g + 1; s < p; ++s) (r = d[s]), e(q, r, f), e(r, q, f); } var d = 2.003750834e7, 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: !1, autoUpdateSize: !0, eventListeners: null, panTween: null, panMethod: OpenLayers.Easing.Expo.easeOut, panDuration: 50, zoomTween: null, zoomMethod: OpenLayers.Easing.Quad.easeOut, zoomDuration: 20, paddingForPopups: null, layerContainerOriginPx: 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, }); OpenLayers.TileManager && null !== this.tileManager && (this.tileManager instanceof OpenLayers.TileManager || (this.tileManager = new OpenLayers.TileManager(this.tileManager)), this.tileManager.addMap(this)); c = this.id + "_OpenLayers_Container"; this.layerContainerDiv = OpenLayers.Util.createDiv(c); this.layerContainerDiv.style.zIndex = this.Z_INDEX_BASE.Popup - 1; this.layerContainerOriginPx = { x: 0, y: 0 }; this.applyTransform(); this.viewPortDiv.appendChild(this.layerContainerDiv); this.updateSize(); if (this.eventListeners instanceof Object) this.events.on(this.eventListeners); !0 === this.autoUpdateSize && ((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, delete this.zoom, this.addLayers(b.layers), b.center && !this.getCenter() && this.setCenter(b.center, b.zoom)); this.panMethod && (this.panTween = new OpenLayers.Tween(this.panMethod)); this.zoomMethod && this.applyTransform.transform && (this.zoomTween = new OpenLayers.Tween(this.zoomMethod)); }, 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)); this.zoomTween && (this.zoomTween.stop(), (this.zoomTween = null)); OpenLayers.Event.stopObserving(window, "unload", this.unloadDestroy); this.unloadDestroy = null; this.updateSizeDestroy && OpenLayers.Event.stopObserving(window, "resize", this.updateSizeDestroy); 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.viewPortDiv.parentNode && this.viewPortDiv.parentNode.removeChild(this.viewPortDiv); this.viewPortDiv = null; this.tileManager && (this.tileManager.removeMap(this), (this.tileManager = 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)); } } this.events.triggerEvent("updatesize"); }, 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.panTween && this.getExtent().scale(this.panRatio).containsLonLat(a)) { 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 (b) { this.moveTo(a); this.dragging = !1; this.events.triggerEvent("moveend"); }, this), }, }); } } else this.setCenter(a); }, setCenter: function (a, b, c, d) { this.panTween && this.panTween.stop(); this.zoomTween && this.zoomTween.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, k = 0; this.restrictedExtent && ((h = c), (k = d), (g = !1)); a = g || (e <= this.maxPx.x - h && e >= this.minPx.x + h) ? Math.round(a) : 0; b = f <= this.maxPx.y - k && f >= this.minPx.y + k ? Math.round(b) : 0; if (a || b) { this.dragging || ((this.dragging = !0), this.events.triggerEvent("movestart")); this.center = null; a && ((this.layerContainerOriginPx.x -= a), (this.minPx.x -= a), (this.maxPx.x -= a)); b && ((this.layerContainerOriginPx.y -= b), (this.minPx.y -= b), (this.maxPx.y -= b)); this.applyTransform(); d = 0; for (e = this.layers.length; d < e; ++d) (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) { if (this.baseLayer && this.baseLayer.wrapDateLine) { var b = this.baseLayer.resolutions, c = this.getMaxExtent().getWidth() / this.size.w; if (this.getResolutionForZoom(a) > c) if (this.fractionalZoom) a = this.getZoomForResolution(c); else for (var d = a | 0, e = b.length; d < e; ++d) if (b[d] <= c) { a = d; break; } } return a; }, getMinZoom: function () { return this.adjustZoom(0); }, 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))); 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", { zoomChanged: e }); 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.layerContainerOriginPx.x = 0; this.layerContainerOriginPx.y = 0; this.applyTransform(); var f = this.getMaxExtent({ restricted: !0 }), h = f.getCenterLonLat(), g = this.center.lon - h.lon, h = h.lat - this.center.lat, k = Math.round(f.getWidth() / a), l = Math.round(f.getHeight() / a); this.minPx = { x: (this.size.w - k) / 2 - g / a, y: (this.size.h - l) / 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) (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 = this.layerContainerOriginPx.x; a = this.layerContainerOriginPx.y; var e = Math.round(b.x - c.x), b = Math.round(b.y - c.y); this.applyTransform((this.layerContainerOriginPx.x = e), (this.layerContainerOriginPx.y = b)); 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, b) { var c = this; if (c.isValidZoomLevel(a)) if ((c.baseLayer.wrapDateLine && (a = c.adjustZoom(a)), c.zoomTween)) { var d = c.getResolution(), e = c.getResolutionForZoom(a), f = { scale: 1 }, d = { scale: d / e }; c.zoomTween.playing && c.zoomTween.duration < 3 * c.zoomDuration ? (c.zoomTween.finish = { scale: c.zoomTween.finish.scale * d.scale }) : (b || ((e = c.getSize()), (b = { x: e.w / 2, y: e.h / 2 })), c.zoomTween.start(f, d, c.zoomDuration, { minFrameRate: 50, callbacks: { eachStep: function (a) { var d = c.layerContainerOriginPx; a = a.scale; c.applyTransform( d.x + (((a - 1) * (d.x - b.x)) | 0), d.y + (((a - 1) * (d.y - b.y)) | 0), a ); }, done: function (a) { c.applyTransform(); a = c.getResolution() / a.scale; var d = c.getZoomForResolution(a, !0); c.moveTo(c.getZoomTargetCenter(b, a), d, !0); }, }, })); } else (f = b ? c.getZoomTargetCenter(b, c.getResolutionForZoom(a)) : null), c.setCenter(f, 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) { a = this.getMaxExtent({ restricted: a ? a.restricted : !0 }); this.zoomToExtent(a); }, 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(), d = new OpenLayers.Bounds(e.lon - d, e.lat - c, e.lon + d, e.lat + c); this.zoomToExtent(d, 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; }, getZoomTargetCenter: function (a, b) { var c = null, d = this.getSize(), e = d.w / 2 - a.x, d = a.y - d.h / 2, f = this.getLonLatFromPixel(a); f && (c = new OpenLayers.LonLat(f.lon + e * b, f.lat + d * b)); return c; }, 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); var 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; null != a && (b = a.add(this.layerContainerOriginPx.x, this.layerContainerOriginPx.y)); return b; }, getLayerPxFromViewPortPx: function (a) { var b = null; null != a && ((b = a.add(-this.layerContainerOriginPx.x, -this.layerContainerOriginPx.y)), isNaN(b.x) || isNaN(b.y)) && (b = null); return b; }, getLonLatFromLayerPx: function (a) { a = this.getViewPortPxFromLayerPx(a); return this.getLonLatFromViewPortPx(a); }, getLayerPxFromLonLat: function (a) { a = this.getPixelFromLonLat(a); return this.getLayerPxFromViewPortPx(a); }, applyTransform: function (a, b, c) { c = c || 1; var d = this.layerContainerOriginPx, e = 1 !== c; a = a || d.x; b = b || d.y; var f = this.layerContainerDiv.style, g = this.applyTransform.transform, h = this.applyTransform.template; if ( void 0 === g && ((g = OpenLayers.Util.vendorPrefix.style("transform")), (this.applyTransform.transform = g)) ) { var k = OpenLayers.Element.getStyle( this.viewPortDiv, OpenLayers.Util.vendorPrefix.css("transform") ); (k && "none" === k) || ((h = ["translate3d(", ",0) ", "scale3d(", ",1)"]), (f[g] = [h[0], "0,0", h[1]].join(""))); (h && ~f[g].indexOf(h[0])) || (h = ["translate(", ") ", "scale(", ")"]); this.applyTransform.template = h; } null === g || ("translate3d(" !== h[0] && !0 !== e) ? ((f.left = a + "px"), (f.top = b + "px"), null !== g && (f[g] = "")) : (!0 === e && "translate(" === h[0] && ((a -= d.x), (b -= d.y), (f.left = d.x + "px"), (f.top = d.y + "px")), (f[g] = [h[0], a, "px,", b, "px", h[1], h[2], c, ",", c, h[3]].join(""))); }, CLASS_NAME: "OpenLayers.Map", }); OpenLayers.Map.TILE_WIDTH = 256; OpenLayers.Map.TILE_HEIGHT = 256; OpenLayers.Handler = OpenLayers.Class({ id: null, control: null, map: null, keyMask: null, active: !1, evt: null, touch: !1, 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) | (a.metaKey ? OpenLayers.Handler.MOD_META : 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 = this.touch = !1; return !0; }, startTouch: function () { if (!this.touch) { this.touch = !0; for ( var a = "mousedown mouseup mousemove click dblclick mouseout".split(" "), b = 0, c = a.length; b < c; b++ ) this[a[b]] && this.unregister(a[b], this[a[b]]); } }, 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.MOD_META = 8; OpenLayers.Handler.Click = OpenLayers.Class(OpenLayers.Handler, { delay: 300, single: !0, double: !1, pixelTolerance: 0, dblclickTolerance: 13, stopSingle: !1, stopDouble: !1, timerId: null, down: null, last: null, first: null, rightclickTimerId: null, touchstart: function (a) { this.startTouch(); 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; }, 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.preventDefault(a), this.handleDouble(a)), (this.last.touches && 2 === this.last.touches.length) || this.clearTimer()) : ((this.first = this.getEventInfo(a)), (a = this.single ? OpenLayers.Util.extend({}, a) : null), this.queuePotentialClick(a))); }, 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 ) { a = 0; for (var 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 (a) { 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.olClientX, clientY: d.olClientY }); } 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), (a = !0)); return a; }, CLASS_NAME: "OpenLayers.Handler.Click", }); OpenLayers.Handler.Drag = OpenLayers.Class(OpenLayers.Handler, { started: !1, stopDown: !0, dragging: !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.preventDefault(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; !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 (a) {}, move: function (a) {}, up: function (a) {}, out: function (a) {}, mousedown: function (a) { return this.dragstart(a); }, touchstart: function (a) { this.startTouch(); 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 (a) { 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 = !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.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, maximizeTitle: "", minimizeTitle: "", 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.maximizeTitle && (this.maximizeDiv.title = this.maximizeTitle); 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.minimizeTitle && (this.minimizeDiv.title = this.minimizeTitle); 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()); var 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 && (this.maximizeDiv.style.display = a ? "" : "none"); this.minimizeDiv && (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.getMaxExtent(), 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 (a) { this.handlers.drag.active || this.map.dragging || this.handlers.drag.activate(); }); this.rectEvents.register("mouseout", this, function (a) { 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; a = this.ovmap.getProjection() != this.map.getProjection() ? this.map .getExtent() .transform(this.map.getProjectionObject(), this.ovmap.getProjectionObject()) : this.map.getExtent(); (a = this.getRectBoundsFromMapBounds(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); var 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 }); var 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.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 = {}; b = OpenLayers.Util.extend({}, b); null != this.alwaysInRange && (b.alwaysInRange = this.alwaysInRange); 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 = {}); 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 (a, b, c) { a = this.visibility; this.isBaseLayer || (a = a && this.inRange); this.display(a); }, moveByPx: function (a, b) {}, 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 (a) {}, getImageSize: function (a) { 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.options.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 () { var a = this.map.getZoom(); return this.getResolutionForZoom(a); }, getExtent: function () { return this.map.calculateBounds(); }, getZoomForExtent: function (a, b) { var c = this.map.getSize(), c = Math.max(a.getWidth() / c.w, a.getHeight() / c.h); return this.getZoomForResolution(c, 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.getMapObjectCenter(), f = this.getOLLonLatFromMapObjectLonLat(f), g = this.getMapObjectZoom(), g = this.getOLZoomFromMapObjectZoom(g); (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() && ((a = this.getMapObjectPixelFromOLPixel(a)), (a = this.getMapObjectLonLatFromMapObjectPixel(a)), (b = this.getOLLonLatFromMapObjectLonLat(a))); return b; }, getViewPortPxFromLonLat: function (a) { var b = null; null != this.mapObject && null != this.getMapObjectCenter() && ((a = this.getMapObjectLonLatFromOLLonLat(a)), (a = this.getMapObjectPixelFromMapObjectLonLat(a)), (b = this.getOLPixelFromMapObjectPixel(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) { if (null != this.resolutions) return OpenLayers.Layer.prototype.getZoomForResolution.apply(this, arguments); var b = OpenLayers.Layer.prototype.getExtent.apply(this, []); return this.getZoomForExtent(b); }, 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.866455078125e-4, 3.4332275390625e-4, 1.71661376953125e-4, 8.58306884765625e-5, 4.291534423828125e-5, 2.145767211914062e-5, 1.072883605957031e-5, 5.36441802978515e-6, 2.68220901489257e-6, 1.341104507446289e-6, 6.705522537231445e-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); this.mapObject && window.google && google.maps && google.maps.event && google.maps.event.clearListeners && google.maps.event.clearListeners(this.mapObject, "tilesloaded"); } }, 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); }, createDocumentFragment: function () { return this.xmldom ? this.xmldom.createDocumentFragment() : document.createDocumentFragment(); }, createTextNode: function (a) { "string" !== typeof a && (a = String(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 { a = a.getElementsByTagName("*"); for (var 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 { a = a.attributes; for (var 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) { var b = !0; for (a = a.firstChild; a; a = a.nextSibling) if (1 === a.nodeType) { b = !1; break; } return b; }, contentType: function (a) { var b = !1, c = !1, d = OpenLayers.Format.XML.CONTENT_TYPE.EMPTY; for (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) { b = b || {}; var 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) { a = OpenLayers.Util.applyDefaults(a, OpenLayers.Format.WFST.DEFAULTS); var 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.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) { a = "OpenLayers.LonLat" == a.CLASS_NAME ? this.layer.getViewPortPxFromLonLat(a) : a; var 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) for (f = !0, g = 0, 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 = String(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 (a) { 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.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.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.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) { a = a || {}; var 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) for (a = 0, 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; 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) { a = OpenLayers.Util.extend({ featurePrefix: this.featurePrefix, schema: this.schema }, a); var b = OpenLayers.Util.extend({}, this.schemaLocations); a.schema && (b[a.featurePrefix] = a.schema); a = []; var 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, allowFallback: !1, 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) { a = a || this.defaultVersion; var 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 && ("" !== b && this.allowFallback && ((b = ""), (c = OpenLayers.Format[this.name]["v" + a.replace(/\./g, "_")])), !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) { var c = this.getVersion(null, b); this.parser = this.getParser(c); 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), e = this.parser.errorProperty || null; null !== e && void 0 === d[e] && ((e = new OpenLayers.Format.OGCExceptionReport()), (d.error = e.read(a))); d.version = c; return d; }, CLASS_NAME: "OpenLayers.Format.XML.VersionedOGC", }); 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 == b : a.toUpperCase() == b.toUpperCase(); break; case OpenLayers.Filter.Comparison.NOT_EQUAL_TO: b = this.value; b = this.matchCase || "string" != typeof a || "string" != typeof b ? a != b : a.toUpperCase() != b.toUpperCase(); 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); break; case OpenLayers.Filter.Comparison.IS_NULL: b = null === 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.Filter.Comparison.IS_NULL = "NULL"; 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.Date = { dateRegEx: /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/, toISOString: (function () { return "toISOString" in Date.prototype ? function (a) { return a.toISOString(); } : function (a) { return isNaN(a.getTime()) ? "Invalid Date" : a.getUTCFullYear() + "-" + OpenLayers.Number.zeroPad(a.getUTCMonth() + 1, 2) + "-" + OpenLayers.Number.zeroPad(a.getUTCDate(), 2) + "T" + OpenLayers.Number.zeroPad(a.getUTCHours(), 2) + ":" + OpenLayers.Number.zeroPad(a.getUTCMinutes(), 2) + ":" + OpenLayers.Number.zeroPad(a.getUTCSeconds(), 2) + "." + OpenLayers.Number.zeroPad(a.getUTCMilliseconds(), 3) + "Z"; }; })(), parse: function (a) { var b; if ((a = a.match(this.dateRegEx)) && (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), (a = -1e3 * (60 * 60 * c + 60 * a)), (b = new Date(b.getTime() + a))); } } else b = new Date("invalid"); return b; }, }; 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), !0); }, 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), !0 ); }, UpperBoundary: function (a, b) { b.upperBoundary = OpenLayers.String.numericIf( this.readers.ogc._expression.call(this, a), !0 ); }, 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 (a, b) {}, PropertyIsNull: function (a, b) { var c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.IS_NULL }); this.readChildNodes(a, c); b.filters.push(c); }, }, }, 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); }, encodeLiteral: function (a) { a instanceof Date && (a = OpenLayers.Date.toISOString(a)); return a; }, writeOgcExpression: function (a, b) { a instanceof OpenLayers.Filter.Function ? this.writeNode("Function", a, b) : this.writeNode("Literal", a, b); return b; }, write: function (a) { return this.writers.ogc.Filter.apply(this, [a]); }, writers: { ogc: { Filter: function (a) { var b = this.createElementNSPlus("ogc:Filter"); this.writeNode(this.getFilterType(a), a, b); return b; }, _featureIds: function (a) { for (var b = this.createDocumentFragment(), c = 0, d = a.fids.length; c < d; ++c) this.writeNode("ogc:FeatureId", a.fids[c], 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]), 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]), this.writeNode(this.getFilterType(c), c, b); return b; }, Not: function (a) { var b = this.createElementNSPlus("ogc:Not"); a = a.filters[0]; 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: (this.encodeLiteral || OpenLayers.Format.Filter.v1.prototype.encodeLiteral)(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) { var b = this.createElementNSPlus("ogc:Function", { attributes: { name: a.name } }); a = a.params; for (var c = 0, d = a.length; c < d; c++) this.writeOgcExpression(a[c], b); return b; }, PropertyIsNull: function (a) { var b = this.createElementNSPlus("ogc:PropertyIsNull"); this.writeNode("PropertyName", a, 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", NULL: "PropertyIsNull", BBOX: "BBOX", DWITHIN: "DWITHIN", WITHIN: "WITHIN", CONTAINS: "CONTAINS", INTERSECTS: "INTERSECTS", FID: "_featureIds", }, 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 (a, b) {}, getVertices: function (a) {}, 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; var e = !1, f = a.x1 - b.x1, g = a.y1 - b.y1, h = a.x2 - a.x1, k = a.y2 - a.y1, l = b.y2 - b.y1, m = b.x2 - b.x1, n = l * h - m * k, l = m * g - l * f, g = h * g - k * f; 0 == n ? 0 == l && 0 == g && (e = !0) : ((f = l / n), (n = g / n), 0 <= f && 1 >= f && 0 <= n && 1 >= n && (d ? ((h = a.x1 + f * h), (n = a.y1 + f * k), (e = new OpenLayers.Geometry.Point(h, n))) : (e = !0))); if (c) if (e) { if (d) a: for (a = [a, b], b = 0; 2 > b; ++b) for (f = a[b], k = 1; 3 > k; ++k) if ( ((h = f["x" + k]), (n = f["y" + k]), (d = Math.sqrt(Math.pow(h - e.x, 2) + Math.pow(n - e.y, 2))), d < c) ) { e.x = h; e.y = n; break a; } } else a: for (a = [a, b], b = 0; 2 > b; ++b) for (h = a[b], n = a[(b + 1) % 2], k = 1; 3 > k; ++k) if ( ((f = { x: h["x" + k], y: h["y" + k] }), (g = OpenLayers.Geometry.distanceToSegment(f, n)), 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 = OpenLayers.Geometry.distanceSquaredToSegment(a, b); c.distance = Math.sqrt(c.distance); return c; }; OpenLayers.Geometry.distanceSquaredToSegment = function (a, b) { var c = a.x, d = a.y, e = b.x1, f = b.y1, g = b.x2, h = b.y2, k = g - e, l = h - f, m = (k * (c - e) + l * (d - f)) / (Math.pow(k, 2) + Math.pow(l, 2)); 0 >= m || (1 <= m ? ((e = g), (f = h)) : ((e += m * k), (f += m * l))); return { distance: Math.pow(e - c, 2) + Math.pow(f - d, 2), x: e, y: f, along: m }; }; 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 ? { x0: e, y0: f, x1: g, y1: h, distance: d } : 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) { a *= Math.PI / 180; var 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 (a) { 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 k = (e = 0), g = 0; g < a; ++g) (f = c[g]), (h = b[g]), (e += f.x * h), (k += f.y * h); return new OpenLayers.Geometry.Point(e / d, k / 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, k = this.components.length; h < k && !((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) if (OpenLayers.Util.isArray(a.components) && a.components.length == this.components.length) for (var c = 0, d = this.components.length; c < d; ++c) { if (!this.components[c].equals(a.components[c])) { b = !1; break; } } else b = !1; else b = !1; 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(); var e, f, g, h, k, l, m, n = 0, p = d.length; a: for (; n < p; ++n) { c = d[n]; e = c.x1; f = c.x2; g = c.y1; h = c.y2; var q = 0, r = a.length; for (; q < r; ++q) { k = a[q]; if (k.x1 > f) break; if ( !( k.x2 < e || ((l = k.y1), (m = k.y2), Math.min(l, m) > Math.max(g, h) || Math.max(l, m) < Math.min(g, h) || !OpenLayers.Geometry.segmentsIntersect(c, k)) ) ) { 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 = [], k = !1, l, m, n, p = { point: !0, tolerance: d }, q = null, r = 0, s = f.length - 2; r <= s; ++r ) if ( ((d = f[r]), g.push(d.clone()), (l = f[r + 1]), (m = { x1: d.x, y1: d.y, x2: l.x, y2: l.y }), (m = OpenLayers.Geometry.segmentsIntersect(a, m, p)), m instanceof OpenLayers.Geometry.Point && ((n = (m.x === a.x1 && m.y === a.y1) || (m.x === a.x2 && m.y === a.y2) || m.equals(d) || m.equals(l) ? !0 : !1) || c)) ) m.equals(h[h.length - 1]) || h.push(m.clone()), (0 === r && m.equals(d)) || m.equals(l) || ((k = !0), m.equals(d) || g.push(m), e.push(new OpenLayers.Geometry.LineString(g)), (g = [m.clone()])); k && (g.push(l.clone()), e.push(new OpenLayers.Geometry.LineString(g))); if (0 < h.length) var t = a.x1 < a.x2 ? 1 : -1, u = a.y1 < a.y2 ? 1 : -1, q = { lines: e, points: h.sort(function (a, b) { return t * a.x - t * b.x || u * a.y - u * b.y; }), }; return q; }, split: function (a, b) { var c = null, d = b && b.mutual, e, f, g, h; if (a instanceof OpenLayers.Geometry.LineString) { var k = this.getVertices(), l, m, n, p, q, r = []; g = []; for (var s = 0, t = k.length - 2; s <= t; ++s) { l = k[s]; m = k[s + 1]; n = { x1: l.x, y1: l.y, x2: m.x, y2: m.y }; h = h || [a]; d && r.push(l.clone()); for (var u = 0; u < h.length; ++u) if ((p = h[u].splitWithSegment(n, b))) if ( ((q = p.lines), 0 < q.length && (q.unshift(u, 1), Array.prototype.splice.apply(h, q), (u += q.length - 2)), d) ) for (var v = 0, w = p.points.length; v < w; ++v) (q = p.points[v]), q.equals(l) || (r.push(q), g.push(new OpenLayers.Geometry.LineString(r)), (r = q.equals(m) ? [] : [q.clone()])); } d && 0 < g.length && 0 < r.length && (r.push(m.clone()), g.push(new OpenLayers.Geometry.LineString(r))); } 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, k = a.y, l, m = 0, n = g.length; m < n; ++m) if (((l = g[m]), (d = OpenLayers.Geometry.distanceToSegment(a, l)), d.distance < f)) { if (((f = d.distance), (e = d), 0 === f)) break; } else if (l.x2 > h && ((k > l.y1 && k < l.y2) || (k < l.y1 && k > l.y2))) break; e = c ? { distance: e.distance, x0: e.x, y0: e.y, x1: h, y1: k } : e.distance; } else if (a instanceof OpenLayers.Geometry.LineString) { var g = this.getSortedSegments(), h = a.getSortedSegments(), p, q, r = h.length, s = { point: !0 }, m = 0, n = g.length; a: for (; m < n; ++m) { k = g[m]; l = k.x1; q = k.y1; for (var t = 0; t < r; ++t) if (((d = h[t]), (p = OpenLayers.Geometry.segmentsIntersect(k, d, s)))) { f = 0; e = { distance: 0, x0: p.x, y0: p.y, x1: p.x, y1: p.y }; break a; } else (d = OpenLayers.Geometry.distanceToSegment({ x: l, y: q }, d)), d.distance < f && ((f = d.distance), (e = { distance: f, x0: l, y0: q, x1: d.x, y1: d.y })); } c || (e = e.distance); 0 !== f && k && ((d = a.distanceTo(new OpenLayers.Geometry.Point(k.x2, k.y2), b)), (m = c ? d.distance : d), m < f && (e = c ? { distance: f, x0: d.x1, y0: d.y1, x1: d.x0, y1: d.y0 } : m)); } 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, k) { for (var l = 0, m = 0, n = b, p; n < d; n++) { p = a[b]; var q = a[d], r = a[n], r = Math.abs( 0.5 * (p.x * q.y + q.x * r.y + r.x * p.y - q.x * p.y - r.x * q.y - p.x * r.y) ); p = Math.sqrt(Math.pow(p.x - q.x, 2) + Math.pow(p.y - q.y, 2)); p = 2 * (r / p); p > l && ((l = p), (m = n)); } l > k && m != b && (e.push(m), c(a, b, m, k), c(a, m, d, k)); }, 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, k = [], l = [a], m = 0, n = this.components.length; m < n; ++m ) { f = this.components[m]; g = !1; for (var p = 0; p < l.length; ++p) if ((e = f.split(l[p], b))) { if (d) { g = e[0]; for (var q = 0, r = g.length; q < r; ++q) 0 === q && k.length ? k[k.length - 1].addComponent(g[q]) : k.push(new OpenLayers.Geometry.MultiLineString([g[q]])); g = !0; e = e[1]; } if (e.length) { e.unshift(p, 1); Array.prototype.splice.apply(l, e); break; } } g || (k.length ? k[k.length - 1].addComponent(f.clone()) : (k = [new OpenLayers.Geometry.MultiLineString(f.clone())])); } k && 1 < k.length ? (g = !0) : (k = []); l && 1 < l.length ? (h = !0) : (l = []); if (g || h) c = d ? [k, l] : l; return c; }, splitWith: function (a, b) { var c = null, d = b && b.mutual, e, f, g, h, k, l; if (a instanceof OpenLayers.Geometry.LineString) { l = []; k = [a]; for (var m = 0, n = this.components.length; m < n; ++m) { g = !1; f = this.components[m]; for (var p = 0; p < k.length; ++p) if ((e = k[p].split(f, b))) { d && ((g = e[0]), g.length && (g.unshift(p, 1), Array.prototype.splice.apply(k, g), (p += g.length - 2)), (e = e[1]), 0 === e.length && (e = [f.clone()])); g = 0; for (var q = e.length; g < q; ++g) 0 === g && l.length ? l[l.length - 1].addComponent(e[g]) : l.push(new OpenLayers.Geometry.MultiLineString([e[g]])); g = !0; } g || (l.length ? l[l.length - 1].addComponent(f.clone()) : (l = [new OpenLayers.Geometry.MultiLineString([f.clone()])])); } } else c = a.split(this); k && 1 < k.length ? (h = !0) : (k = []); l && 1 < l.length ? (g = !0) : (l = []); if (h || g) c = d ? [k, l] : l; 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(); (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) { var a = this.components.length; if (0 < a && 2 >= a) return this.components[0].clone(); if (2 < a) { var b = 0, c = 0, d = this.components[0].x, e = this.components[0].y, f = -1 * this.getArea(); if (0 != f) { for (var g = 0; g < a - 1; g++) var h = this.components[g], k = this.components[g + 1], b = b + (h.x + k.x - 2 * d) * ((h.x - d) * (k.y - e) - (k.x - d) * (h.y - e)), c = c + (h.y + k.y - 2 * e) * ((h.x - d) * (k.y - e) - (k.x - d) * (h.y - e)); b = d + b / (6 * f); a = e + c / (6 * f); } else { for (g = 0; g < a - 1; g++) (b += this.components[g].x), (c += this.components[g].y); b /= a - 1; a = c / (a - 1); } return new OpenLayers.Geometry.Point(b, a); } 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) { var b = OpenLayers.Number.limitSigDigs, c = b(a.x, 14); a = b(a.y, 14); for (var d = this.components.length - 1, e, f, g, h, k, l = 0, m = 0; m < d; ++m) if ( ((e = this.components[m]), (g = b(e.x, 14)), (e = b(e.y, 14)), (f = this.components[m + 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))) { l = -1; break; } } else { k = b((a - f) * ((h - g) / (f - e)) + h, 14); if (k == c && ((e < f && a >= e && a <= f) || (e > f && a <= e && a >= f))) { l = -1; break; } k <= c || (g != h && (k < Math.min(g, h) || k > Math.max(g, h))) || (((e < f && a >= e && a < f) || (e > f && a < e && a >= f)) && ++l); } return -1 == l ? 1 : !!(l & 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) for ( c = 0, d = a.components.length; c < d && !(b = this.containsPoint(a.components[c])); ++c ); } else for (c = 0, 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])); a = this.getElementsByTagNameNS(a.documentElement, this.gmlns, this.featureName); for (var 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, }; a = a.firstChild; for (var k; a && (1 != a.nodeType || !(k = a.getAttribute("fid") || a.getAttribute("id"))); ) a = a.nextSibling; h.fid = k; 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) { a = this.getElementsByTagNameNS(a, this.gmlns, "Point"); var 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, k; for (c = 0; c < d.length / f; ++c) (g = c * f), (h = d[g]), (k = d[g + 1]), (g = 2 == f ? null : d[g + 2]), this.xy ? e.push(new OpenLayers.Geometry.Point(h, k, g)) : e.push(new OpenLayers.Geometry.Point(k, h, g)); } if ( 0 == d.length && ((c = this.getElementsByTagNameNS(a, this.gmlns, "coordinates")), 0 < c.length) ) for ( d = this.getChildValue(c[0]), d = d.replace(this.regExes.trimSpace, ""), d = d.replace(this.regExes.trimComma, ","), f = d.split(this.regExes.splitSpace), 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) { a = this.getElementsByTagNameNS(a, this.gmlns, "LineString"); var 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) { a = this.getElementsByTagNameNS(a, this.gmlns, "LinearRing"); var 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) { a = this.getElementsByTagNameNS(a, this.gmlns, "Polygon"); var 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) { var b = {}; a = a.firstChild; for (var 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 = e.substring(e.lastIndexOf(":") + 1), f = this.createElementNS(this.featureNS, this.featurePrefix + ":" + f); 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, b = b.substring(b.lastIndexOf(".") + 1); return this.buildGeometry[b.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) { var b = this.createElementNS(this.gmlns, "gml:MultiPoint"); a = a.components; for (var 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) { var b = this.createElementNS(this.gmlns, "gml:MultiLineString"); a = a.components; for (var 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) { var b = this.createElementNS(this.gmlns, "gml:Polygon"); a = a.components; for (var 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) { var b = this.createElementNS(this.gmlns, "gml:MultiPolygon"); a = a.components; for (var 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 { a = a.components ? a.components : [a]; for (var 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 || "string" === typeof a.featureType; }, 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, { features: b }, !0); if (0 == b.length) { var c = this.getElementsByTagNameNS(a, this.namespaces.gml, "featureMember"); if (c.length) { a = 0; for (var d = c.length; a < d; ++a) this.readNode(c[a], { features: b }, !0); } else (c = this.getElementsByTagNameNS(a, this.namespaces.gml, "featureMembers")), c.length && this.readNode(c[0], { features: b }, !0); } return b; }, readNode: function (a, b, c) { !0 === c && !0 === this.autoConfig && ((this.featureType = null), delete this.namespaceAlias[this.featureNS], delete this.namespaces.feature, (this.featureNS = null)); 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 = !0)); return OpenLayers.Format.XML.prototype.readNode.apply(this, [a, b]); }, readers: { gml: { _inherit: function (a, b, c) {}, 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); c.components && 0 < c.components.length && (b.bounds = c.components[0]); }, Point: function (a, b) { var c = { points: [] }; this.readChildNodes(a, c); 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); 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.readers.gml._inherit.apply(this, [a, c, b]); 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.readers.gml._inherit.apply(this, [a, c, b]); this.readChildNodes(a, c); b.components || (b.components = []); b.components.push(new OpenLayers.Geometry.LineString(c.points)); }, MultiLineString: function (a, b) { var c = { components: [] }; this.readers.gml._inherit.apply(this, [a, c, b]); 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.readers.gml._inherit.apply(this, [a, c, b]); this.readChildNodes(a, c); c.inner.unshift(c.outer); b.components || (b.components = []); b.components.push(new OpenLayers.Geometry.Polygon(c.inner)); }, LinearRing: function (a, b) { var c = {}; this.readers.gml._inherit.apply(this, [a, c]); this.readChildNodes(a, c); b.components = [new OpenLayers.Geometry.LinearRing(c.points)]; }, MultiPolygon: function (a, b) { var c = { components: [] }; this.readers.gml._inherit.apply(this, [a, c, b]); 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.readers.gml._inherit.apply(this, [a, c, b]); 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 || -1 === OpenLayers.Util.indexOf(this.featureType, d) ? d === this.featureType && (c = "_typeName") : (c = "_typeName") : 0 == a.childNodes.length || (1 == a.childNodes.length && 3 == a.firstChild.nodeType) ? 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); c.name && (c.attributes.name = c.name); var d = new OpenLayers.Feature.Vector(c.components[0], c.attributes); this.singleFeatureType || ((d.type = a.nodeName.split(":").pop()), (d.namespace = a.namespaceURI)); var e = a.getAttribute("fid") || this.getAttributeNS(a, this.namespaces.gml, "id"); e && (d.fid = e); this.internalProjection && this.externalProjection && d.geometry && d.geometry.transform(this.externalProjection, this.internalProjection); c.bounds && (d.bounds = c.bounds); b.features.push(d); }, _geometry: function (a, b) { 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) { var b; b = OpenLayers.Util.isArray(a) ? "featureMembers" : "featureMember"; a = this.writeNode("gml:" + b, 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) { var b = this.createElementNSPlus("gml:MultiPoint"); a = a.components || [a]; for (var 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) { var b = this.createElementNSPlus("gml:MultiLineString"); a = a.components || [a]; for (var 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) { var b = this.createElementNSPlus("gml:MultiPolygon"); a = a.components || [a]; for (var 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]; null != d && 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( { _inherit: function (a, b, c) { if ((a = parseInt(a.getAttribute("srsDimension"), 10) || (c && c.srsDimension))) b.srsDimension = a; }, featureMembers: function (a, b) { this.readChildNodes(a, b); }, Curve: function (a, b) { var c = { points: [] }; this.readers.gml._inherit.apply(this, [a, c, b]); 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 = b.srsDimension || parseInt(a.getAttribute("srsDimension") || a.getAttribute("dimension"), 10) || 2, e, f, g, h = Array(c.length / d), k = 0, l = c.length; k < l; k += d ) (e = c[k]), (f = c[k + 1]), (g = 2 == d ? void 0 : c[k + 2]), (h[k / 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.readers.gml._inherit.apply(this, [a, c, b]); 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.readers.gml._inherit.apply(this, [a, c, b]); 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) { var b; b = OpenLayers.Util.isArray(a) ? "featureMembers" : "featureMember"; a = this.writeNode("gml:" + b, 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) { var b = this.createElementNSPlus("gml:MultiCurve"); a = a.components || [a]; for (var 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) { var b = this.createElementNSPlus("gml:MultiSurface"); a = a.components || [a]; for (var 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, b) { var c = this.version; if (!c) { var d = a.getAttribute("xmlns:ows"); d && "1.1" === d.substring(d.lastIndexOf("/") + 1) && (c = "1.1.0"); c || (c = this.defaultVersion); } return c; }, 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, b) { var c = this.createElementNSPlus(b || "ows:BoundingBox", { attributes: { crs: a.projection }, }); this.writeNode("ows:LowerCorner", a, c); this.writeNode("ows:UpperCorner", a, c); return c; }, 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, c) { return OpenLayers.Format.GML.v3.prototype.readNode.apply(this, arguments); }, 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) { a = OpenLayers.Util.extend( { featureNS: this.featureNS, featurePrefix: this.featurePrefix, featureType: this.featureType, srsName: this.srsName, }, a ); var 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 (a) {}, 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 = { "\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": "\\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) ? String(a) : "null"; }, boolean: function (a) { return String(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) { b = b ? b : "FeatureCollection"; var d = null, e = null, e = "string" == typeof a ? OpenLayers.Format.JSON.prototype.read.apply(this, [a, c]) : a; if (!e) OpenLayers.Console.error("Bad JSON: " + a); else 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 (k) { (d = null), OpenLayers.Console.error(k); } break; default: try { var l = this.parseGeometry(e); d.push(new OpenLayers.Feature.Vector(l)); } catch (m) { (d = null), OpenLayers.Console.error(m); } } } 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) { a = a.layer.projection.toString(); var 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) { c = OpenLayers.Protocol.Script.register(c); var 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.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, { geometryType: "linestring", initialize: function (a) { OpenLayers.Format.prototype.initialize.apply(this, [a]); }, read: function (a) { var b; if ("linestring" == this.geometryType) b = OpenLayers.Geometry.LineString; else if ("linearring" == this.geometryType) b = OpenLayers.Geometry.LinearRing; else if ("multipoint" == this.geometryType) b = OpenLayers.Geometry.MultiPoint; else if ("point" != this.geometryType && "polygon" != this.geometryType) return null; a = this.decodeDeltas(a, 2); for (var c = a.length, d = [], e = 0; e + 1 < c; ) { var f = a[e++], g = a[e++]; d.push(new OpenLayers.Geometry.Point(g, f)); } return "point" == this.geometryType ? new OpenLayers.Feature.Vector(d[0]) : "polygon" == this.geometryType ? new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(d)]) ) : new OpenLayers.Feature.Vector(new b(d)); }, decode: function (a, b, c) { a = this.decodeDeltas(a, b, c || 1e5); c = a.length; for (var d = [], e = 0; e + (b - 1) < c; ) { for (var f = [], g = 0; g < b; ++g) f.push(a[e++]); d.push(f); } return d; }, write: function (a) { a = (a.constructor == Array ? a[0] : a).geometry; var b = a.CLASS_NAME.split(".")[2].toLowerCase(); if ("point" == b) a = Array(a); else if ("linestring" == b || "linearring" == b || "multipoint" == b) a = a.components; else if ("polygon" == b) a = a.components[0].components; else return null; for (var b = [], c = a.length, d = 0; d < c; ++d) { var e = a[d]; b.push(e.y); b.push(e.x); } return this.encodeDeltas(b, 2); }, encode: function (a, b, c) { c = c || 1e5; for (var d = [], e = a.length, f = 0; f < e; ++f) for (var g = a[f], h = 0; h < b; ++h) d.push(g[h]); return this.encodeDeltas(d, b, c); }, encodeDeltas: function (a, b, c) { var d, e = Array(b); for (d = 0; d < b; ++d) e[d] = 0; for (var f = a.length, g = 0; g < f; ) for (d = 0; d < b; ++d, ++g) { var h = a[g], k = h - e[d]; e[d] = h; a[g] = k; } return this.encodeFloats(a, c || 1e5); }, decodeDeltas: function (a, b, c) { var d, e = Array(b); for (d = 0; d < b; ++d) e[d] = 0; a = this.decodeFloats(a, c || 1e5); c = a.length; for (var f = 0; f < c; ) for (d = 0; d < b; ++d, ++f) (e[d] += a[f]), (a[f] = e[d]); return a; }, encodeFloats: function (a, b) { for (var c = b || 1e5, d = a.length, e = 0; e < d; ++e) a[e] = Math.round(a[e] * c); return this.encodeSignedIntegers(a); }, decodeFloats: function (a, b) { for (var c = b || 1e5, d = this.decodeSignedIntegers(a), e = d.length, f = 0; f < e; ++f) d[f] /= c; return d; }, encodeSignedIntegers: function (a) { for (var b = a.length, c = 0; c < b; ++c) { var d = a[c], e = d << 1; 0 > d && (e = ~e); a[c] = e; } return this.encodeUnsignedIntegers(a); }, decodeSignedIntegers: function (a) { a = this.decodeUnsignedIntegers(a); for (var b = a.length, c = 0; c < b; ++c) { var d = a[c]; a[c] = d & 1 ? ~(d >> 1) : d >> 1; } return a; }, encodeUnsignedIntegers: function (a) { for (var b = "", c = a.length, d = 0; d < c; ++d) b += this.encodeUnsignedInteger(a[d]); return b; }, decodeUnsignedIntegers: function (a) { for (var b = [], c = 0, d = 0, e = a.length, f = 0; f < e; ++f) { var g = a.charCodeAt(f) - 63, c = c | ((g & 31) << d); 32 > g ? (b.push(c), (d = c = 0)) : (d += 5); } return b; }, encodeFloat: function (a, b) { a = Math.round(a * (b || 1e5)); return this.encodeSignedInteger(a); }, decodeFloat: function (a, b) { return this.decodeSignedInteger(a) / (b || 1e5); }, encodeSignedInteger: function (a) { var b = a << 1; 0 > a && (b = ~b); return this.encodeUnsignedInteger(b); }, decodeSignedInteger: function (a) { a = this.decodeUnsignedInteger(a); return a & 1 ? ~(a >> 1) : a >> 1; }, encodeUnsignedInteger: function (a) { for (var b, c = ""; 32 <= a; ) (b = (32 | (a & 31)) + 63), (c += String.fromCharCode(b)), (a >>= 5); return (c += String.fromCharCode(a + 63)); }, decodeUnsignedInteger: function (a) { for (var b = 0, c = 0, d = a.length, e = 0; e < d; ++e) { var f = a.charCodeAt(e) - 63, b = b | ((f & 31) << c); if (32 > f) break; c += 5; } return b; }, CLASS_NAME: "OpenLayers.Format.EncodedPolyline", }); 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 (a) { 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) { var b = this.controls; a = a.buttonElement; for (var 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.Button = OpenLayers.Class(OpenLayers.Control, { type: OpenLayers.Control.TYPE_BUTTON, trigger: function () {}, CLASS_NAME: "OpenLayers.Control.Button", }); OpenLayers.Control.ZoomIn = OpenLayers.Class(OpenLayers.Control.Button, { trigger: function () { this.map && this.map.zoomIn(); }, CLASS_NAME: "OpenLayers.Control.ZoomIn", }); OpenLayers.Control.ZoomOut = OpenLayers.Class(OpenLayers.Control.Button, { trigger: function () { this.map && this.map.zoomOut(); }, CLASS_NAME: "OpenLayers.Control.ZoomOut", }); OpenLayers.Control.ZoomToMaxExtent = OpenLayers.Class(OpenLayers.Control.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 && !1 === this.events.triggerEvent("beforedraw") && (b = null); 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 (a) {}, CLASS_NAME: "OpenLayers.Tile", }); OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, { url: null, imgDiv: null, frame: null, imageReloadAttempts: null, layerAlphaHack: null, asyncRequestId: null, 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.renderTile(), this.positionTile()) : !1 === a && this.unload(); return a; }, renderTile: function () { 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), c = 1; this.layer instanceof OpenLayers.Layer.Grid && (c = this.layer.getServerResolution() / this.layer.map.getResolution()); a.left = this.position.x + "px"; a.top = this.position.y + "px"; a.width = Math.round(c * b.w) + "px"; a.height = Math.round(c * b.h) + "px"; }, clear: function () { OpenLayers.Tile.prototype.clear.apply(this, arguments); var a = this.imgDiv; if (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 = OpenLayers.Tile.Image.IMAGE.cloneNode(!1); 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; }, setImage: function (a) { this.imgDiv = a; }, initImage: function () { if (this.url || this.imgDiv) { this.events.triggerEvent("beforeload"); this.layer.div.appendChild(this.getTile()); this.events.triggerEvent(this._loadEvent); var a = this.getImage(), b = a.getAttribute("src") || ""; this.url && OpenLayers.Util.isEquivalentUrl(b, this.url) ? (this._loadTimeout = window.setTimeout( OpenLayers.Function.bind(this.onImageLoad, this), 0 )) : (this.stopLoading(), this.crossOriginKeyword && a.removeAttribute("crossorigin"), 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)); } else this.isLoading = !1; }, setImgSrc: function (a) { var b = this.imgDiv; a ? ((b.style.visibility = "hidden"), (b.style.opacity = 0), this.crossOriginKeyword && ("data:" !== a.substr(0, 5) ? b.setAttribute("crossorigin", this.crossOriginKeyword) : b.removeAttribute("crossorigin")), (b.src = a)) : (this.stopLoading(), (this.imgDiv = null), b.parentNode && b.parentNode.removeChild(b)); }, 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; this.stopLoading(); a.style.visibility = "inherit"; a.style.opacity = this.layer.opacity; this.isLoading = !1; this.canvasContext = null; this.events.triggerEvent("loadend"); !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())); }, stopLoading: function () { OpenLayers.Event.stopObservingElement(this.imgDiv); window.clearTimeout(this._loadTimeout); delete this._loadTimeout; }, 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.Tile.Image.IMAGE = (function () { var a = new Image(); a.className = "olTileImage"; a.galleryImg = "no"; return a; })(); 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: "resize", numLoadingTiles: 0, serverResolutions: null, loading: !1, backBuffer: null, gridResolution: null, backBufferResolution: null, backBufferLonLat: null, backBufferTimerId: null, removeBackBufferDelay: null, className: null, gridLayout: null, rowSign: null, transitionendEvents: ["transitionend", "webkitTransitionEnd", "otransitionend", "oTransitionEnd"], initialize: function (a, b, c, d) { OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this, arguments); this.grid = []; this._removeBackBuffer = OpenLayers.Function.bind(this.removeBackBuffer, this); this.initProperties(); this.rowSign = "t" === this.tileOriginCorner.substr(0, 1) ? 1 : -1; }, initProperties: function () { void 0 === this.options.removeBackBufferDelay && (this.removeBackBufferDelay = this.singleTile ? 0 : 2500); void 0 === this.options.className && (this.className = this.singleTile ? "olLayerGridSingleTile" : "olLayerGrid"); }, setMap: function (a) { OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this, a); OpenLayers.Element.addClass(this.div, this.className); }, removeMap: function (a) { this.removeBackBuffer(); }, destroy: function () { this.removeBackBuffer(); this.clearGrid(); this.tileSize = this.grid = null; OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this, arguments); }, clearGrid: function () { 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.gridLayout = this.gridResolution = null; } }, addOptions: function (a, b) { var c = void 0 !== a.singleTile && a.singleTile !== this.singleTile; OpenLayers.Layer.HTTPRequest.prototype.addOptions.apply(this, arguments); this.map && c && (this.initProperties(), this.clearGrid(), (this.tileSize = this.options.tileSize), this.setTileSize(), this.moveTo(null, !0)); }, 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.loading = !1; a.numLoadingTiles = 0; 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(); this.getServerResolution(f); if (this.singleTile) { if (d || (!c && !e.containsBounds(a))) b && "resize" !== this.transitionEffect && this.removeBackBuffer(), (b && "resize" !== this.transitionEffect) || this.applyBackBuffer(f), this.initSingleTile(a); } else (d = d || !e.intersectsBounds(a, { worldBounds: this.map.baseLayer.wrapDateLine && this.map.getMaxExtent(), })) ? (!b || ("resize" !== this.transitionEffect && this.gridResolution !== f) || this.applyBackBuffer(f), 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; var g = this.tileSize.h, h = this.grid[0][0].bounds, k = h.left, h = h.top; if (c < k && this.map.baseLayer.wrapDateLine) var l = this.map.getMaxExtent().getWidth(), m = Math.ceil((k - c) / l), c = c + l * m; c = (c - k) / (f * a); d = (h - d) / (f * g); f = Math.floor(c); k = Math.floor(d); 0 <= k && k < e && (e = this.grid[k][f]) && (b = { tile: e, i: Math.floor((c - f) * a), j: Math.floor((d - k) * g) }); } return b; }, destroyTile: function (a) { this.removeTileMonitoringHooks(a); a.destroy(); }, getServerResolution: function (a) { var b = Number.POSITIVE_INFINITY; a = a || this.map.getResolution(); if (this.serverResolutions && -1 === OpenLayers.Util.indexOf(this.serverResolutions, a)) { var c, d, e, f; for (c = this.serverResolutions.length - 1; 0 <= c; c--) { e = this.serverResolutions[c]; d = Math.abs(e - a); if (d > b) break; b = d; f = e; } a = f; } return a; }, getServerZoom: function () { var a = this.getServerResolution(); return this.serverResolutions ? OpenLayers.Util.indexOf(this.serverResolutions, a) : this.map.getZoomForResolution(a) + (this.zoomOffset || 0); }, applyBackBuffer: function (a) { null !== this.backBufferTimerId && this.removeBackBuffer(); var b = this.backBuffer; if (!b) { b = this.createBackBuffer(); if (!b) return; a === this.gridResolution ? this.div.insertBefore(b, this.div.firstChild) : this.map.baseLayer.div.parentNode.insertBefore(b, this.map.baseLayer.div); this.backBuffer = b; var c = this.grid[0][0].bounds; this.backBufferLonLat = { lon: c.left, lat: c.top }; this.backBufferResolution = this.gridResolution; } for (var c = this.backBufferResolution / a, d = b.childNodes, e, f = d.length - 1; 0 <= f; --f) (e = d[f]), (e.style.top = ((c * e._i * e._h) | 0) + "px"), (e.style.left = ((c * e._j * e._w) | 0) + "px"), (e.style.width = Math.round(c * e._w) + "px"), (e.style.height = Math.round(c * e._h) + "px"); a = this.getViewPortPxFromLonLat(this.backBufferLonLat, a); c = this.map.layerContainerOriginPx.y; b.style.left = Math.round(a.x - this.map.layerContainerOriginPx.x) + "px"; b.style.top = Math.round(a.y - c) + "px"; }, 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"; var b = this.map; a.style.zIndex = "resize" === this.transitionEffect ? this.getZIndex() - 1 : b.Z_INDEX_BASE.BaseLayer - (b.getNumLayers() - b.getLayerIndex(this)); 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], g = this.grid[b][d].createBackBuffer(); g && ((g._i = b), (g._j = d), (g._w = f.size.w), (g._h = f.size.h), (g.id = f.id + "_bb"), a.appendChild(g)); } } return a; }, removeBackBuffer: function () { if (this._transitionElement) { for (var a = this.transitionendEvents.length - 1; 0 <= a; --a) OpenLayers.Event.stopObserving( this._transitionElement, this.transitionendEvents[a], this._removeBackBuffer ); delete this._transitionElement; } this.backBuffer && (this.backBuffer.parentNode && this.backBuffer.parentNode.removeChild(this.backBuffer), (this.backBufferResolution = this.backBuffer = null), null !== this.backBufferTimerId && (window.clearTimeout(this.backBufferTimerId), (this.backBufferTimerId = null))); }, moveByPx: function (a, b) { this.singleTile || this.moveGriddedTiles(); }, setTileSize: function (a) { this.singleTile && ((a = this.map.getSize()), (a.h = parseInt(a.h * this.ratio, 10)), (a.w = parseInt(a.w * this.ratio, 10))); 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.events.triggerEvent("retile"); 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 *= this.tileSize.h; var e = Math.floor((a.left - b.lon) / d) - this.buffer, f = this.rowSign; a = Math[~f ? "floor" : "ceil"]((f * (b.lat - a.top + c)) / c) - this.buffer * f; return { tilelon: d, tilelat: c, startcol: e, startrow: a }; }, 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; }, getTileBoundsForGridIndex: function (a, b) { var c = this.getTileOrigin(), d = this.gridLayout, e = d.tilelon, f = d.tilelat, g = d.startcol, d = d.startrow, h = this.rowSign; return new OpenLayers.Bounds( c.lon + (g + b) * e, c.lat - (d + a * h) * f * h, c.lon + (g + b + 1) * e, c.lat - (d + (a - 1) * h) * f * h ); }, initGriddedTiles: function (a) { this.events.triggerEvent("retile"); var b = this.map.getSize(), c = this.getTileOrigin(), d = this.map.getResolution(), e = this.getServerResolution(), f = d / e, d = this.tileSize.w / f, f = this.tileSize.h / f, g = Math.ceil(b.h / f) + 2 * this.buffer + 1, b = Math.ceil(b.w / d) + 2 * this.buffer + 1; this.gridLayout = e = this.calculateGridLayout(a, c, e); var c = e.tilelon, h = e.tilelat, e = this.map.layerContainerOriginPx.x, k = this.map.layerContainerOriginPx.y, l = this.getTileBoundsForGridIndex(0, 0), m = this.map.getViewPortPxFromLonLat(new OpenLayers.LonLat(l.left, l.top)); m.x = Math.round(m.x) - e; m.y = Math.round(m.y) - k; var e = [], k = this.map.getCenter(), n = 0; do { var p = this.grid[n]; p || ((p = []), this.grid.push(p)); var q = 0; do { var l = this.getTileBoundsForGridIndex(n, q), r = m.clone(); r.x += q * Math.round(d); r.y += n * Math.round(f); var s = p[q]; s ? s.moveTo(l, r, !1) : ((s = this.addTile(l, r)), this.addTileMonitoringHooks(s), p.push(s)); r = l.getCenterLonLat(); e.push({ tile: s, distance: Math.pow(r.lon - k.lon, 2) + Math.pow(r.lat - k.lat, 2) }); q += 1; } while (l.right <= a.right + c * this.buffer || q < b); n += 1; } while (l.bottom >= a.bottom - h * this.buffer || n < g); this.removeExcessTiles(n, q); this.gridResolution = d = this.getServerResolution(); e.sort(function (a, b) { return a.distance - b.distance; }); a = 0; for (d = e.length; a < d; ++a) e[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); this.events.triggerEvent("addtile", { tile: c }); 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++; !this.singleTile && this.backBuffer && this.gridResolution === this.backBufferResolution && OpenLayers.Element.addClass(a.getTile(), "olTileReplacing"); }; a.onLoadEnd = function (b) { this.numLoadingTiles--; b = "unload" === b.type; this.events.triggerEvent("tileloaded", { tile: a, aborted: b }); if ( !this.singleTile && !b && this.backBuffer && this.gridResolution === this.backBufferResolution ) { var c = a.getTile(); if ("none" === OpenLayers.Element.getStyle(c, "display")) { var d = document.getElementById(a.id + "_bb"); d && d.parentNode.removeChild(d); } OpenLayers.Element.removeClass(c, "olTileReplacing"); } if (0 === this.numLoadingTiles) { if (this.backBuffer) if (0 === this.backBuffer.childNodes.length) this.removeBackBuffer(); else { this._transitionElement = b ? this.div.lastChild : a.imgDiv; b = this.transitionendEvents; for (c = b.length - 1; 0 <= c; --c) OpenLayers.Event.observe(this._transitionElement, b[c], this._removeBackBuffer); this.backBufferTimerId = window.setTimeout( this._removeBackBuffer, this.removeBackBufferDelay ); } this.loading = !1; this.events.triggerEvent("loadend"); } }; 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 () { for (var a = this.buffer + 1; ; ) { var b = this.grid[0][0], c = b.position.x + this.map.layerContainerOriginPx.x, b = b.position.y + this.map.layerContainerOriginPx.y, d = this.getServerResolution() / this.map.getResolution(), d = { w: Math.round(this.tileSize.w * d), h: Math.round(this.tileSize.h * d) }; if (c > -d.w * (a - 1)) this.shiftColumn(!0, d); else if (c < -d.w * a) this.shiftColumn(!1, d); else if (b > -d.h * (a - 1)) this.shiftRow(!0, d); else if (b < -d.h * a) this.shiftRow(!1, d); else break; } }, shiftRow: function (a, b) { var c = this.grid, d = a ? 0 : c.length - 1, e = a ? -1 : 1; this.gridLayout.startrow += e * this.rowSign; for (var f = c[d], g = c[a ? "pop" : "shift"](), h = 0, k = g.length; h < k; h++) { var l = g[h], m = f[h].position.clone(); m.y += b.h * e; l.moveTo(this.getTileBoundsForGridIndex(d, h), m); } c[a ? "unshift" : "push"](g); }, shiftColumn: function (a, b) { var c = this.grid, d = a ? 0 : c[0].length - 1, e = a ? -1 : 1; this.gridLayout.startcol += e; for (var f = 0, g = c.length; f < g; f++) { var h = c[f], k = h[d].position.clone(), l = h[a ? "pop" : "shift"](); k.x += b.w * e; l.moveTo(this.getTileBoundsForGridIndex(f, d), k); h[a ? "unshift" : "push"](l); } }, 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) for ( d = this.createElementNS("", "LAYERLIST"), e.appendChild(d), 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 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, k = 0, l = h.length; k < l; k++) { var m = h[k]; e.symbol[m] && g.setAttribute(m, e.symbol[m]); } 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) for (c = 0, 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 k = e.components[g], l = this.createElementNS("", "POINT"); l.setAttribute("x", k.x); l.setAttribute("y", k.y); f.appendChild(l); } 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) ) for ( c = a[0].getElementsByTagName("ENVELOPE"), b.features.envelope = this.parseAttributes(c[0], "number"), a = a[0].getElementsByTagName("FEATURE"), 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 k = e[g].getElementsByTagName("HOLE"), l = 0; l < k.length; l++) h.push(this.parsePointGeometry(k[l])); 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) for (a = this.getChildValue(c[0]), a = a.split(/;/), 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 (a) { 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 (a) { return OpenLayers.Util.extend(this, { image: { envelope: null, output: "" }, features: { featurecount: 0, envelope: null, feature: [] }, error: "", }); }, CLASS_NAME: "OpenLayers.Format.ArcXML.Response", }); (function () { function a() { this._object = f && !k ? 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 (k) {} try { a.statusText = a._object.statusText; } catch (u) {} } function e(a) { a._object.onreadystatechange = new window.Function(); } var f = window.XMLHttpRequest, g = !!window.controllers, h = window.document.all && !window.opera, k = 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, k, p, q) { delete this._headers; 3 > arguments.length && (k = !0); this._async = k; var r = this, s = this.readyState, t; h && k && ((t = function () { s != b.DONE && (e(r), r.abort()); }), window.attachEvent("onunload", t)); b.onopen && b.onopen.apply(this, arguments); 4 < arguments.length ? this._object.open(a, f, k, p, q) : 3 < arguments.length ? this._object.open(a, f, k, p) : this._object.open(a, f, k); this.readyState = b.OPENED; c(this); this._object.onreadystatechange = function () { if (!g || k) (r.readyState = r._object.readyState), d(r), r._aborted ? (r.readyState = b.UNSENT) : (r.readyState == b.DONE && (delete r._data, e(r), h && k && window.detachEvent("onunload", t)), s != r.readyState && c(r), (s = r.readyState)); }; }; b.prototype.send = function (a) { b.onsend && b.onsend.apply(this, arguments); arguments.length || (a = null); 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: if ((this._object.send(this._data), g && !this._async)) for (this.readyState = b.OPENED, d(this); this.readyState < b.DONE; ) if ((this.readyState++, c(this), this._aborted)) break a; }; b.prototype.abort = function () { b.onabort && b.onabort.apply(this, arguments); this.readyState > b.UNSENT && (this._aborted = !0); 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) { 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]) && (e[0] != a || e[1] != b || e[2] != c); d++); 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 () {}, }; "readystatechange" == a.type && 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 || (OpenLayers.Request = {}); OpenLayers.Request.XMLHttpRequest = b; })(); OpenLayers.ProxyHost = ""; OpenLayers.Request || (OpenLayers.Request = {}); OpenLayers.Util.extend(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))); return a; }, issue: function (a) { var b = OpenLayers.Util.extend(this.DEFAULT_CONFIG, { proxy: OpenLayers.ProxyHost }); a = a || {}; a.headers = a.headers || {}; a = OpenLayers.Util.applyDefaults(a, b); a.headers = OpenLayers.Util.applyDefaults(a.headers, b.headers); var 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); 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]); 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, }); null != a && ((b = a.responseXML), (b && b.documentElement) || (b = a.responseText), (b = new OpenLayers.Format.ArcXML().read(b)), (b = this.getUrlOrImage(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; (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.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, updatesize: 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.on({ changebaselayer: this.redraw, updatesize: this.redraw, scope: this }); }, 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.getMinZoom(), e = this.map.getNumZoomLevels() - 1 - this.map.getZoom(), e = OpenLayers.Util.createAlphaImageDiv( c, a.add(-1, e * this.zoomStopHeight), { w: 20, h: 9 }, b, "absolute" ); e.style.cursor = "move"; this.slider = e; this.sliderEvents = new OpenLayers.Events(this, e, 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 f = { w: this.zoomStopWidth, h: this.zoomStopHeight * (this.map.getNumZoomLevels() - d) }, b = OpenLayers.Util.getImageLocation("zoombar.png"), c = null; OpenLayers.Util.alphaHack() ? ((c = this.id + "_" + this.map.id), (c = OpenLayers.Util.createAlphaImageDiv( c, a, { w: f.w, h: this.zoomStopHeight }, b, "absolute", null, "crop" )), (c.style.height = f.h + "px")) : (c = OpenLayers.Util.createDiv( "OpenLayers_Control_PanZoomBar_Zoombar" + this.map.id, a, f, b )); c.style.cursor = "pointer"; c.className = "olButton"; this.zoombarDiv = c; this.div.appendChild(c); this.startTop = parseInt(c.style.top); this.div.appendChild(e); this.map.events.register("zoomend", this, this.moveZoomBar); return (a = a.add(0, this.zoomStopHeight * (this.map.getNumZoomLevels() - d))); }, _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 && ((b = parseInt(this.slider.style.top) - b), (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 () { var a = (this.map.getNumZoomLevels() - 1 - this.map.getZoom()) * this.zoomStopHeight + this.startTop + 1; this.slider.style.top = a + "px"; }, CLASS_NAME: "OpenLayers.Control.PanZoomBar", }); OpenLayers.Format.WFSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, { defaultVersion: "1.1.0", 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", }, errorProperty: "featureTypeList", 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 (a) { 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 ? !1 : (this.active = !0); }, 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, k = c.length; h < k; ++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.Events.featureclick = OpenLayers.Class({ cache: null, map: null, provides: ["featureclick", "nofeatureclick", "featureover", "featureout"], initialize: function (a) { this.target = a; if (a.object instanceof OpenLayers.Map) this.setMap(a.object); else if (a.object instanceof OpenLayers.Layer.Vector) a.object.map ? this.setMap(a.object.map) : a.object.events.register("added", this, function (b) { this.setMap(a.object.map); }); else throw ( "Listeners for '" + this.provides.join("', '") + "' events can only be registered for OpenLayers.Layer.Vector or OpenLayers.Map instances" ); for (var b = this.provides.length - 1; 0 <= b; --b) a.extensions[this.provides[b]] = !0; }, setMap: function (a) { this.map = a; this.cache = {}; a.events.register("mousedown", this, this.start, { extension: !0 }); a.events.register("mouseup", this, this.onClick, { extension: !0 }); a.events.register("touchstart", this, this.start, { extension: !0 }); a.events.register("touchmove", this, this.cancel, { extension: !0 }); a.events.register("touchend", this, this.onClick, { extension: !0 }); a.events.register("mousemove", this, this.onMousemove, { extension: !0 }); }, start: function (a) { this.startEvt = a; }, cancel: function (a) { delete this.startEvt; }, onClick: function (a) { if (this.startEvt && ("touchend" === a.type || OpenLayers.Event.isLeftClick(a))) { a = this.getFeatures(this.startEvt); delete this.startEvt; for ( var b, c, d = {}, e = 0, f = a.length; e < f && ((b = a[e]), (c = b.layer), (d[c.id] = !0), (b = this.triggerEvent("featureclick", { feature: b })), !1 !== b); ++e ); e = 0; for (f = this.map.layers.length; e < f; ++e) (c = this.map.layers[e]), c instanceof OpenLayers.Layer.Vector && !d[c.id] && this.triggerEvent("nofeatureclick", { layer: c }); } }, onMousemove: function (a) { delete this.startEvt; var b = this.getFeatures(a), c = {}; a = []; for (var d, e = 0, f = b.length; e < f; ++e) (d = b[e]), (c[d.id] = d), this.cache[d.id] || a.push(d); var b = [], g; for (g in this.cache) (d = this.cache[g]), d.layer && d.layer.map ? c[d.id] || b.push(d) : delete this.cache[g]; e = 0; for ( f = a.length; e < f && ((d = a[e]), (this.cache[d.id] = d), (g = this.triggerEvent("featureover", { feature: d })), !1 !== g); ++e ); e = 0; for ( f = b.length; e < f && ((d = b[e]), delete this.cache[d.id], (g = this.triggerEvent("featureout", { feature: d })), !1 !== g); ++e ); }, triggerEvent: function (a, b) { var c = b.feature ? b.feature.layer : b.layer, d = this.target.object; if (d instanceof OpenLayers.Map || d === c) return this.target.triggerEvent(a, b); }, getFeatures: function (a) { var b = a.clientX, c = a.clientY, d = [], e = [], f = [], g, h, k, l; for (l = this.map.layers.length - 1; 0 <= l; --l) if (((g = this.map.layers[l]), "none" !== g.div.style.display)) if (g.renderer instanceof OpenLayers.Renderer.Elements) { if (g instanceof OpenLayers.Layer.Vector) for (h = document.elementFromPoint(b, c); h && h._featureId; ) (k = g.getFeatureById(h._featureId)) ? (d.push(k), (h.style.display = "none"), e.push(h), (h = document.elementFromPoint(b, c))) : (h = !1); f.push(g); g.div.style.display = "none"; } else g.renderer instanceof OpenLayers.Renderer.Canvas && (k = g.renderer.getFeatureIdFromEvent(a)) && (d.push(k), f.push(g)); l = 0; for (a = e.length; l < a; ++l) e[l].style.display = ""; for (l = f.length - 1; 0 <= l; --l) f[l].div.style.display = "block"; return d; }, destroy: function () { for (var a = this.provides.length - 1; 0 <= a; --a) delete this.target.extensions[this.provides[a]]; this.map.events.un({ mousemove: this.onMousemove, mousedown: this.start, mouseup: this.onClick, touchstart: this.start, touchmove: this.cancel, touchend: this.onClick, scope: this, }); delete this.cache; delete this.map; delete this.target; }, }); OpenLayers.Events.nofeatureclick = OpenLayers.Events.featureclick; OpenLayers.Events.featureover = OpenLayers.Events.featureclick; OpenLayers.Events.featureout = OpenLayers.Events.featureclick; 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, k = g.length; h < k; h++ ) { var l = this.extractSegment(g[h], "trkpt"); b.push(new OpenLayers.Feature.Vector(l, f)); } } if (this.extractRoutes) for (e = a.getElementsByTagName("rte"), c = 0, 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) for (a = a.getElementsByTagName("wpt"), c = 0, 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) for (f = 0, 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) { var b = {}; a = a.firstChild; for (var c, d; a; ) 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) { a = OpenLayers.Util.isArray(a) ? a : [a]; var 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.createElementNS(this.namespaces.gpx, "metadata"), d = 0; d < b.length; d++ ) { var e = b[d]; if (a[e]) { var f = this.createElementNS(this.namespaces.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.createElementNS(this.namespaces.gpx, "trk"); this.appendAttributesNode(c, a); a = this.buildTrkSegNode(b); a = OpenLayers.Util.isArray(a) ? a : [a]; for (var 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.createElementNS(this.namespaces.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.createElementNS(this.namespaces.gpx, "trkpt"); b.setAttribute("lon", a.x); b.setAttribute("lat", a.y); return b; }, buildWptNode: function (a) { var b = this.createElementNS(this.namespaces.gpx, "wpt"); b.setAttribute("lon", a.x); b.setAttribute("lat", a.y); return b; }, appendAttributesNode: function (a, b) { var c = this.createElementNS(this.namespaces.gpx, "name"); c.appendChild(this.createTextNode(b.attributes.name || b.id)); a.appendChild(c); c = this.createElementNS(this.namespaces.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", CLASS_NAME: "OpenLayers.Format.WMSDescribeLayer", }); OpenLayers.Format.WMSDescribeLayer.v1_1_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 b = a.documentElement.childNodes, c = { layerDescriptions: [] }, d, e, f = 0; f < b.length; ++f ) if (((d = b[f]), (e = d.nodeName), "LayerDescription" == e)) { e = d.getAttribute("name"); var g = "", h = "", k = ""; d.getAttribute("owsType") ? ((g = d.getAttribute("owsType")), (h = d.getAttribute("owsURL"))) : "" != d.getAttribute("wfs") ? ((g = "WFS"), (h = d.getAttribute("wfs"))) : "" != d.getAttribute("wcs") && ((g = "WCS"), (h = d.getAttribute("wcs"))); d = d.getElementsByTagName("Query"); 0 < d.length && ((k = d[0].getAttribute("typeName")) || (k = d[0].getAttribute("typename"))); d = { layerName: e, owsType: g, owsURL: h, typeName: k }; c.layerDescriptions.push(d); c.length = c.layerDescriptions.length; c[c.length - 1] = d; } else if ("ServiceException" == e) return { error: new OpenLayers.Format.OGCExceptionReport().read(a) }; return c; }, CLASS_NAME: "OpenLayers.Format.WMSDescribeLayer.v1_1_1", }); OpenLayers.Format.WMSDescribeLayer.v1_1_0 = OpenLayers.Format.WMSDescribeLayer.v1_1_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) { a = this.getXYZ(a); var 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: "© OpenStreetMap contributors", 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 (a, b, c) {}, drawText: function (a, b, c) {}, removeText: function (a) {}, clear: function () {}, getFeatureIdFromEvent: function (a) {}, 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 (a, b) {}, moveRoot: function (a) {}, 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(), e = b.title || b.graphicTitle; e && (d.title = e); var f = b.graphicWidth || b.graphicHeight, g = b.graphicHeight || b.graphicWidth, f = f ? f : 2 * b.pointRadius, g = g ? g : 2 * b.pointRadius, h = void 0 != b.graphicXOffset ? b.graphicXOffset : -(0.5 * f), k = void 0 != b.graphicYOffset ? b.graphicYOffset : -(0.5 * g), l = b.graphicOpacity || b.fillOpacity; d.onload = OpenLayers.Function.bind(function () { if (this.features[c]) { var b = this.getLocalXY(a), e = b[0], b = b[1]; if (!isNaN(e) && !isNaN(b)) { var e = (e + h) | 0, b = (b + k) | 0, p = this.canvas; p.globalAlpha = l; var q = OpenLayers.Renderer.Canvas.drawImageScaleFactor || (OpenLayers.Renderer.Canvas.drawImageScaleFactor = /android 2.1/.test( navigator.userAgent.toLowerCase() ) ? 320 / window.screen.width : 1); p.drawImage(d, e * q, b * q, f * q, g * q); this.hitDetection && (this.setHitContextStyle("fill", c), this.hitContext.fillRect(e, b, f, g)); } } }, 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)); a = "000000" + a.toString(16); var 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(); d = this.getLocalXY(b[0]); var 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) { a = a.components; var 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.globalAlpha = b.labelOutlineOpacity || b.fontOpacity || 1), (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 k = c[0] + h * this.canvas.mozMeasureText(e[g]), l = c[1] + g * d; this.canvas.translate(k, l); this.canvas.mozDrawText(e[g]); this.canvas.translate(-k, -l); } } 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) { 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 = {}; for (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])); var b = this.getNodes(a), c = this.getWays(a); a = Array(c.length); for (var 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]], k = new OpenLayers.Geometry.Point(h.lon, h.lat); k.osm_id = parseInt(c[d].nodes[g]); e[g] = k; 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 l in b) { h = b[l]; 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(l); e.fid = "node." + e.osm_id; a.push(e); } h.node = null; } return a; }, getNodes: function (a) { a = a.getElementsByTagName("node"); for (var 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) { a = a.getElementsByTagName("way"); for (var 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.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, { documentDrag: !1, geometryTypes: null, clickout: !0, toggle: !0, standalone: !1, layer: null, feature: null, vertex: null, vertices: null, virtualVertices: 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 = { documentDrag: this.documentDrag, stopDown: !1 }; this.handlers = { keyboard: new OpenLayers.Handler.Keyboard(this, { keydown: this.handleKeypress }), drag: new OpenLayers.Handler.Drag( this, { down: function (a) { this.vertex = null; (a = this.layer.getFeatureFromEvent(this.handlers.drag.evt)) ? this.dragStart(a) : this.clickout && (this._unselect = this.feature); }, move: function (a) { delete this._unselect; this.vertex && this.dragVertex(this.vertex, a); }, up: function () { this.handlers.drag.stopDown = !1; this._unselect && (this.unselectFeature(this._unselect), delete this._unselect); }, done: function (a) { this.vertex && this.dragComplete(this.vertex); }, }, c ), }; }, destroy: function () { this.map && this.map.events.un({ removelayer: this.handleMapEvents, changelayer: this.handleMapEvents, scope: this, }); this.layer = null; OpenLayers.Control.prototype.destroy.apply(this, []); }, activate: function () { this.moveLayerToTop(); this.map.events.on({ removelayer: this.handleMapEvents, changelayer: this.handleMapEvents, scope: this, }); return ( this.handlers.keyboard.activate() && this.handlers.drag.activate() && OpenLayers.Control.prototype.activate.apply(this, arguments) ); }, deactivate: function () { var a = !1; OpenLayers.Control.prototype.deactivate.apply(this, arguments) && (this.moveLayerBack(), this.map.events.un({ removelayer: this.handleMapEvents, changelayer: this.handleMapEvents, scope: this, }), this.layer.removeFeatures(this.vertices, { silent: !0 }), this.layer.removeFeatures(this.virtualVertices, { silent: !0 }), (this.vertices = []), this.handlers.drag.deactivate(), this.handlers.keyboard.deactivate(), (a = this.feature) && a.geometry && a.layer && this.unselectFeature(a), (a = !0)); return a; }, beforeSelectFeature: function (a) { return this.layer.events.triggerEvent("beforefeaturemodified", { feature: a }); }, selectFeature: function (a) { if ( !( this.feature === a || (this.geometryTypes && -1 == OpenLayers.Util.indexOf(this.geometryTypes, a.geometry.CLASS_NAME)) ) ) { !1 !== this.beforeSelectFeature(a) && (this.feature && this.unselectFeature(this.feature), (this.feature = a), this.layer.selectedFeatures.push(a), this.layer.drawFeature(a, "select"), (this.modified = !1), this.resetVertices(), this.onModificationStart(this.feature)); var b = a.modified; !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.layer.drawFeature(this.feature, "default"); this.feature = null; OpenLayers.Util.removeItem(this.layer.selectedFeatures, a); this.onModificationEnd(a); this.layer.events.triggerEvent("afterfeaturemodified", { feature: a, modified: this.modified }); this.modified = !1; }, dragStart: function (a) { var b = "OpenLayers.Geometry.Point" == a.geometry.CLASS_NAME; this.standalone || ((a._sketch || !b) && a._sketch) || (this.toggle && this.feature === a && (this._unselect = a), this.selectFeature(a)); if (a._sketch || b) (this.vertex = a), (this.handlers.drag.stopDown = !0); }, dragVertex: function (a, b) { var c = this.map.getLonLatFromViewPortPx(b), d = a.geometry; d.move(c.lon - d.x, c.lat - d.y); this.modified = !0; "OpenLayers.Geometry.Point" == this.feature.geometry.CLASS_NAME ? 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 : "select")); this.layer.drawFeature(a); }, dragComplete: function (a) { 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 () { 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; this.feature && -1 != OpenLayers.Util.indexOf(this.deleteCodes, b) && (b = this.layer.getFeatureFromEvent(this.handlers.drag.evt)) && -1 != OpenLayers.Util.indexOf(this.vertices, b) && !this.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 : "select"), (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) for (d = 0, 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 l = this.x - d.x, m = this.y - d.y, n = l - b, p = m - c; if (g) { var q = Math.atan2(p, n), q = Math.atan2(m, l) - q, q = q * (180 / Math.PI); a.rotate(q, d); } if (e) { var r; f ? ((m /= p), (r = l / n / m)) : ((n = Math.sqrt(n * n + p * p)), (m = Math.sqrt(l * l + m * m) / n)); a.resize(m, d, r); } }; c._sketch = !0; this.radiusHandle = c; this.radiusHandle.renderIntent = this.vertexRenderIntent; this.layer.addFeatures([this.radiusHandle], { silent: !0 }); }, setMap: function (a) { this.handlers.drag.setMap(a); OpenLayers.Control.prototype.setMap.apply(this, arguments); }, handleMapEvents: function (a) { ("removelayer" != a.type && "order" != a.property) || this.moveLayerToTop(); }, moveLayerToTop: function () { var a = Math.max(this.map.Z_INDEX_BASE.Feature - 1, this.layer.getZIndex()) + 1; this.layer.setZIndex(a); }, 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.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: '
${copyrights}Terms of Use
', metadata: null, protocolRegex: /^http:/i, type: "Road", culture: "en-US", metadataParams: null, tileOptions: null, protocol: ~window.location.href.indexOf("http") ? "" : "http:", 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 = this.protocol + "//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), b = b.replace(this.protocolRegex, this.protocol); 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 ); this.isBaseLayer || this.redraw(); this.updateAttribution(); }, getURL: function (a) { if (this.url) { var b = this.getXYZ(a); a = b.x; for (var 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")), d = b.imageryProviders || [], e = OpenLayers.Util.indexOf(this.serverResolutions, this.getServerResolution()), b = "", f, g, h, k, l, m, n; g = 0; for (h = d.length; g < h; ++g) for (f = d[g], k = 0, l = f.coverageAreas.length; k < l; ++k) (n = f.coverageAreas[k]), (m = OpenLayers.Bounds.fromArray(n.bbox, !0)), c.intersectsBounds(m) && e <= n.zoomMax && e >= n.zoomMin && (b += f.attribution + " "); a = a.brandLogoUri.replace(this.protocolRegex, this.protocol); this.attribution = OpenLayers.String.format(this.attributionTemplate, { type: this.type.toLowerCase(), logo: a, copyrights: b, }); this.map && this.map.events.triggerEvent("changelayer", { layer: this, property: "attribution" }); } }, setMap: function () { OpenLayers.Layer.XYZ.prototype.setMap.apply(this, arguments); 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.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(); (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())); a = OpenLayers.Layer.prototype.clone.apply(this, [a]); for (var 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 (a) { this.drawn = !1; if (this.strategies) { var 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 + this.map.layerContainerOriginPx.x, e = -Math.round(e), d = d + this.map.layerContainerOriginPx.y, d = -Math.round(d); this.div.style.left = e + "px"; this.div.style.top = d + "px"; e = this.map.getExtent().scale(this.ratio); d = this.renderer.setExtent(e, 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) for (this.drawn = !0, f = 0, 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) { a = !a || !a.silent; var 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 (a) {}, preFeatureInsert: function (a) {}, 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.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); var 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, k = 0; k < d; ++k ) for (var f = e + k * this.dx, l = 0; l < b; ++l) (h = c + l * this.dy), (h = new OpenLayers.Geometry.Point(f, h)), this.rotation && h.rotate(this.rotation, a), (g[k * b + l] = 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, interval: 0, maxDelta: Number.POSITIVE_INFINITY, 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, b = ((f = e.currentStyle ? e.currentStyle.overflow : document.defaultView.getComputedStyle(e, null).getPropertyValue("overflow")) && "auto" == f) || "scroll" == f; } catch (g) {} if (!c && ((c = OpenLayers.Element.hasClass(e, "olScrollable")), !c)) for (var d = 0, h = this.map.layers.length; d < h; d++) { var k = this.map.layers[d]; if (e == k.div || e == k.pane) { c = !0; break; } } d = e == this.map.div; e = e.parentNode; } if (!b && d) { if (c) if ( ((b = 0), a.wheelDelta ? ((b = a.wheelDelta), 0 === b % 160 && (b *= 0.75), (b /= 120)) : a.detail && (b = -(a.detail / Math.abs(a.detail))), (this.delta += b), window.clearTimeout(this._timeoutId), this.interval && Math.abs(this.delta) < this.maxDelta) ) { var l = OpenLayers.Util.extend({}, a); this._timeoutId = window.setTimeout( OpenLayers.Function.bind(function () { this.wheelZoom(l); }, this), this.interval ); } else this.wheelZoom(a); OpenLayers.Event.stop(a); } } }, wheelZoom: function (a) { var b = this.delta; this.delta = 0; b && ((a.xy = this.map.events.getMousePosition(a)), 0 > b ? this.callback("down", [a, this.cumulative ? Math.max(-this.maxDelta, b) : -1]) : this.callback("up", [a, this.cumulative ? Math.min(this.maxDelta, b) : 1])); }, 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.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) { var b; b = OpenLayers.Util.isArray(a) ? "wfs:FeatureCollection" : "gml:featureMember"; a = this.writeNode(b, 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, c) { return OpenLayers.Format.GML.v2.prototype.readNode.apply(this, arguments); }, 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 = b.insertIds.concat(c.fids); }, 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) { a = OpenLayers.Util.extend( { featureNS: this.featureNS, featurePrefix: this.featurePrefix, featureType: this.featureType, srsName: this.srsName, srsNameInQuery: this.srsNameInQuery, }, a ); var 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) { a = a.id; var 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) { b = a.getZIndex(b); var 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); 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 (a, b) {}, 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))); !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, d) { 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) { c = c || a._style; var 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 (a) {}, drawPoint: function (a, b) {}, drawLineString: function (a, b) {}, drawLinearRing: function (a, b) {}, drawPolygon: function (a, b) {}, drawRectangle: function (a, b) {}, drawCircle: function (a, b) {}, 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 (c = OpenLayers.Util.getElement(a.id)) && c.parentNode && (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 (a, b) {}, createNode: function (a, b) {}, 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) { a = a || window.location.href; var 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; } } 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) ? (OpenLayers.Control.prototype.initialize.apply(this, [c]), (this.element = OpenLayers.Util.getElement(a)), (this.base = b || document.location.href)) : ((this.base = document.location.href), OpenLayers.Control.prototype.initialize.apply(this, [a]), null != this.element && (this.element = OpenLayers.Util.getElement(this.element))); }, 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, c = null; -1 != b.indexOf("#") && !1 == this.anchor && (c = b.substring(b.indexOf("#"), b.length)); -1 != b.indexOf(a) && (b = b.substring(0, b.indexOf(a))); b = b.split("#")[0] + a + OpenLayers.Util.getParameterString(this.createParams()); c && (b += c); this.anchor && !this.element ? (window.location.href = b) : (this.element.href = b); }, createParams: function (a, b, c) { a = a || this.map.getCenter(); var d = OpenLayers.Util.getParameters(this.base); if (a) for ( 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, 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) { a = this.adjustBounds(a); var 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)); b = this.getServerZoom(); c = this.serviceVersion + "/" + this.layername + "/" + b + "/" + 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.Format.WCSCapabilities = OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC, { defaultVersion: "1.1.0", CLASS_NAME: "OpenLayers.Format.WCSCapabilities", }); OpenLayers.Format.WCSCapabilities.v1 = OpenLayers.Class(OpenLayers.Format.XML, { regExes: { trimSpace: /^\s*|\s*$/g, splitSpace: /\s+/ }, defaultPrefix: "wcs", 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.WCSCapabilities.v1", }); OpenLayers.Format.WCSCapabilities.v1_0_0 = OpenLayers.Class(OpenLayers.Format.WCSCapabilities.v1, { namespaces: { wcs: "http://www.opengis.net/wcs", xlink: "http://www.w3.org/1999/xlink", xsi: "http://www.w3.org/2001/XMLSchema-instance", ows: "http://www.opengis.net/ows", }, errorProperty: "service", readers: { wcs: { WCS_Capabilities: function (a, b) { this.readChildNodes(a, b); }, Service: function (a, b) { b.service = {}; this.readChildNodes(a, b.service); }, name: function (a, b) { b.name = this.getChildValue(a); }, label: function (a, b) { b.label = this.getChildValue(a); }, keywords: function (a, b) { b.keywords = []; this.readChildNodes(a, b.keywords); }, keyword: function (a, b) { b.push(this.getChildValue(a)); }, responsibleParty: function (a, b) { b.responsibleParty = {}; this.readChildNodes(a, b.responsibleParty); }, individualName: function (a, b) { b.individualName = this.getChildValue(a); }, organisationName: function (a, b) { b.organisationName = 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); }, facsimile: function (a, b) { b.facsimile = 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); }, 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); }, fees: function (a, b) { b.fees = this.getChildValue(a); }, accessConstraints: function (a, b) { b.accessConstraints = this.getChildValue(a); }, ContentMetadata: function (a, b) { b.contentMetadata = []; this.readChildNodes(a, b.contentMetadata); }, CoverageOfferingBrief: function (a, b) { var c = {}; this.readChildNodes(a, c); b.push(c); }, name: function (a, b) { b.name = this.getChildValue(a); }, label: function (a, b) { b.label = this.getChildValue(a); }, lonLatEnvelope: function (a, b) { var c = this.getElementsByTagNameNS(a, "http://www.opengis.net/gml", "pos"); if (2 == c.length) { var d = {}, e = {}; OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this, [c[0], d]); OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this, [c[1], e]); b.lonLatEnvelope = {}; b.lonLatEnvelope.srsName = a.getAttribute("srsName"); b.lonLatEnvelope.min = d.points[0]; b.lonLatEnvelope.max = e.points[0]; } }, }, }, CLASS_NAME: "OpenLayers.Format.WCSCapabilities.v1_0_0", }); OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { preload: !1, activate: function () { var a = OpenLayers.Strategy.prototype.activate.apply(this, arguments); if (a) if ( (this.layer.events.on({ refresh: this.load, scope: this }), !0 == this.layer.visibility || this.preload) ) this.load(); else this.layer.events.on({ visibilitychanged: this.load, scope: this }); return a; }, 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", { filter: b.filter }); b.protocol.read( OpenLayers.Util.applyDefaults({ callback: this.merge, filter: b.filter, scope: this }, a) ); b.events.un({ visibilitychanged: this.load, scope: this }); }, merge: function (a) { var b = this.layer; b.destroyFeatures(); var c = a.features; if (c && 0 < c.length) { var d = b.projection, e = b.map.getProjectionObject(); if (!e.equals(d)) for (var f, g = 0, h = c.length; g < h; ++g) (f = c[g].geometry) && f.transform(d, e); b.addFeatures(c); } b.events.triggerEvent("loadend", { response: a }); }, CLASS_NAME: "OpenLayers.Strategy.Fixed", }); OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, { zoomInText: "+", zoomInId: "olZoomInLink", zoomOutText: "\u2212", 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]; f = d.geometry; if (!f) (f = d.lonlat), (f = new OpenLayers.Geometry.Point(f.lon, f.lat)); else if ("OpenLayers.Geometry.Point" != f.CLASS_NAME) throw new TypeError("Only features with point geometries are supported."); if (0 < g) { d = null != this.dataFrom ? a[g + this.dataFrom].data || a[g + this.dataFrom].attributes : null; var k = 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, k); } 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) { a = OpenLayers.Util.applyDefaults(a, OpenLayers.Protocol.WFS.DEFAULTS); var 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; a = 0; for (var 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) : ((a = a.draw(b)), this.div.appendChild(a)); }, 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.Button, { slideFactor: 50, slideRatio: null, direction: null, initialize: function (a, b) { this.direction = a; this.CLASS_NAME += this.direction; OpenLayers.Control.prototype.initialize.apply(this, [b]); }, trigger: function () { if (this.map) { 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) { a = OpenLayers.Util.applyDefaults(a, OpenLayers.Format.CSWGetDomain.DEFAULTS); var 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 }, }); a.PropertyName || this.PropertyName ? this.writeNode("csw:PropertyName", a.PropertyName || this.PropertyName, b) : (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, k, l, m, n, p, q = this.precedence.length, r = new OpenLayers.LonLat(b.x, b.y), s = 0, t = g.length; s < t; ++s ) if ( ((h = g[s]), h !== this.feature && !h._sketch && h.state !== OpenLayers.State.DELETE && (!a.filter || a.filter.evaluate(h)) && h.atPoint(r, d, d)) ) for (var u = 0, v = Math.min(e.rank + 1, q); u < v; ++u) if (((k = this.precedence[u]), a[k])) if ("edge" === k) { if ( ((l = h.geometry.distanceTo(b, { details: !0 })), (n = l.distance), n <= c[k] && n < e.dist) ) { e = { rank: u, dist: n, x: l.x0, y: l.y0 }; f = !0; break; } } else { l = h.geometry.getVertices("node" === k); p = !1; for (var w = 0, x = l.length; w < x; ++w) (m = l[w]), (n = m.distanceTo(b)), n <= c[k] && (u < e.rank || (u === e.rank && n < e.dist)) && ((e = { rank: u, dist: n, x: m.x, y: m.y }), (p = f = !0)); if (p) 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.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.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 k = 32 * h, l = this.getElementsByTagNameNS(e, "*", "Icon")[0]; if (l) { var m = this.parseProperty(l, "*", "href"); if (m) { var n = this.parseProperty(l, "*", "w"), p = this.parseProperty(l, "*", "h"); !OpenLayers.String.startsWith(m, "http://maps.google.com/mapfiles/kml") || n || p || ((p = n = 64), (h /= 2)); n = n || p; p = p || n; n && (d = parseInt(n) * h); p && (k = parseInt(p) * h); if ((p = m.match(this.regExes.kmlIconPalette))) (n = p[1]), (p = p[2]), (m = this.parseProperty(l, "*", "x")), (l = this.parseProperty(l, "*", "y")), (m = "http://maps.google.com/mapfiles/kml/pal" + n + "/icon" + (8 * (l ? 7 - l / 32 : 7) + (m ? m / 32 : 0)) + p); b.graphicOpacity = 1; b.externalGraphic = m; } } if ((e = this.getElementsByTagNameNS(e, "*", "hotSpot")[0])) (m = parseFloat(e.getAttribute("x"))), (l = parseFloat(e.getAttribute("y"))), (n = e.getAttribute("xunits")), "pixels" == n ? (b.graphicXOffset = -m * h) : "insetPixels" == n ? (b.graphicXOffset = -d + m * h) : "fraction" == n && (b.graphicXOffset = -d * m), (e = e.getAttribute("yunits")), "pixels" == e ? (b.graphicYOffset = -k + l * h + 1) : "insetPixels" == e ? (b.graphicYOffset = -(l * h) + 1) : "fraction" == e && (b.graphicYOffset = -k * (1 - l) + 1); b.graphicWidth = d; b.graphicHeight = k; 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); (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 k = f[g], l = this.parseProperty(k, "*", "key"); (k = this.parseProperty(k, "*", "styleUrl")) && "normal" == l && (this.styles[(b.styleBaseUrl || "") + "#" + e] = this.styles[(b.styleBaseUrl || "") + k]); } }, 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]; h && (h = this.parseStyle(h)) && (g.style = OpenLayers.Util.extend(g.style, h)); } this.extractTracks ? (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)) : 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, e = 0, f = c.whens.length; e < f; ++e) { h = b.feature.clone(); h.fid = b.feature.fid || b.feature.id; d = c.points[e]; h.geometry = d; "z" in d && (h.attributes.altitude = d.z); this.internalProjection && this.externalProjection && h.geometry.transform(this.externalProjection, this.internalProjection); if (this.trackAttributes) for (var k = 0, l = this.trackAttributes.length; k < l; ++k) (d = this.trackAttributes[k]), (h.attributes[d] = c.attributes[d][e]); h.attributes.when = c.whens[e]; h.attributes.trackId = b.feature.id; g && ((d = c.angles[e]), (h.attributes.heading = parseFloat(d[0])), (h.attributes.tilt = parseFloat(d[1])), (h.attributes.roll = parseFloat(d[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, k = 0; k < e; ++k ) if (((g = d[k].split(",")), (h = g.length), 1 < h)) 2 == g.length && (g[2] = null), (f[k] = new OpenLayers.Geometry.Point(g[0], g[1], g[2])); else throw "Bad LineString point coordinates: " + d[k]; 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) { a = this.getElementsByTagNameNS(a, this.internalns, "LinearRing"); var 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 = a.prefix ? a.nodeName.split(":")[1] : a.nodeName), (b = this.parseGeometry[b.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])); var d, e, f; a = a.childNodes; for (var 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 = {}, k = e.getElementsByTagName("value"); k.length && (h.value = this.getChildValue(k[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"), c = a.style && a.style.label ? a.style.label : a.id; b.appendChild(this.createTextNode(a.attributes.name || c)); var d = this.createElementNS(this.kmlns, "description"); d.appendChild(this.createTextNode(a.attributes.description || this.placemarksDesc)); c = this.createElementNS(this.kmlns, "Placemark"); null != a.fid && c.setAttribute("id", a.fid); c.appendChild(b); c.appendChild(d); b = this.buildGeometryNode(a.geometry); c.appendChild(b); a.attributes && (a = this.buildExtendedData(a.attributes)) && c.appendChild(a); return c; }, buildGeometryNode: function (a) { var b = a.CLASS_NAME, b = b.substring(b.lastIndexOf(".") + 1), b = this.buildGeometry[b.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) { var b = this.createElementNS(this.kmlns, "Polygon"); a = a.components; for (var 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.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, b) { var c = {}; c.bbox = [ parseFloat(a.getAttribute("minx")), parseFloat(a.getAttribute("miny")), parseFloat(a.getAttribute("maxx")), parseFloat(a.getAttribute("maxy")), ]; var d = { x: parseFloat(a.getAttribute("resx")), y: parseFloat(a.getAttribute("resy")) }; (isNaN(d.x) && isNaN(d.y)) || (c.res = d); return c; }, 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"), k = a.getAttribute("fixedWidth"), l = a.getAttribute("fixedHeight"), m = c || {}, n = OpenLayers.Util.extend; c = { nestedLayers: [], styles: c ? [].concat(c.styles) : [], srs: c ? n({}, m.srs) : {}, metadataURLs: [], bbox: c ? n({}, m.bbox) : {}, llbbox: m.llbbox, dimensions: c ? n({}, m.dimensions) : {}, authorityURLs: c ? n({}, m.authorityURLs) : {}, identifiers: {}, keywords: [], queryable: f && "" !== f ? "1" === f || "true" === f : m.queryable || !1, cascaded: null !== g ? parseInt(g) : m.cascaded || 0, opaque: e ? "1" === e || "true" === e : m.opaque || !1, noSubsets: null !== h ? "1" === h || "true" === h : m.noSubsets || !1, fixedWidth: null != k ? parseInt(k) : m.fixedWidth || 0, fixedHeight: null != l ? parseInt(l) : m.fixedHeight || 0, minScale: m.minScale, maxScale: m.maxScale, attribution: m.attribution, }; b.nestedLayers.push(c); c.capability = d; this.readChildNodes(a, c); delete c.capability; 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_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; 0 != c && (b.maxScale = parseFloat(((c / e) * f * OpenLayers.DOTS_PER_INCH).toPrecision(13))); d != Number.POSITIVE_INFINITY && (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.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.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; (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; (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.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, 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.startTouch(); return OpenLayers.Event.isMultiTouch(a) ? !0 : this.mousedown(a); }, touchmove: function (a) { OpenLayers.Event.preventDefault(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; (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.preventDefault(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) { if ((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.up = this.down = null)) : 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.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 () { var a = Math.max(this.map.Z_INDEX_BASE.Feature - 1, this.layer.getZIndex()) + 1; this.layer.setZIndex(a); }, 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.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) { var b = this.layers || [this.layer], c, d, e, f; for (e = 0; e < b.length; ++e) if (((c = b[e]), (f = 0), null != c.selectedFeatures)) for (; c.selectedFeatures.length > f; ) (d = c.selectedFeatures[f]), a && a.except == d ? ++f : 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 (a) { !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.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, lastTouchPx: null, initialize: function (a, b, c) { (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; 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.startTouch(); 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; if ( !this.checkModifiers(a) || (this.lastUp && this.lastUp.equals(a.xy)) || !this.lastDown || !this.passesTolerance(this.lastDown, a.xy, this.pixelTolerance) ) return !0; this.touch && this.modifyFeature(a.xy); this.persist && this.destroyPersistedFeature(); this.lastUp = a.xy; this.finalize(); return !this.stopUp; }, 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.getCurrentPointIndex() - 1, c = this.line.geometry.components[c]; !c || isNaN(c.x) || isNaN(c.y) || this.insertXY(c.x + a, c.y + b); }, insertDirectionLength: function (a, b) { a *= Math.PI / 180; var 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], d = Math.atan2(d.y - c.y, d.x - c.x); this.insertDirectionLength((180 * d) / 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, d = b[c], e = a.removeComponent(d); e && (this.touch && 0 < c && ((b = a.components), (a = b[c - 1]), (c = this.getCurrentPointIndex()), (b = b[c]), (b.x = a.x), (b.y = a.y)), this.redoStack || (this.redoStack = []), this.redoStack.push(d), this.drawFeature()); return e; }, 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) { !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) { c = c || OpenLayers.Spherical.DEFAULT_RADIUS; var 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.onTileLoaded, scope: this, }); }, removeLayer: function (a) { a.layer.events.un({ tileloadstart: this.makeSameOrigin, tileloaded: this.onTileLoaded, 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; } }, onTileLoaded: function (a) { this.active && !a.aborted && a.tile instanceof OpenLayers.Tile.Image && "data:" !== a.tile.url.substr(0, 5) && (this.cache({ tile: a.tile }), delete OpenLayers.Control.CacheWrite.urlMap[a.tile.url]); }, cache: function (a) { if (window.localStorage) { a = a.tile; try { var b = a.getCanvasContext(); b && window.localStorage.setItem( "olCache_" + (OpenLayers.Control.CacheWrite.urlMap[a.url] || a.url), b.canvas.toDataURL(this.imageFormat) ); } catch (c) { (b = c.name || c.message) && this.quotaRegEx.test(b) ? this.events.triggerEvent("cachefull", { tile: a }) : OpenLayers.Console.error(c.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) for (e.format = a.formats[0].value, b = 0, 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) for (b = 0, 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) for (d = 0, 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)) for (a = 0, 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) { a = a.server; var 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) { b = ["width", "height", "format"]; for (var 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, l = (-this.deceleration * Math.pow(a, 2)) / 2 + c * a, m = l * d, l = l * e, n, p; n = !1; 0 >= -this.deceleration * a + c && (OpenLayers.Animation.stop(this.timerId), (this.timerId = null), (n = !0)); a = m - g; p = l - h; g = m; h = l; b(a, p, n); } }, this) ); }, CLASS_NAME: "OpenLayers.Kinetic", }); OpenLayers.Format.WPSExecute = OpenLayers.Class( OpenLayers.Format.XML, OpenLayers.Format.Filter.v1_1_0, { 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 (a) {}, 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]); }, 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; }, 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, }, }); if (a.outputs) for (var c = 0, d = a.outputs.length; c < d; c++) this.writeNode("wps:Output", a.outputs[c], b); return b; }, Output: function (a) { var b = this.createElementNSPlus("wps:Output", { attributes: { asReference: a.asReference, mimeType: a.mimeType, encoding: a.encoding, schema: a.schema, }, }); 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, encoding: a.encoding, schema: a.schema }, }); 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); a.boundingBoxData && this.writeNode("wps:BoundingBoxData", a.boundingBoxData, 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) : a.boundingBoxData && this.writeNode("ows:BoundingBox", a.boundingBoxData, 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; }, BoundingBoxData: function (a, b) { this.writers.ows.BoundingBox.apply(this, [a, b, "wps:BoundingBoxData"]); }, 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, }, readers: { wps: { ExecuteResponse: function (a, b) { b.executeResponse = { lang: a.getAttribute("lang"), statusLocation: a.getAttribute("statusLocation"), serviceInstance: a.getAttribute("serviceInstance"), service: a.getAttribute("service"), }; this.readChildNodes(a, b.executeResponse); }, Process: function (a, b) { b.process = {}; this.readChildNodes(a, b.process); }, Status: function (a, b) { b.status = { creationTime: a.getAttribute("creationTime") }; this.readChildNodes(a, b.status); }, ProcessSucceeded: function (a, b) { b.processSucceeded = !0; }, ProcessOutputs: function (a, b) { b.processOutputs = []; this.readChildNodes(a, b.processOutputs); }, Output: function (a, b) { var c = {}; this.readChildNodes(a, c); b.push(c); }, Reference: function (a, b) { b.reference = { href: a.getAttribute("href"), mimeType: a.getAttribute("mimeType"), encoding: a.getAttribute("encoding"), schema: a.getAttribute("schema"), }; }, Data: function (a, b) { b.data = {}; this.readChildNodes(a, b); }, LiteralData: function (a, b) { b.literalData = { dataType: a.getAttribute("dataType"), uom: a.getAttribute("uom"), value: this.getChildValue(a), }; }, ComplexData: function (a, b) { b.complexData = { mimeType: a.getAttribute("mimeType"), schema: a.getAttribute("schema"), encoding: a.getAttribute("encoding"), value: "", }; if (this.isSimpleContent(a)) { var c; for (c = a.firstChild; c; c = c.nextSibling) switch (c.nodeType) { case 3: case 4: b.complexData.value += c.nodeValue; } } else for (c = a.firstChild; c; c = c.nextSibling) 1 == c.nodeType && (b.complexData.value = c); }, BoundingBox: function (a, b) { b.boundingBoxData = { dimensions: a.getAttribute("dimensions"), crs: a.getAttribute("crs"), }; this.readChildNodes(a, b.boundingBoxData); }, }, ows: OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers.ows, }, CLASS_NAME: "OpenLayers.Format.WPSExecute", } ); 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; (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())); b = new OpenLayers.Format.GeoRSS(a).read(b); a = 0; for (var 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.", k = 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 l = '
[x]
', l = l + '
'; k && (l += ''); l += g; k && (l += ""); l += "
"; l += '
'; l += h; l += "
"; e.popupContentHTML = l; } 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 ? null : this; 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) { b = OpenLayers.Util.applyDefaults(b, this.options); var 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) for (c = 0, 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, k, l = 0, m = a.rules.length; l < m; ++l) if (((e = a.rules[l]), e.symbolizers)) { f = {}; for (var n = 0, p = e.symbolizers.length; n < p; ++n) (g = e.symbolizers[n]), (h = g.zIndex), h in f || ((k = e.clone()), (k.symbolizers = []), (f[h] = k)), 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(); l = 0; for (m = d.length; l < m; ++l) (e = c[d[l]]), 0 < e.length && ((k = a.clone()), (k.rules = c[d[l]]), this.writeNode("FeatureTypeStyle", k, 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); a = a.graphicFormat || this.getGraphicFormat(a.externalGraphic); this.writeNode("Format", a, 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) ); !this.noMagic && this.params.TRANSPARENT && "true" == this.params.TRANSPARENT.toString().toLowerCase() && ((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] && OpenLayers.Projection.defaults[a].yx)) ); }, getURL: function (a) { a = this.adjustBounds(a); var 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.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) { a = this.adjustBounds(a); var b = this.map.getResolution(), c = Math.round(1e4 * this.map.getScale()) / 1e4, d = Math.round(a.left / b); a = -Math.round(a.top / b); return this.getFullRequestString({ t: a, l: d, s: c }); }, calculateGridLayout: function (a, b, c) { b = c * this.tileSize.w; c *= this.tileSize.h; return { tilelon: b, tilelat: c, startcol: Math.floor(a.left / b) - this.buffer, startrow: Math.floor(a.top / c) + this.buffer, }; }, getTileBoundsForGridIndex: function (a, b) { this.getTileOrigin(); var c = this.gridLayout, d = c.tilelon, e = c.tilelat, f = (c.startcol + b) * d, c = (c.startrow - a) * e; return new OpenLayers.Bounds(f, c, f + d, c + e); }, 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.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 (a) { 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) { b = b || a._style; c = c || a._options; var d = b.title || b.graphicTitle; if (d) { a.setAttributeNS(null, "title", d); var e = a.getElementsByTagName("title"); 0 < e.length ? (e[0].firstChild.textContent = d) : ((e = this.nodeFactory(null, "title")), (e.textContent = d), a.appendChild(e)); } var e = parseFloat(a.getAttributeNS(null, "r")), d = 1, f; if ("OpenLayers.Geometry.Point" == a._geometryClass && e) { a.style.visibility = ""; if (!1 === b.graphic) a.style.visibility = "hidden"; else if (b.externalGraphic) { f = this.getPosition(a); b.graphicWidth && b.graphicHeight && a.setAttributeNS(null, "preserveAspectRatio", "none"); var e = b.graphicWidth || b.graphicHeight, g = b.graphicHeight || b.graphicWidth, e = e ? e : 2 * b.pointRadius, g = g ? g : 2 * b.pointRadius, h = void 0 != b.graphicYOffset ? b.graphicYOffset : -(0.5 * g), k = b.graphicOpacity || b.fillOpacity; a.setAttributeNS( null, "x", (f.x + (void 0 != b.graphicXOffset ? b.graphicXOffset : -(0.5 * e))).toFixed() ); a.setAttributeNS(null, "y", (f.y + h).toFixed()); a.setAttributeNS(null, "width", e); a.setAttributeNS(null, "height", g); a.setAttributeNS(this.xlinkns, "xlink:href", b.externalGraphic); a.setAttributeNS(null, "style", "opacity: " + k); a.onclick = OpenLayers.Event.preventDefault; } else if (this.isComplexSymbol(b.graphicName)) { var e = 3 * b.pointRadius, g = 2 * e, l = this.importSymbol(b.graphicName); f = this.getPosition(a); d = (3 * this.symbolMetrics[l.id][0]) / g; h = a.parentNode; k = a.nextSibling; h && h.removeChild(a); a.firstChild && a.removeChild(a.firstChild); a.appendChild(l.firstChild.cloneNode(!0)); a.setAttributeNS(null, "viewBox", l.getAttributeNS(null, "viewBox")); a.setAttributeNS(null, "width", g); a.setAttributeNS(null, "height", g); a.setAttributeNS(null, "x", f.x - e); a.setAttributeNS(null, "y", f.y - e); k ? h.insertBefore(a, k) : h && h.appendChild(a); } else a.setAttributeNS(null, "r", b.pointRadius); e = b.rotation; (void 0 === e && void 0 === a._rotation) || !f || ((a._rotation = e), (e |= 0), "svg" !== a.nodeName ? a.setAttributeNS(null, "transform", "rotate(" + e + " " + f.x + " " + f.y + ")") : ((f = this.symbolMetrics[l.id]), a.firstChild.setAttributeNS( null, "transform", "rotate(" + e + " " + 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 * d), a.setAttributeNS(null, "stroke-linecap", b.strokeLinecap || "round"), a.setAttributeNS(null, "stroke-linejoin", "round"), b.strokeDashstyle && a.setAttributeNS(null, "stroke-dasharray", this.dashStyle(b, d))) : 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, k = b.components.length; h < k; 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; b.labelOutlineOpacity && (e.fontOpacity = b.labelOutlineOpacity); 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"), k = h.length; f.childNodes.length > k; ) f.removeChild(f.lastChild); for (var l = 0; l < k; l++) { var m = this.nodeFactory(a + d + "_tspan_" + l, "tspan"); !0 === b.labelSelect && ((m._featureId = a), (m._geometry = c), (m._geometryClass = c.CLASS_NAME)); !1 === OpenLayers.IS_GECKO && m.setAttributeNS( null, "baseline-shift", OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]] || "-35%" ); m.setAttribute("x", e); if (0 == l) { var n = OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]]; null == n && (n = -0.5); m.setAttribute("dy", n * (k - 1) + "em"); } else m.setAttribute("dy", "1em"); m.textContent = "" === h[l] ? " " : h[l]; m.parentNode || f.appendChild(m); } 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, k; if (h < -d || h > d) (k = (c - g) / (h - f)), (h = 0 > h ? -d : d), (c = g + (h - f) * k); if (c < -e || c > e) (k = (h - f) / (c - g)), (c = 0 > c ? -e : e), (h = f + (c - g) * k); 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"); a = this.nodeFactory(b, "symbol"); var 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, k = 0; k < d.length; k += 2 ) (g = d[k]), (h = d[k + 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) { OpenLayers.Event.preventDefault(a); }; 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"), c = a.getDataExtent(); null !== c && this.writeNode("gml:boundedBy", c, 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.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 = "
" + this.contentDiv.innerHTML + "
", 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._onImgLoad)); }, 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) { a = 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.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; 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 (a) { 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.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 || 1e-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], k = d / c[g], d = this.getBarLen(h), l = this.getBarLen(k), h = (d / c[b]) * c[f], k = (l / c[b]) * c[g], b = h / a / e, a = k / a / e; "visible" == this.eBottom.style.visibility && ((this.eBottom.style.width = Math.round(a) + "px"), (this.eBottom.innerHTML = l + " " + 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) { var b = this.getServerResolution(), c = this.maxExtent, d = this.tileSize, e = Math.round((a.left - c.left) / (b * d.w)); a = Math.round((a.bottom - c.bottom) / (b * d.h)); b = null != this.serverResolutions ? OpenLayers.Util.indexOf(this.serverResolutions, b) : this.map.getZoom(); e = [ this.layername, OpenLayers.Number.zeroPad(b, 2), OpenLayers.Number.zeroPad(parseInt(e / 1e6), 3), OpenLayers.Number.zeroPad(parseInt(e / 1e3) % 1e3, 3), OpenLayers.Number.zeroPad(parseInt(e) % 1e3, 3), OpenLayers.Number.zeroPad(parseInt(a / 1e6), 3), OpenLayers.Number.zeroPad(parseInt(a / 1e3) % 1e3, 3), OpenLayers.Number.zeroPad(parseInt(a) % 1e3, 3) + "." + this.extension, ].join("/"); b = this.url; OpenLayers.Util.isArray(b) && (b = this.selectUrl(e, b)); b = "/" == b.charAt(b.length - 1) ? b : b + "/"; return b + e; }, CLASS_NAME: "OpenLayers.Layer.TileCache", }); 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.Control.DragFeature = OpenLayers.Class(OpenLayers.Control, { geometryTypes: null, onStart: function (a, b) {}, onDrag: function (a, b) {}, onComplete: function (a, b) {}, onEnter: function (a) {}, onLeave: function (a) {}, 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 (a) { 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.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) { b = OpenLayers.Util.applyDefaults(b, { rotation: 0, scale: 1, ratio: 1 }); var 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 k = this.x - f.x, l = this.y - f.y, m = k - (this.x - h.x), n = l - (this.y - h.y); a.irregular && !a._setfeature && ((k -= (this.x - h.x) / 2), (l -= (this.y - h.y) / 2)); this.x = d; this.y = e; h = 1; g ? ((l = 1e-5 > Math.abs(n) ? 1 : l / n), (h = (1e-5 > Math.abs(m) ? 1 : k / m) / l)) : ((m = Math.sqrt(m * m + n * n)), (l = Math.sqrt(k * k + l * l) / m)); a._moving = !0; a.box.geometry.rotate(-a.rotation, f); delete a._moving; a.box.geometry.resize(l, f, h); a.box.geometry.rotate(a.rotation, f); a.transformFeature({ scale: l, ratio: h }); a.irregular && !a._setfeature && ((k = f.clone()), (k.x += 1e-5 > Math.abs(d - f.x) ? 0 : this.x - d), (k.y += 1e-5 > Math.abs(e - f.y) ? 0 : this.y - e), a.box.geometry.move(this.x - d, this.y - e), a.transformFeature({ center: k })); } }, 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, k = this.y - g.y; this.x = d; this.y = e; d = Math.atan2(k - c, h - b); d = Math.atan2(k, 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), k, l, m, n = "sw s se e ne n nw w".split(" "), p = 0; 8 > p; ++p ) (k = this.box.geometry.components[p]), (l = new OpenLayers.Feature.Vector( k.clone(), { role: n[p] + "-resize" }, "string" == typeof this.renderIntent ? null : this.renderIntent )), 0 == p % 2 && ((m = new OpenLayers.Feature.Vector( k.clone(), { role: n[p] + "-rotate" }, "string" == typeof this.rotationHandleSymbolizer ? null : this.rotationHandleSymbolizer )), (m.geometry.move = f), (k._rotationHandle = m), (h[p / 2] = m)), (k.move = b), (k.resize = c), (k.rotate = d), (l.geometry.move = e), (k._handle = l), (g[p] = l); 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, c) { b === a.box && a.transformFeature({ center: a.center }); }, onStart: function (b, c) { var d = !a.geometryTypes || -1 !== OpenLayers.Util.indexOf(a.geometryTypes, b.geometry.CLASS_NAME), e = OpenLayers.Util.indexOf(a.handles, b), e = e + OpenLayers.Util.indexOf(a.rotationHandles, b); b !== a.feature && b !== a.box && -2 == e && d && a.setFeature(b); }, onComplete: function (b, c) { 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 (a) { 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, zoomOnClick: !0, 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, c = a.getCenterPixel(); if (this.out) { b = Math.min(this.map.size.h / (a.bottom - a.top), this.map.size.w / (a.right - a.left)); var d = this.map.getExtent(), e = this.map.getLonLatFromPixel(c), f = e.lon - (d.getWidth() / 2) * b; a = e.lon + (d.getWidth() / 2) * b; var g = e.lat - (d.getHeight() / 2) * b; b = e.lat + (d.getHeight() / 2) * b; b = new OpenLayers.Bounds(f, g, a, b); } else (f = this.map.getLonLatFromPixel({ x: a.left, y: a.bottom })), (a = this.map.getLonLatFromPixel({ x: a.right, y: a.top })), (b = new OpenLayers.Bounds(f.lon, f.lat, a.lon, a.lat)); f = this.map.getZoom(); g = this.map.getSize(); a = g.w / 2; g = g.h / 2; b = this.map.getZoomForExtent(b); d = this.map.getResolution(); e = this.map.getResolutionForZoom(b); d == e ? this.map.setCenter(this.map.getLonLatFromPixel(c)) : this.map.zoomTo(b, { x: (d * c.x - e * a) / (d - e), y: (d * c.y - e * g) / (d - e) }); f == this.map.getZoom() && !0 == this.alwaysZoom && this.map.zoomTo(f + (this.out ? -1 : 1)); } else this.zoomOnClick && (this.out ? this.map.zoomTo(this.map.getZoom() - 1, a) : this.map.zoomTo(this.map.getZoom() + 1, a)); }, CLASS_NAME: "OpenLayers.Control.ZoomBox", }); OpenLayers.Control.DragPan = OpenLayers.Class(OpenLayers.Control, { type: OpenLayers.Control.TYPE_TOOL, panned: !1, interval: 0, documentDrag: !1, kinetic: null, enableKinetic: !0, kineticInterval: 10, draw: function () { if (this.enableKinetic && OpenLayers.Kinetic) { 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.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 }, OpenLayers.Util.extend( this.map.fractionalZoom ? {} : { cumulative: !1, interval: 50, maxDelta: 6 }, 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.zoomTo(this.map.zoom + 1, a.xy); }, defaultDblRightClick: function (a) { this.map.zoomTo(this.map.zoom - 1, a.xy); }, wheelChange: function (a, b) { this.map.fractionalZoom || (b = Math.round(b)); var c = this.map.getZoom(), d; d = Math.max(c + b, 0); d = Math.min(d, this.map.getNumZoomLevels()); d !== c && this.map.zoomTo(d, a.xy); }, 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 () {}, 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) { a = a.vertex; var 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) a: for (d = c.length - 2; 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()]); var c = [ 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 }, }), ]; this.addControls(c); }, 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(); 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")); var b = { filter: this.createFilter() }; this.layer.events.triggerEvent("loadstart", b); this.response = this.layer.protocol.read( OpenLayers.Util.applyDefaults({ filter: b.filter, 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.success()) { var b = a.features; if (b && 0 < b.length) { var c = this.layer.projection, d = this.layer.map.getProjectionObject(); if (!d.equals(c)) for (var e, f = 0, g = b.length; f < g; ++f) (e = b[f].geometry) && e.transform(c, d); this.layer.addFeatures(b); } } else this.bounds = null; this.response = null; this.layer.events.triggerEvent("loadend", { response: a }); }, 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) { a = this.adjustBounds(a); var 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) { a = OpenLayers.Util.applyDefaults(a, OpenLayers.Protocol.CSW.DEFAULTS); var 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) { if (!("layer" in b)) throw Error("Missing property 'layer' in configuration."); for (var c = a.contents, d, e = 0, f = c.layers.length; e < f; ++e) if (c.layers[e].identifier === b.layer) { d = c.layers[e]; break; } if (!d) throw Error("Layer not found"); var g = b.format; !g && d.formats && d.formats.length && (g = d.formats[0]); var h; b.matrixSet ? (h = c.tileMatrixSets[b.matrixSet]) : 1 <= d.tileMatrixSetLinks.length && (h = c.tileMatrixSets[d.tileMatrixSetLinks[0].tileMatrixSet]); if (!h) throw Error("matrixSet not found"); for (var k, e = 0, f = d.styles.length; e < f && ((k = d.styles[e]), !k.isDefault); ++e); c = b.requestEncoding; if (!c && ((c = "KVP"), a.operationsMetadata.GetTile.dcp.http)) { var l = a.operationsMetadata.GetTile.dcp.http; l.get[0].constraints && ((l = l.get[0].constraints.GetEncoding.allowedValues), l.KVP || (!l.REST && !l.RESTful) || (c = "REST")); } var l = [], m = b.params || {}; delete b.params; for (var n = 0, p = d.dimensions.length; n < p; n++) { var q = d.dimensions[n]; l.push(q.identifier); m.hasOwnProperty(q.identifier) || (m[q.identifier] = q["default"]); } var n = b.projection || h.supportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/, "$1:$3"), p = b.units || ("EPSG:4326" === n ? "degrees" : "m"), q = [], r; for (r in h.matrixIds) h.matrixIds.hasOwnProperty(r) && q.push( (2.8e-4 * h.matrixIds[r].scaleDenominator) / OpenLayers.METERS_PER_INCH / OpenLayers.INCHES_PER_UNIT[p] ); if ("REST" === c && d.resourceUrls) { r = []; for (var f = 0, s = d.resourceUrls.length; f < s; ++f) (e = d.resourceUrls[f]), e.format === g && "tile" === e.resourceType && r.push(e.template); } else { s = a.operationsMetadata.GetTile.dcp.http.get; r = []; for (var t, e = 0, f = s.length; e < f; e++) (t = s[e].constraints), (!t || (t && t.GetEncoding.allowedValues[c])) && r.push(s[e].url); } return new OpenLayers.Layer.WMTS( OpenLayers.Util.applyDefaults(b, { url: r, requestEncoding: c, name: d.title, style: k.identifier, format: g, matrixIds: h.matrixIds, matrixSet: h.identifier, projection: n, units: p, resolutions: !1 === b.isBaseLayer ? void 0 : q, serverResolutions: q, tileFullExtent: h.bounds, dimensions: l, params: m, }) ); }, 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) : ((a = this.map.getCenter()), (b = document.createElement("div")), (b.className = "olForeignContainer"), (b.style.width = "100%"), (b.style.height = "100%"), (a = new google.maps.Map(b, { center: a ? new google.maps.LatLng(a.lat, a.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 = document.createElement("div")), (b.style.width = "100%"), (b.style.height = "100%"), a.controls[google.maps.ControlPosition.TOP_LEFT].push(b), (b = { googleControl: b, mapObject: a, count: 1 }), (OpenLayers.Layer.Google.cache[this.map.id] = b)); this.mapObject = a; this.setGMapVisibility(this.visibility); }, onMapResize: function () { this.visibility && google.maps.event.trigger(this.mapObject, "resize"); }, setGMapVisibility: function (a) { var b = OpenLayers.Layer.Google.cache[this.map.id], c = this.map; if (b) { for (var d = this.type, e = c.layers, f, g = e.length - 1; 0 <= g; --g) if ( ((f = e[g]), f instanceof OpenLayers.Layer.Google && !0 === f.visibility && !0 === f.inRange) ) { d = f.type; a = !0; break; } e = this.mapObject.getDiv(); if (!0 === a) { if (e.parentNode !== c.div) if (b.rendered) c.div.appendChild(e), b.googleControl.appendChild(c.viewPortDiv), google.maps.event.trigger(this.mapObject, "resize"); else { var h = this; google.maps.event.addListenerOnce(this.mapObject, "tilesloaded", function () { b.rendered = !0; h.setGMapVisibility(h.getVisibility()); h.moveTo(h.map.getCenter()); }); } this.mapObject.setMapTypeId(d); } else b.googleControl.hasChildNodes() && (c.div.appendChild(c.viewPortDiv), c.div.removeChild(e)); } }, 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); var 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); }, }; 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); }, LiteralOutput: function (a, b) { b.literalOutput = {}; this.readChildNodes(a, b.literalOutput); }, 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.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) for (a = 0, 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) { a = OpenLayers.String.trim(a).split(","); for (var 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) { var b; a = OpenLayers.String.trim(a).split(this.regExes.parenComma); for (var 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) { a = a.replace(/,\s*([A-Za-z])/g, "|$1"); a = OpenLayers.String.trim(a).split("|"); for (var 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.WPSProcess = OpenLayers.Class({ client: null, server: null, identifier: null, description: null, localWPS: "http://geoserver/wps", formats: null, chained: 0, executeCallbacks: null, initialize: function (a) { OpenLayers.Util.extend(this, a); this.executeCallbacks = []; this.formats = { "application/wkt": new OpenLayers.Format.WKT(), "application/json": new OpenLayers.Format.GeoJSON(), }; }, describe: function (a) { a = a || {}; if (!this.description) this.client.describeProcess( this.server, this.identifier, function (b) { this.description || this.parseDescription(b); a.callback && a.callback.call(a.scope, this.description); }, this ); else if (a.callback) { var b = this.description; window.setTimeout(function () { a.callback.call(a.scope, b); }, 0); } }, configure: function (a) { this.describe({ callback: function () { var b = this.description, c = a.inputs, d, e, f; e = 0; for (f = b.dataInputs.length; e < f; ++e) (d = b.dataInputs[e]), this.setInputData(d, c[d.identifier]); a.callback && a.callback.call(a.scope); }, scope: this, }); return this; }, execute: function (a) { this.configure({ inputs: a.inputs, callback: function () { var b = this, c = this.getOutputIndex(b.description.processOutputs, a.output); b.setResponseForm({ outputIndex: c }); (function e() { OpenLayers.Util.removeItem(b.executeCallbacks, e); 0 !== b.chained ? b.executeCallbacks.push(e) : OpenLayers.Request.POST({ url: b.client.servers[b.server].url, data: new OpenLayers.Format.WPSExecute().write(b.description), success: function (e) { var g = b.findMimeType( b.description.processOutputs[c].complexOutput.supported.formats ); e = b.formats[g].read(e.responseText); e instanceof OpenLayers.Feature.Vector && (e = [e]); a.success && ((g = {}), (g[a.output || "result"] = e), a.success.call(a.scope, g)); }, scope: b, }); })(); }, scope: this, }); }, output: function (a) { return new OpenLayers.WPSProcess.ChainLink({ process: this, output: a }); }, parseDescription: function (a) { a = this.client.servers[this.server]; this.description = new OpenLayers.Format.WPSDescribeProcess().read( a.processDescription[this.identifier] ).processDescriptions[this.identifier]; }, setInputData: function (a, b) { delete a.data; delete a.reference; if (b instanceof OpenLayers.WPSProcess.ChainLink) ++this.chained, (a.reference = { method: "POST", href: b.process.server === this.server ? this.localWPS : this.client.servers[b.process.server].url, }), b.process.describe({ callback: function () { --this.chained; this.chainProcess(a, b); }, scope: this, }); else { a.data = {}; var c = a.complexData; c ? ((c = this.findMimeType(c.supported.formats)), (a.data.complexData = { mimeType: c, value: this.formats[c].write(this.toFeatures(b)) })) : (a.data.literalData = { value: b }); } }, setResponseForm: function (a) { a = a || {}; var b = this.description.processOutputs[a.outputIndex || 0]; this.description.responseForm = { rawDataOutput: { identifier: b.identifier, mimeType: this.findMimeType(b.complexOutput.supported.formats, a.supportedFormats), }, }; }, getOutputIndex: function (a, b) { var c; if (b) for (var d = a.length - 1; 0 <= d; --d) { if (a[d].identifier === b) { c = d; break; } } else c = 0; return c; }, chainProcess: function (a, b) { var c = this.getOutputIndex(b.process.description.processOutputs, b.output); a.reference.mimeType = this.findMimeType( a.complexData.supported.formats, b.process.description.processOutputs[c].complexOutput.supported.formats ); var d = {}; d[a.reference.mimeType] = !0; b.process.setResponseForm({ outputIndex: c, supportedFormats: d }); for (a.reference.body = b.process.description; 0 < this.executeCallbacks.length; ) this.executeCallbacks[0](); }, toFeatures: function (a) { var b = OpenLayers.Util.isArray(a); b || (a = [a]); for (var c = Array(a.length), d, e = 0, f = a.length; e < f; ++e) (d = a[e]), (c[e] = d instanceof OpenLayers.Feature.Vector ? d : new OpenLayers.Feature.Vector(d)); return b ? c : c[0]; }, findMimeType: function (a, b) { b = b || this.formats; for (var c in a) if (c in b) return c; }, CLASS_NAME: "OpenLayers.WPSProcess", }); OpenLayers.WPSProcess.ChainLink = OpenLayers.Class({ process: null, output: null, initialize: function (a) { OpenLayers.Util.extend(this, a); }, CLASS_NAME: "OpenLayers.WPSProcess.ChainLink", }); OpenLayers.WPSClient = OpenLayers.Class({ servers: null, version: "1.0.0", lazy: !1, events: null, initialize: function (a) { OpenLayers.Util.extend(this, a); this.events = new OpenLayers.Events(this); this.servers = {}; for (var b in a.servers) this.servers[b] = "string" == typeof a.servers[b] ? { url: a.servers[b], version: this.version, processDescription: {} } : a.servers[b]; }, execute: function (a) { this.getProcess(a.server, a.process).execute({ inputs: a.inputs, success: a.success, scope: a.scope, }); }, getProcess: function (a, b) { var c = new OpenLayers.WPSProcess({ client: this, server: a, identifier: b }); this.lazy || c.describe(); return c; }, describeProcess: function (a, b, c, d) { var e = this.servers[a]; e.processDescription[b] ? window.setTimeout(function () { c.call(d, e.processDescription[b]); }, 0) : b in e.processDescription ? this.events.register("describeprocess", this, function g(a) { a.identifier === b && (this.events.unregister("describeprocess", this, g), c.call(d, a.raw)); }) : ((e.processDescription[b] = null), OpenLayers.Request.GET({ url: e.url, params: { SERVICE: "WPS", VERSION: e.version, REQUEST: "DescribeProcess", IDENTIFIER: b }, success: function (a) { e.processDescription[b] = a.responseText; this.events.triggerEvent("describeprocess", { identifier: b, raw: a.responseText }); }, scope: this, })); }, destroy: function () { this.events.destroy(); this.servers = this.events = null; }, CLASS_NAME: "OpenLayers.WPSClient", }); 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, }, }); (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", }); /* Apache 2 Contains portions of Rico 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.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) { a = a.split("\n"); for (var 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, k = !1, l = 0; l < e.length; l++ ) if (e[l]) if ("point" == b[l]) (k = e[l].split(",")), (f.y = parseFloat(k[0])), (f.x = parseFloat(k[1])), (k = !0); else if ("lat" == b[l]) (f.y = parseFloat(e[l])), (k = !0); else if ("lon" == b[l]) (f.x = parseFloat(e[l])), (k = !0); else if ("title" == b[l]) g.title = e[l]; else if ("image" == b[l] || ("icon" == b[l] && h)) h.externalGraphic = e[l]; else if ("iconSize" == b[l] && h) { var m = e[l].split(","); h.graphicWidth = parseFloat(m[0]); h.graphicHeight = parseFloat(m[1]); } else "iconOffset" == b[l] && h ? ((m = e[l].split(",")), (h.graphicXOffset = parseFloat(m[0])), (h.graphicYOffset = parseFloat(m[1]))) : "description" == b[l] ? (g.description = e[l]) : "overflow" == b[l] ? (g.overflow = e[l]) : (g[b[l]] = e[l]); k && (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 (a) { 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) { a = a.responseText; var b = {}; OpenLayers.Util.extend(b, this.formatOptions); this.map && !this.projection.equals(this.map.getProjectionObject()) && ((b.externalProjection = this.projection), (b.internalProjection = this.map.getProjectionObject())); a = new OpenLayers.Format.Text(b).read(a); for (var 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 = "

" + e.attributes.title + "

" + e.attributes.description + "

"); 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 ? null : this; 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) { (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(); if (this.irregular) { a = b.x - this.origin.x; var b = b.y - this.origin.y, c; c = 0 == b ? a / (this.radius * Math.sqrt(2)) : a / b; this.feature.geometry.resize(1, this.origin, c); 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 (a) { 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, b) { 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, 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 k = this.selectionSymbolizer, l = c[f]; 0 <= l.type.indexOf("Polygon") ? (k = { Polygon: this.selectionSymbolizer.Polygon }) : 0 <= l.type.indexOf("LineString") ? (k = { Line: this.selectionSymbolizer.Line }) : 0 <= l.type.indexOf("Point") && (k = { Point: this.selectionSymbolizer.Point }); d.namedLayers[h].userStyles.push({ name: "default", rules: [ new OpenLayers.Rule({ symbolizer: k, 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; (c && c.documentElement) || (c = a.responseText); a = b.read(c); for (var 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; (c && c.documentElement) || (c = a.responseText); a = b.read(c); this.control.wfsCache[this.layer.id] = a; this.control._queue && this.control.applySelection(); }, scope: this, }); }, getGeometryAttributes: function (a) { var b = []; a = this.wfsCache[a.id]; for (var 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], k = h.type; (0 <= k.indexOf("LineString") || 0 <= k.indexOf("GeometryAssociationType") || 0 <= k.indexOf("GeometryPropertyType") || 0 <= k.indexOf("Point") || 0 <= k.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 k = e[g]; if (null !== k) { if (!(a instanceof OpenLayers.Geometry)) { var l = this.map.getLonLatFromPixel(a.xy); a = new OpenLayers.Geometry.Point(l.lon, l.lat); } k = this.createFilter(k, a); null !== k && f.push(k); } } g = this.createSelectionLayer(d); this.events.triggerEvent("selected", { layer: d, filters: f }); d = this.createSLD(d, f, e); g.mergeNewParams({ SLD_BODY: d }); 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 || 1e-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.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; }, CLASS_NAME: "OpenLayers.Layer.MapGuide", }); OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, { 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.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); OpenLayers.Popup.prototype.moveTo.call(this, this.calculateNewPx(a)); this.relativePosition != b && this.updateRelativePosition(); }, setSize: function (a) { OpenLayers.Popup.prototype.setSize.apply(this, arguments); if (this.lonlat && this.map) { var b = this.map.getLayerPxFromLonLat(this.lonlat); this.moveTo(b); } }, calculateRelativePosition: function (a) { a = this.map.getLonLatFromLayerPx(a); a = this.map.getExtent().determineQuadrant(a); return OpenLayers.Bounds.oppositeQuadrant(a); }, updateRelativePosition: function () {}, calculateNewPx: function (a) { a = a.offset(this.anchor.offset); var 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", }); 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 (a) { 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 (a) {}, setBorder: function () {}, setOpacity: function (a) {}, 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, k = isNaN(c.size.w) ? this.size.w - (g + e) : c.size.w, l = isNaN(c.size.h) ? this.size.h - (f + h) : c.size.h; d.div.style.width = (0 > k ? 0 : k) + "px"; d.div.style.height = (0 > l ? 0 : l) + "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, blankImageUrl: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAQAIBRAA7", 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.frame.removeChild(this.frame.firstChild); } 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('