From 3faf333cdee52302ba49dcbcc9f0995f4f30f363 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 7 Apr 2008 23:05:52 +0000 Subject: [PATCH 01/93] Create a directory for branches of the main web site, and make a branch for working on the export tab. From 453149e4283a6ef006ae432b2b3e3951ec38ccae Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 7 Apr 2008 23:09:56 +0000 Subject: [PATCH 02/93] Make a copy of the rails code for the node tag splitting project, and remove the associated migrations from the other branches. --- db/migrate/012_create_node_tags.rb | 18 -------------- db/migrate/013_create_old_node_tags.rb | 17 ------------- .../014_populate_node_tags_and_remove.rb | 13 ---------- db/migrate/015_create_temp_old_nodes.rb | 24 ------------------- 4 files changed, 72 deletions(-) delete mode 100644 db/migrate/012_create_node_tags.rb delete mode 100644 db/migrate/013_create_old_node_tags.rb delete mode 100644 db/migrate/014_populate_node_tags_and_remove.rb delete mode 100644 db/migrate/015_create_temp_old_nodes.rb diff --git a/db/migrate/012_create_node_tags.rb b/db/migrate/012_create_node_tags.rb deleted file mode 100644 index 316602d69..000000000 --- a/db/migrate/012_create_node_tags.rb +++ /dev/null @@ -1,18 +0,0 @@ -class CreateNodeTags < ActiveRecord::Migration - def self.up - create_table "current_node_tags", myisam_table do |t| - t.column "id", :bigint, :limit => 64, :null => false - t.column "sequence_id", :bigint, :limit => 11, :null => false - t.column "k", :string, :default => "", :null => false - t.column "v", :string, :default => "", :null => false - end - - add_primary_key "current_node_tags", ["id", "sequence_id"] - - execute "CREATE FULLTEXT INDEX `current_node_tags_v_idx` ON `current_node_tags` (`v`)" - end - - def self.down - drop_table :current_node_tags - end -end diff --git a/db/migrate/013_create_old_node_tags.rb b/db/migrate/013_create_old_node_tags.rb deleted file mode 100644 index aeb5abd4c..000000000 --- a/db/migrate/013_create_old_node_tags.rb +++ /dev/null @@ -1,17 +0,0 @@ -class CreateOldNodeTags < ActiveRecord::Migration - def self.up - create_table "node_tags", myisam_table do |t| - t.column "id", :bigint, :limit => 64, :default => 0, :null => false - t.column "version", :bigint, :limit => 20, :null => false - t.column "sequence_id", :bigint, :limit => 11, :null => false - t.column "k", :string, :null => false - t.column "v", :string, :null => false - end - - add_primary_key "node_tags", ["id", "version", "sequence_id"] - end - - def self.down - drop_table :node_tags - end -end diff --git a/db/migrate/014_populate_node_tags_and_remove.rb b/db/migrate/014_populate_node_tags_and_remove.rb deleted file mode 100644 index 7583c6618..000000000 --- a/db/migrate/014_populate_node_tags_and_remove.rb +++ /dev/null @@ -1,13 +0,0 @@ -class PopulateNodeTagsAndRemove < ActiveRecord::Migration - def self.up - #rake import - #commented out to stop people from breaking their db -# remove_column :nodes, :tags -# remove_column :current_nodes, :tags - end - - def self.down -# add_column :nodes, "tags", :text, :default => "", :null => false -# add_column :current_nodes, "tags", :text, :default => "", :null => false - end -end diff --git a/db/migrate/015_create_temp_old_nodes.rb b/db/migrate/015_create_temp_old_nodes.rb deleted file mode 100644 index 60edb8406..000000000 --- a/db/migrate/015_create_temp_old_nodes.rb +++ /dev/null @@ -1,24 +0,0 @@ -class CreateTempOldNodes < ActiveRecord::Migration - def self.up - create_table "temp_nodes", myisam_table do |t| - t.column "id", :bigint, :limit => 64, :null => false - t.column "version", :bigint, :limit => 20, :null => false - t.column "latitude", :double, :null => false - t.column "longitude", :double, :null => false - t.column "user_id", :bigint, :limit => 20, :null => false - t.column "visible", :boolean, :null => false - t.column "timestamp", :datetime, :null => false - t.column "tile", :integer, :null => false - end - - add_primary_key "temp_nodes", ["id", "version"] - add_index "temp_nodes", ["timestamp"], :name => "temp_nodes_timestamp_idx" - add_index "temp_nodes", ["tile"], :name => "temp_nodes_tile_idx" - - change_column "temp_nodes", "version", :bigint, :limit => 20, :null => false, :options => "AUTO_INCREMENT" - end - - def self.down - drop_table :temp_nodes - end -end From b95e10ac8fc8a92042fcc14ef8fb8cc0e7afa8d0 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 7 Apr 2008 23:09:56 +0000 Subject: [PATCH 03/93] Make a copy of the rails code for the node tag splitting project, and remove the associated migrations from the other branches. --- db/migrate/012_create_node_tags.rb | 18 -------------- db/migrate/013_create_old_node_tags.rb | 17 ------------- .../014_populate_node_tags_and_remove.rb | 13 ---------- db/migrate/015_create_temp_old_nodes.rb | 24 ------------------- 4 files changed, 72 deletions(-) delete mode 100644 db/migrate/012_create_node_tags.rb delete mode 100644 db/migrate/013_create_old_node_tags.rb delete mode 100644 db/migrate/014_populate_node_tags_and_remove.rb delete mode 100644 db/migrate/015_create_temp_old_nodes.rb diff --git a/db/migrate/012_create_node_tags.rb b/db/migrate/012_create_node_tags.rb deleted file mode 100644 index 316602d69..000000000 --- a/db/migrate/012_create_node_tags.rb +++ /dev/null @@ -1,18 +0,0 @@ -class CreateNodeTags < ActiveRecord::Migration - def self.up - create_table "current_node_tags", myisam_table do |t| - t.column "id", :bigint, :limit => 64, :null => false - t.column "sequence_id", :bigint, :limit => 11, :null => false - t.column "k", :string, :default => "", :null => false - t.column "v", :string, :default => "", :null => false - end - - add_primary_key "current_node_tags", ["id", "sequence_id"] - - execute "CREATE FULLTEXT INDEX `current_node_tags_v_idx` ON `current_node_tags` (`v`)" - end - - def self.down - drop_table :current_node_tags - end -end diff --git a/db/migrate/013_create_old_node_tags.rb b/db/migrate/013_create_old_node_tags.rb deleted file mode 100644 index aeb5abd4c..000000000 --- a/db/migrate/013_create_old_node_tags.rb +++ /dev/null @@ -1,17 +0,0 @@ -class CreateOldNodeTags < ActiveRecord::Migration - def self.up - create_table "node_tags", myisam_table do |t| - t.column "id", :bigint, :limit => 64, :default => 0, :null => false - t.column "version", :bigint, :limit => 20, :null => false - t.column "sequence_id", :bigint, :limit => 11, :null => false - t.column "k", :string, :null => false - t.column "v", :string, :null => false - end - - add_primary_key "node_tags", ["id", "version", "sequence_id"] - end - - def self.down - drop_table :node_tags - end -end diff --git a/db/migrate/014_populate_node_tags_and_remove.rb b/db/migrate/014_populate_node_tags_and_remove.rb deleted file mode 100644 index 7583c6618..000000000 --- a/db/migrate/014_populate_node_tags_and_remove.rb +++ /dev/null @@ -1,13 +0,0 @@ -class PopulateNodeTagsAndRemove < ActiveRecord::Migration - def self.up - #rake import - #commented out to stop people from breaking their db -# remove_column :nodes, :tags -# remove_column :current_nodes, :tags - end - - def self.down -# add_column :nodes, "tags", :text, :default => "", :null => false -# add_column :current_nodes, "tags", :text, :default => "", :null => false - end -end diff --git a/db/migrate/015_create_temp_old_nodes.rb b/db/migrate/015_create_temp_old_nodes.rb deleted file mode 100644 index 60edb8406..000000000 --- a/db/migrate/015_create_temp_old_nodes.rb +++ /dev/null @@ -1,24 +0,0 @@ -class CreateTempOldNodes < ActiveRecord::Migration - def self.up - create_table "temp_nodes", myisam_table do |t| - t.column "id", :bigint, :limit => 64, :null => false - t.column "version", :bigint, :limit => 20, :null => false - t.column "latitude", :double, :null => false - t.column "longitude", :double, :null => false - t.column "user_id", :bigint, :limit => 20, :null => false - t.column "visible", :boolean, :null => false - t.column "timestamp", :datetime, :null => false - t.column "tile", :integer, :null => false - end - - add_primary_key "temp_nodes", ["id", "version"] - add_index "temp_nodes", ["timestamp"], :name => "temp_nodes_timestamp_idx" - add_index "temp_nodes", ["tile"], :name => "temp_nodes_tile_idx" - - change_column "temp_nodes", "version", :bigint, :limit => 20, :null => false, :options => "AUTO_INCREMENT" - end - - def self.down - drop_table :temp_nodes - end -end From f8adbf080a672372dd8404481e5f8f8b9550b454 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 7 Apr 2008 23:11:25 +0000 Subject: [PATCH 04/93] Remove export controller from branches where it isn't needed yet. --- app/controllers/export_controller.rb | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 app/controllers/export_controller.rb diff --git a/app/controllers/export_controller.rb b/app/controllers/export_controller.rb deleted file mode 100644 index f1c6286ce..000000000 --- a/app/controllers/export_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class ExportController < ApplicationController - def start - render :update do |page| - page.replace_html :sidebar_content, :partial => 'start' - page.call "openSidebar" - end - end -end From 1df50231faed168460a305be281355fd7e2a05c1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 7 Apr 2008 23:23:15 +0000 Subject: [PATCH 05/93] Commit initial work on export tab. --- app/controllers/export_controller.rb | 1 + app/views/export/_start.rhtml | 103 +++++++++++++++++ app/views/layouts/site.rhtml | 4 +- app/views/site/export.rhtml | 162 +++++++++++++++++++++++++++ config/routes.rb | 4 + public/javascripts/map.js | 11 +- public/stylesheets/site.css | 28 +++++ 7 files changed, 307 insertions(+), 6 deletions(-) create mode 100644 app/views/export/_start.rhtml create mode 100644 app/views/site/export.rhtml diff --git a/app/controllers/export_controller.rb b/app/controllers/export_controller.rb index f1c6286ce..9b8d878f2 100644 --- a/app/controllers/export_controller.rb +++ b/app/controllers/export_controller.rb @@ -1,6 +1,7 @@ class ExportController < ApplicationController def start render :update do |page| + page.replace_html :sidebar_title, 'Export' page.replace_html :sidebar_content, :partial => 'start' page.call "openSidebar" end diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml new file mode 100644 index 000000000..41fd790f2 --- /dev/null +++ b/app/views/export/_start.rhtml @@ -0,0 +1,103 @@ +<% form_tag :action => 'next' do %> + +

Area to Export

+ +
+ <%= text_field('export', 'maxlat', { :size => 10, :class => "export_bound" }) %> +
+ <%= text_field('export', 'minlon', { :size => 10, :class => "export_bound" }) %> + <%= text_field('export', 'maxlon', { :size => 10, :class => "export_bound" }) %> +
+ <%= text_field('export', 'minlat', { :size => 10, :class => "export_bound" }) %> +
+ +

Format to Export

+ +
+ <%= radio_button('export', 'format', 'osm' ) %>OpenStreetMap XML Data +
+ <%= radio_button('export', 'format', 'png' ) %>PNG Image +
+ <%= radio_button('export', 'format', 'pdf' ) %>PDF Document +
+ <%= radio_button('export', 'format', 'svg' ) %>SVG Document +
+ +
+

Licence

+ +
+

OSM license agreement blah blah blah...

+
+ +
+

Options

+ +
+

Scale 1 : <%= text_field('export', 'mapnik_scale', { :size => 10 }) %>

+
+
+ +<% end %> + + diff --git a/app/views/layouts/site.rhtml b/app/views/layouts/site.rhtml index bcb479cca..e0fd0e391 100644 --- a/app/views/layouts/site.rhtml +++ b/app/views/layouts/site.rhtml @@ -36,14 +36,16 @@ <% viewclass = '' editclass = '' + exportclass = '' traceclass = '' viewclass = 'active' if params['controller'] == 'site' and params['action'] == 'index' editclass = 'active' if params['controller'] == 'site' and params['action'] == 'edit' - editclass = 'active' if params['controller'] == 'campaign' + exportclass = 'active' if params['controller'] == 'site' and params['action'] == 'export' traceclass = 'active' if params['controller'] == 'trace' %>
  • <%= link_to 'View', {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => 'view maps', :class => viewclass } %>
  • <%= link_to 'Edit', {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => 'edit maps', :class => editclass } %>
  • +
  • <%= link_to 'Export', {:controller => 'site', :action => 'export'}, {:id => 'exportanchor', :title => 'export map data', :class => exportclass } %>
  • <%= link_to 'GPS traces', {:controller => 'trace', :action => 'list'}, {:id => 'traceanchor', :title => 'manage traces', :class => traceclass } %>
  • diff --git a/app/views/site/export.rhtml b/app/views/site/export.rhtml new file mode 100644 index 000000000..1140a2583 --- /dev/null +++ b/app/views/site/export.rhtml @@ -0,0 +1,162 @@ +<% content_for :greeting do %> +<% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> +<%= link_to_function 'home', "setPosition(#{@user.home_lat}, #{@user.home_lon}, 10)" %> | +<% end %> +<% end %> + +<%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> + +
    +
    + +<% if params['mlon'] and params['mlat'] %> +<% marker = true %> +<% mlon = h(params['mlon']) %> +<% mlat = h(params['mlat']) %> +<% end %> + +<% if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat'] %> +<% bbox = true %> +<% minlon = h(params['minlon']) %> +<% minlat = h(params['minlat']) %> +<% maxlon = h(params['maxlon']) %> +<% maxlat = h(params['maxlat']) %> +<% end %> + +<% if params['lon'] and params['lat'] %> +<% lon = h(params['lon']) %> +<% lat = h(params['lat']) %> +<% zoom = h(params['zoom'] || '5') %> +<% layers = h(params['layers']) %> +<% elsif params['mlon'] and params['mlat'] %> +<% lon = h(params['mlon']) %> +<% lat = h(params['mlat']) %> +<% zoom = h(params['zoom'] || '12') %> +<% layers = h(params['layers']) %> +<% elsif cookies.key?("location") %> +<% lon,lat,zoom,layers = cookies["location"].split(",") %> +<% elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> +<% lon = @user.home_lon %> +<% lat = @user.home_lat %> +<% zoom = '10' %> +<% else %> +<% session[:location] = OSM::IPLocation(request.env['REMOTE_ADDR']) unless session[:location] %> +<% if session[:location] %> +<% bbox = true %> +<% minlon = session[:location][:minlon] %> +<% minlat = session[:location][:minlat] %> +<% maxlon = session[:location][:maxlon] %> +<% maxlat = session[:location][:maxlat] %> +<% else %> +<% lon = '-0.1' %> +<% lat = '51.5' %> +<% zoom = h(params['zoom'] || '5') %> +<% layers = h(params['layers']) %> +<% end %> +<% end %> + +<%= javascript_include_tag '/openlayers/OpenLayers.js' %> +<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'map.js' %> + + + diff --git a/config/routes.rb b/config/routes.rb index 1d3a13565..b44139c4a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -64,6 +64,7 @@ ActionController::Routing::Routes.draw do |map| map.connect '/user/upload_image', :controller => 'user', :action => 'upload_image' map.connect '/index.html', :controller => 'site', :action => 'index' map.connect '/edit.html', :controller => 'site', :action => 'edit' + map.connect '/export.html', :controller => 'site', :action => 'export' map.connect '/search.html', :controller => 'way_tag', :action => 'search' map.connect '/login.html', :controller => 'user', :action => 'login' map.connect '/logout.html', :controller => 'user', :action => 'logout' @@ -121,6 +122,9 @@ ActionController::Routing::Routes.draw do |map| map.connect '/geocoder/search', :controller => 'geocoder', :action => 'search' map.connect '/geocoder/description', :controller => 'geocoder', :action => 'description' + # export + map.connect '/export/start', :controller => 'export', :action => 'start' + # messages map.connect '/user/:display_name/inbox', :controller => 'message', :action => 'inbox' diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 369df8987..07c6b32d1 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -8,6 +8,10 @@ OpenLayers._getScriptLocation = function () { function createMap(divName) { map = new OpenLayers.Map(divName, { + maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508), + maxResolution: 156543, + units: "m", + projection: "EPSG:900913", controls: [ new OpenLayers.Control.ArgParser(), new OpenLayers.Control.Attribution(), @@ -28,11 +32,8 @@ function createMap(divName) { var numZoomLevels = Math.max(mapnik.numZoomLevels, osmarender.numZoomLevels); markers = new OpenLayers.Layer.Markers("Markers", { - displayInLayerSwitcher: false, numZoomLevels: numZoomLevels, - maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508), - maxResolution: 156543, - units: "m", - projection: "EPSG:41001" + displayInLayerSwitcher: false, + numZoomLevels: numZoomLevels }); map.addLayer(markers); diff --git a/public/stylesheets/site.css b/public/stylesheets/site.css index f2306e7b4..bb8bbe999 100644 --- a/public/stylesheets/site.css +++ b/public/stylesheets/site.css @@ -580,3 +580,31 @@ input { #attribution { display: none; } + +.export_heading { + margin: 0px; + padding: 3px 6px 3px 6px; + border: 1px solid #ccc; + background: #ddd; +} + +.export_bounds { + width: 100%; + text-align: center; +} + +.export_bound { + margin: 5px; +} + +.export_details { + padding: 2px 6px 2px 6px; +} + +#export_osm { + display: none; +} + +#export_mapnik { + display: none; +} From d4efb3849b3e4c1e147254cb8bd621c606d70e36 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 8 Apr 2008 17:09:15 +0000 Subject: [PATCH 06/93] Switch export branch to use OpenLayers 2.6-rc1 as we need irregular polygons. --- public/openlayers/OpenLayers.js | 1433 ++++++++++------- .../openlayers/img/cloud-popup-relative.png | Bin 0 -> 2564 bytes .../openlayers/theme/default/framedCloud.css | 5 + public/openlayers/theme/default/img/blank.gif | Bin 0 -> 42 bytes .../{ => theme/default}/img/close.gif | Bin .../theme/default/img/editing_tool_bar.png | Bin 0 -> 3901 bytes .../default/img/overview_replacement.gif | Bin 0 -> 79 bytes .../theme/default/img/view_next_off.png | Bin 0 -> 1644 bytes .../theme/default/img/view_next_on.png | Bin 0 -> 1686 bytes .../theme/default/img/view_previous_off.png | Bin 0 -> 1553 bytes .../theme/default/img/view_previous_on.png | Bin 0 -> 1592 bytes public/openlayers/theme/default/style.css | 107 +- 12 files changed, 987 insertions(+), 558 deletions(-) create mode 100644 public/openlayers/img/cloud-popup-relative.png create mode 100644 public/openlayers/theme/default/framedCloud.css create mode 100644 public/openlayers/theme/default/img/blank.gif rename public/openlayers/{ => theme/default}/img/close.gif (100%) create mode 100644 public/openlayers/theme/default/img/editing_tool_bar.png create mode 100644 public/openlayers/theme/default/img/overview_replacement.gif create mode 100644 public/openlayers/theme/default/img/view_next_off.png create mode 100644 public/openlayers/theme/default/img/view_next_on.png create mode 100644 public/openlayers/theme/default/img/view_previous_off.png create mode 100644 public/openlayers/theme/default/img/view_previous_on.png diff --git a/public/openlayers/OpenLayers.js b/public/openlayers/OpenLayers.js index 886a6fe41..66d513f20 100644 --- a/public/openlayers/OpenLayers.js +++ b/public/openlayers/OpenLayers.js @@ -2,8 +2,8 @@ OpenLayers.js -- OpenLayers Map Viewer Library - Copyright 2005-2007 MetaCarta, Inc., released under the BSD license. - Please see http://svn.openlayers.org/trunk/openlayers/release-license.txt + Copyright 2005-2008 MetaCarta, Inc., released under the Clear BSD license. + Please see http://svn.openlayers.org/trunk/openlayers/license.txt for the full text of the license. Includes compressed code under the following licenses: @@ -21,7 +21,7 @@ * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * -/*--------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------*/ /** * @@ -43,88 +43,90 @@ * **/ -OpenLayers={singleFile:true};(function(){var singleFile=(typeof OpenLayers=="object"&&OpenLayers.singleFile);OpenLayers={_scriptName:(!singleFile)?"lib/OpenLayers.js":"OpenLayers.js",_getScriptLocation:function(){var scriptLocation="";var scriptName=OpenLayers._scriptName;var scripts=document.getElementsByTagName('script');for(var i=0;i-1)&&(index+scriptName.length==src.length)){scriptLocation=src.slice(0,-scriptName.length);break;}}} -return scriptLocation;}};if(!singleFile){var jsfiles=new Array("OpenLayers/Util.js","OpenLayers/BaseTypes.js","OpenLayers/BaseTypes/Class.js","OpenLayers/BaseTypes/Bounds.js","OpenLayers/BaseTypes/Element.js","OpenLayers/BaseTypes/LonLat.js","OpenLayers/BaseTypes/Pixel.js","OpenLayers/BaseTypes/Size.js","OpenLayers/Console.js","Rico/Corner.js","Rico/Color.js","OpenLayers/Ajax.js","OpenLayers/Events.js","OpenLayers/Map.js","OpenLayers/Layer.js","OpenLayers/Icon.js","OpenLayers/Marker.js","OpenLayers/Marker/Box.js","OpenLayers/Popup.js","OpenLayers/Tile.js","OpenLayers/Tile/Image.js","OpenLayers/Tile/WFS.js","OpenLayers/Layer/Image.js","OpenLayers/Layer/SphericalMercator.js","OpenLayers/Layer/EventPane.js","OpenLayers/Layer/FixedZoomLevels.js","OpenLayers/Layer/Google.js","OpenLayers/Layer/VirtualEarth.js","OpenLayers/Layer/Yahoo.js","OpenLayers/Layer/HTTPRequest.js","OpenLayers/Layer/Grid.js","OpenLayers/Layer/MapServer.js","OpenLayers/Layer/MapServer/Untiled.js","OpenLayers/Layer/KaMap.js","OpenLayers/Layer/MultiMap.js","OpenLayers/Layer/Markers.js","OpenLayers/Layer/Text.js","OpenLayers/Layer/WorldWind.js","OpenLayers/Layer/WMS.js","OpenLayers/Layer/WMS/Untiled.js","OpenLayers/Layer/GeoRSS.js","OpenLayers/Layer/Boxes.js","OpenLayers/Layer/TMS.js","OpenLayers/Layer/TileCache.js","OpenLayers/Popup/Anchored.js","OpenLayers/Popup/AnchoredBubble.js","OpenLayers/Feature.js","OpenLayers/Feature/Vector.js","OpenLayers/Feature/WFS.js","OpenLayers/Handler.js","OpenLayers/Handler/Point.js","OpenLayers/Handler/Path.js","OpenLayers/Handler/Polygon.js","OpenLayers/Handler/Feature.js","OpenLayers/Handler/Drag.js","OpenLayers/Handler/RegularPolygon.js","OpenLayers/Handler/Box.js","OpenLayers/Handler/MouseWheel.js","OpenLayers/Handler/Keyboard.js","OpenLayers/Control.js","OpenLayers/Control/Attribution.js","OpenLayers/Control/ZoomBox.js","OpenLayers/Control/ZoomToMaxExtent.js","OpenLayers/Control/DragPan.js","OpenLayers/Control/Navigation.js","OpenLayers/Control/MouseDefaults.js","OpenLayers/Control/MousePosition.js","OpenLayers/Control/OverviewMap.js","OpenLayers/Control/KeyboardDefaults.js","OpenLayers/Control/PanZoom.js","OpenLayers/Control/PanZoomBar.js","OpenLayers/Control/ArgParser.js","OpenLayers/Control/Permalink.js","OpenLayers/Control/Scale.js","OpenLayers/Control/LayerSwitcher.js","OpenLayers/Control/DrawFeature.js","OpenLayers/Control/DragFeature.js","OpenLayers/Control/ModifyFeature.js","OpenLayers/Control/Panel.js","OpenLayers/Control/SelectFeature.js","OpenLayers/Geometry.js","OpenLayers/Geometry/Rectangle.js","OpenLayers/Geometry/Collection.js","OpenLayers/Geometry/Point.js","OpenLayers/Geometry/MultiPoint.js","OpenLayers/Geometry/Curve.js","OpenLayers/Geometry/LineString.js","OpenLayers/Geometry/LinearRing.js","OpenLayers/Geometry/Polygon.js","OpenLayers/Geometry/MultiLineString.js","OpenLayers/Geometry/MultiPolygon.js","OpenLayers/Geometry/Surface.js","OpenLayers/Renderer.js","OpenLayers/Renderer/Elements.js","OpenLayers/Renderer/SVG.js","OpenLayers/Renderer/VML.js","OpenLayers/Layer/Vector.js","OpenLayers/Layer/GML.js","OpenLayers/Format.js","OpenLayers/Format/XML.js","OpenLayers/Format/GML.js","OpenLayers/Format/KML.js","OpenLayers/Format/GeoRSS.js","OpenLayers/Format/WFS.js","OpenLayers/Format/WKT.js","OpenLayers/Format/JSON.js","OpenLayers/Format/GeoJSON.js","OpenLayers/Layer/WFS.js","OpenLayers/Control/MouseToolbar.js","OpenLayers/Control/NavToolbar.js","OpenLayers/Control/EditingToolbar.js");var allScriptTags="";var host=OpenLayers._getScriptLocation()+"lib/";for(var i=0;i";allScriptTags+=currentScriptTag;}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} -if(allScriptTags)document.write(allScriptTags);}})();OpenLayers.VERSION_NUMBER="$Revision: 4899 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s*(.*?)\s*$/,"$1");},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1;i0){fig=parseFloat(num.toPrecision(sig));}else{fig=0;} -return fig;}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(sig){OpenLayers.Console.warn("This method has been deprecated and will be removed in 3.0. "+"Please use OpenLayers.Number.limitSigDigs instead");return OpenLayers.Number.limitSigDigs(this,sig);};} -OpenLayers.Function={bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},bindAsEventListener:function(func,object){return function(event){return func.call(object,event||window.event);};}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn("This method has been deprecated and will be removed in 3.0. "+"Please use OpenLayers.Function.bind instead");Array.prototype.unshift.apply(arguments,[this]);return OpenLayers.Function.bind.apply(null,arguments);};} -if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(object){OpenLayers.Console.warn("This method has been deprecated and will be removed in 3.0. "+"Please use OpenLayers.Function.bindAsEventListener instead");return OpenLayers.Function.bindAsEventListener(this,object);};} -OpenLayers.Class=function(){var Class=function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}} -var extended={};var parent;for(var i=0;i-1)&&(index+scriptName.length==pathLength)){scriptLocation=src.slice(0,pathLength-scriptName.length);break;}}} +return scriptLocation;}};if(!singleFile){var jsfiles=new Array("OpenLayers/Util.js","OpenLayers/BaseTypes.js","OpenLayers/BaseTypes/Class.js","OpenLayers/BaseTypes/Bounds.js","OpenLayers/BaseTypes/Element.js","OpenLayers/BaseTypes/LonLat.js","OpenLayers/BaseTypes/Pixel.js","OpenLayers/BaseTypes/Size.js","OpenLayers/Console.js","OpenLayers/Tween.js","Rico/Corner.js","Rico/Color.js","OpenLayers/Ajax.js","OpenLayers/Events.js","OpenLayers/Projection.js","OpenLayers/Map.js","OpenLayers/Layer.js","OpenLayers/Icon.js","OpenLayers/Marker.js","OpenLayers/Marker/Box.js","OpenLayers/Popup.js","OpenLayers/Tile.js","OpenLayers/Tile/Image.js","OpenLayers/Tile/WFS.js","OpenLayers/Layer/Image.js","OpenLayers/Layer/SphericalMercator.js","OpenLayers/Layer/EventPane.js","OpenLayers/Layer/FixedZoomLevels.js","OpenLayers/Layer/Google.js","OpenLayers/Layer/VirtualEarth.js","OpenLayers/Layer/Yahoo.js","OpenLayers/Layer/HTTPRequest.js","OpenLayers/Layer/Grid.js","OpenLayers/Layer/MapGuide.js","OpenLayers/Layer/MapServer.js","OpenLayers/Layer/MapServer/Untiled.js","OpenLayers/Layer/KaMap.js","OpenLayers/Layer/MultiMap.js","OpenLayers/Layer/Markers.js","OpenLayers/Layer/Text.js","OpenLayers/Layer/WorldWind.js","OpenLayers/Layer/WMS.js","OpenLayers/Layer/WMS/Untiled.js","OpenLayers/Layer/GeoRSS.js","OpenLayers/Layer/Boxes.js","OpenLayers/Layer/TMS.js","OpenLayers/Layer/TileCache.js","OpenLayers/Popup/Anchored.js","OpenLayers/Popup/AnchoredBubble.js","OpenLayers/Popup/Framed.js","OpenLayers/Popup/FramedCloud.js","OpenLayers/Feature.js","OpenLayers/Feature/Vector.js","OpenLayers/Feature/WFS.js","OpenLayers/Handler.js","OpenLayers/Handler/Click.js","OpenLayers/Handler/Hover.js","OpenLayers/Handler/Point.js","OpenLayers/Handler/Path.js","OpenLayers/Handler/Polygon.js","OpenLayers/Handler/Feature.js","OpenLayers/Handler/Drag.js","OpenLayers/Handler/RegularPolygon.js","OpenLayers/Handler/Box.js","OpenLayers/Handler/MouseWheel.js","OpenLayers/Handler/Keyboard.js","OpenLayers/Control.js","OpenLayers/Control/Attribution.js","OpenLayers/Control/Button.js","OpenLayers/Control/ZoomBox.js","OpenLayers/Control/ZoomToMaxExtent.js","OpenLayers/Control/DragPan.js","OpenLayers/Control/Navigation.js","OpenLayers/Control/MouseDefaults.js","OpenLayers/Control/MousePosition.js","OpenLayers/Control/OverviewMap.js","OpenLayers/Control/KeyboardDefaults.js","OpenLayers/Control/PanZoom.js","OpenLayers/Control/PanZoomBar.js","OpenLayers/Control/ArgParser.js","OpenLayers/Control/Permalink.js","OpenLayers/Control/Scale.js","OpenLayers/Control/ScaleLine.js","OpenLayers/Control/LayerSwitcher.js","OpenLayers/Control/DrawFeature.js","OpenLayers/Control/DragFeature.js","OpenLayers/Control/ModifyFeature.js","OpenLayers/Control/Panel.js","OpenLayers/Control/SelectFeature.js","OpenLayers/Control/NavigationHistory.js","OpenLayers/Geometry.js","OpenLayers/Geometry/Rectangle.js","OpenLayers/Geometry/Collection.js","OpenLayers/Geometry/Point.js","OpenLayers/Geometry/MultiPoint.js","OpenLayers/Geometry/Curve.js","OpenLayers/Geometry/LineString.js","OpenLayers/Geometry/LinearRing.js","OpenLayers/Geometry/Polygon.js","OpenLayers/Geometry/MultiLineString.js","OpenLayers/Geometry/MultiPolygon.js","OpenLayers/Geometry/Surface.js","OpenLayers/Renderer.js","OpenLayers/Renderer/Elements.js","OpenLayers/Renderer/SVG.js","OpenLayers/Renderer/VML.js","OpenLayers/Layer/Vector.js","OpenLayers/Layer/PointTrack.js","OpenLayers/Layer/GML.js","OpenLayers/Style.js","OpenLayers/StyleMap.js","OpenLayers/Rule.js","OpenLayers/Rule/FeatureId.js","OpenLayers/Rule/Logical.js","OpenLayers/Rule/Comparison.js","OpenLayers/Format.js","OpenLayers/Format/XML.js","OpenLayers/Format/GML.js","OpenLayers/Format/KML.js","OpenLayers/Format/GeoRSS.js","OpenLayers/Format/WFS.js","OpenLayers/Format/WKT.js","OpenLayers/Format/OSM.js","OpenLayers/Format/SLD.js","OpenLayers/Format/SLD/v1.js","OpenLayers/Format/SLD/v1_0_0.js","OpenLayers/Format/Text.js","OpenLayers/Format/JSON.js","OpenLayers/Format/GeoJSON.js","OpenLayers/Format/WMC.js","OpenLayers/Format/WMC/v1.js","OpenLayers/Format/WMC/v1_0_0.js","OpenLayers/Format/WMC/v1_1_0.js","OpenLayers/Layer/WFS.js","OpenLayers/Control/MouseToolbar.js","OpenLayers/Control/NavToolbar.js","OpenLayers/Control/EditingToolbar.js","OpenLayers/Lang.js","OpenLayers/Lang/en.js");var agent=navigator.userAgent;var docWrite=(agent.match("MSIE")||agent.match("Safari"));if(docWrite){var allScriptTags=new Array(jsfiles.length);} +var host=OpenLayers._getScriptLocation()+"lib/";for(var i=0;i";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} +if(docWrite){document.write(allScriptTags.join(""));}}})();OpenLayers.VERSION_NUMBER="$Revision: 6718 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s*(.*?)\s*$/,"$1");},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1;i0){replacement=context[item.substring(0,last)];if(typeof replacement=="function"){replacement=args?replacement.apply(null,args):replacement();} +tokens[i]=replacement+item.substring(++last);}else{tokens[i]="${"+item;}} +return tokens.join("");}};if(!String.prototype.startsWith){String.prototype.startsWith=function(sStart){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.startsWith'}));return OpenLayers.String.startsWith(this,sStart);};} +if(!String.prototype.contains){String.prototype.contains=function(str){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.contains'}));return OpenLayers.String.contains(this,str);};} +if(!String.prototype.trim){String.prototype.trim=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.trim'}));return OpenLayers.String.trim(this);};} +if(!String.prototype.camelize){String.prototype.camelize=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.camelize'}));return OpenLayers.String.camelize(this);};} +OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(num,sig){var fig=0;if(sig>0){fig=parseFloat(num.toPrecision(sig));} +return fig;},format:function(num,dec,tsep,dsep){dec=(typeof dec!="undefined")?dec:0;tsep=(typeof tsep!="undefined")?tsep:OpenLayers.Number.thousandsSeparator;dsep=(typeof dsep!="undefined")?dsep:OpenLayers.Number.decimalSeparator;if(dec!=null){num=parseFloat(num.toFixed(dec));} +var parts=num.toString().split(".");if(parts.length==1&&dec==null){dec=0;} +var integer=parts[0];if(tsep){var thousands=/(-?[0-9]+)([0-9]{3})/;while(thousands.test(integer)){integer=integer.replace(thousands,"$1"+tsep+"$2");}} +var str;if(dec==0){str=integer;}else{var rem=parts.length>1?parts[1]:"0";if(dec!=null){rem=rem+new Array(dec-rem.length+1).join("0");} +str=integer+dsep+rem;} +return str;}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(sig){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.limitSigDigs'}));return OpenLayers.Number.limitSigDigs(this,sig);};} +OpenLayers.Function={bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},bindAsEventListener:function(func,object){return function(event){return func.call(object,event||window.event);};}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.bind'}));Array.prototype.unshift.apply(arguments,[this]);return OpenLayers.Function.bind.apply(null,arguments);};} +if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(object){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.bindAsEventListener'}));return OpenLayers.Function.bindAsEventListener(this,object);};} +OpenLayers.Array={filter:function(array,callback,caller){var selected=[];if(Array.prototype.filter){selected=array.filter(callback,caller);}else{var len=array.length;if(typeof callback!="function"){throw new TypeError();} +for(var i=0;i=0;i--){if(array[i]==item){array.splice(i,1);}} +return array;};OpenLayers.Util.clearArray=function(array){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'array = []'}));array.length=0;};OpenLayers.Util.indexOf=function(array,obj){for(var i=0;i=0.0&&parseFloat(opacity)<1.0){element.style.filter='alpha(opacity='+(opacity*100)+')';element.style.opacity=opacity;}else if(parseFloat(opacity)==1.0){element.style.filter='';element.style.opacity='';}};OpenLayers.Util.createDiv=function(id,px,sz,imgURL,position,border,overflow,opacity){var dom=document.createElement('div');if(imgURL){dom.style.backgroundImage='url('+imgURL+')';} if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");} if(!position){position="absolute";} OpenLayers.Util.modifyDOMElement(dom,id,px,sz,position,border,overflow,opacity);return dom;};OpenLayers.Util.createImage=function(id,px,sz,imgURL,position,border,opacity,delayDisplay){var image=document.createElement("img");if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");} if(!position){position="relative";} OpenLayers.Util.modifyDOMElement(image,id,px,sz,position,border,null,opacity);if(delayDisplay){image.style.display="none";OpenLayers.Event.observe(image,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,image));OpenLayers.Event.observe(image,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,image));} image.style.alt=id;image.galleryImg="no";if(imgURL){image.src=imgURL;} -return image;};OpenLayers.Util.setOpacity=function(element,opacity){OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);} -OpenLayers.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.backgroundColor=null;this.style.display="";}};OpenLayers.Util.onImageLoadErrorColor="pink";OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){this.src=this.src;}else{this.style.backgroundColor=OpenLayers.Util.onImageLoadErrorColor;} -this.style.display="";};OpenLayers.Util.alphaHack=function(){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=document.body.filters;}catch(e){} -return(filter&&(version>=5.5)&&(version<7));} -OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz);var img=div.childNodes[0];if(imgURL){img.src=imgURL;} -OpenLayers.Util.modifyDOMElement(img,div.id+"_innerImage",null,sz,"relative",border);if(opacity){div.style.opacity=opacity;div.style.filter='alpha(opacity='+(opacity*100)+')';} -if(OpenLayers.Util.alphaHack()){div.style.display="inline-block";if(sizing==null){sizing="scale";} -div.style.filter="progid:DXImageTransform.Microsoft"+".AlphaImageLoader(src='"+img.src+"', "+"sizingMethod='"+sizing+"')";if(div.style.opacity){div.style.filter+=" alpha(opacity="+div.style.opacity*100+")";} -img.style.filter="progid:DXImageTransform.Microsoft"+".Alpha(opacity=0)";}};OpenLayers.Util.createAlphaImageDiv=function(id,px,sz,imgURL,position,border,sizing,opacity,delayDisplay){var div=OpenLayers.Util.createDiv();var img=OpenLayers.Util.createImage(null,null,null,null,null,null,null,false);div.appendChild(img);if(delayDisplay){img.style.display="none";OpenLayers.Event.observe(img,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,div));OpenLayers.Event.observe(img,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,div));} +return image;};OpenLayers.Util.setOpacity=function(element,opacity){OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);};OpenLayers.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.backgroundColor=null;this.style.display="";}};OpenLayers.Util.onImageLoadErrorColor="pink";OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){this.src=this.src;}else{this.style.backgroundColor=OpenLayers.Util.onImageLoadErrorColor;} +this.style.display="";};OpenLayers.Util.alphaHack=function(){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=!!(document.body.filters);}catch(e){} +return(filter&&(version>=5.5)&&(version<7));};OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz,null,null,null,opacity);var img=div.childNodes[0];if(imgURL){img.src=imgURL;} +OpenLayers.Util.modifyDOMElement(img,div.id+"_innerImage",null,sz,"relative",border);if(OpenLayers.Util.alphaHack()){div.style.display="inline-block";if(sizing==null){sizing="scale";} +div.style.filter="progid:DXImageTransform.Microsoft"+".AlphaImageLoader(src='"+img.src+"', "+"sizingMethod='"+sizing+"')";if(parseFloat(div.style.opacity)>=0.0&&parseFloat(div.style.opacity)<1.0){div.style.filter+=" alpha(opacity="+div.style.opacity*100+")";} +img.style.filter="alpha(opacity=0)";}};OpenLayers.Util.createAlphaImageDiv=function(id,px,sz,imgURL,position,border,sizing,opacity,delayDisplay){var div=OpenLayers.Util.createDiv();var img=OpenLayers.Util.createImage(null,null,null,null,null,null,null,false);div.appendChild(img);if(delayDisplay){img.style.display="none";OpenLayers.Event.observe(img,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,div));OpenLayers.Event.observe(img,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,div));} OpenLayers.Util.modifyAlphaImageDiv(div,id,px,sz,imgURL,position,border,sizing,opacity);return div;};OpenLayers.Util.upperCaseObject=function(object){var uObject={};for(var key in object){uObject[key.toUpperCase()]=object[key];} -return uObject;};OpenLayers.Util.applyDefaults=function(to,from){for(var key in from){if(to[key]==null){to[key]=from[key];}}};OpenLayers.Util.getParameterString=function(params){paramsArray=[];for(var key in params){var value=params[key];if((value!=null)&&(typeof value!='function')){var encodedValue;if(typeof value=='object'&&value.constructor==Array){var encodedItemArray=[];for(var itemIndex=0;itemIndex0)) {if(!index){index=0;} if(result[index].childNodes.length>1){return result.childNodes[1].nodeValue;} -else if(result[index].childNodes.length==1){return result[index].firstChild.nodeValue;}}else{return"";}};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val) -val=node.textContent;if(!val) -val=node.firstChild.nodeValue;},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;} +else if(result[index].childNodes.length==1){return result[index].firstChild.nodeValue;}}else{return"";}};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val){val=node.textContent;} +if(!val){val=node.firstChild.nodeValue;}},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;} return(target!=div);};OpenLayers.Util.rad=function(x){return x*Math.PI/180;};OpenLayers.Util.distVincenty=function(p1,p2){var a=6378137,b=6356752.3142,f=1/298.257223563;var L=OpenLayers.Util.rad(p2.lon-p1.lon);var U1=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p1.lat)));var U2=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p2.lat)));var sinU1=Math.sin(U1),cosU1=Math.cos(U1);var sinU2=Math.sin(U2),cosU2=Math.cos(U2);var lambda=L,lambdaP=2*Math.PI;var iterLimit=20;while(Math.abs(lambda-lambdaP)>1e-12&&--iterLimit>0){var sinLambda=Math.sin(lambda),cosLambda=Math.cos(lambda);var sinSigma=Math.sqrt((cosU2*sinLambda)*(cosU2*sinLambda)+ -(cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0)return 0;var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));} -if(iterLimit==0)return NaN +(cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0){return 0;} +var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));} +if(iterLimit==0){return NaN;} var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- -B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.getParameters=function(url){url=url||window.location.href -if(url==null){url=window.location.href;} -var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} +B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.getParameters=function(url){url=url||window.location.href;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} var parameters={};var pairs=paramsString.split(/[&;]/);for(var i=0;i1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){if(units==null){units="degrees";} +return parameters;};OpenLayers.Util.getArgs=function(url){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Util.getParameters'}));return OpenLayers.Util.getParameters(url);};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(prefix){if(prefix==null){prefix="id_";} +OpenLayers.Util.lastSeqID+=1;return prefix+OpenLayers.Util.lastSeqID;};OpenLayers.INCHES_PER_UNIT={'inches':1.0,'ft':12.0,'mi':63360.0,'m':39.3701,'km':39370.1,'dd':4374754,'yd':36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT["degrees"]=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT["nmi"]=1852*OpenLayers.INCHES_PER_UNIT.m;OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(scale){var normScale=(scale>1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){if(units==null){units="degrees";} var normScale=OpenLayers.Util.normalizeScale(scale);var resolution=1/(normScale*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH);return resolution;};OpenLayers.Util.getScaleFromResolution=function(resolution,units){if(units==null){units="degrees";} var scale=resolution*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH;return scale;};OpenLayers.Util.safeStopPropagation=function(evt){OpenLayers.Event.stop(evt,true);};OpenLayers.Util.pagePosition=function(forElement){var valueT=0,valueL=0;var element=forElement;var child=forElement;while(element){if(element==document.body){if(child&&child.style&&OpenLayers.Element.getStyle(child,'position')=='absolute'){break;}} -valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;child=element;try{element=element.offsetParent;}catch(e){OpenLayers.Console.error("OpenLayers.Util.pagePosition failed: element with id "+ -element.id+" may be misplaced.");break;}} +valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;child=element;try{element=element.offsetParent;}catch(e){OpenLayers.Console.error(OpenLayers.i18n("pagePositionFailed",{'elemId':element.id}));break;}} element=forElement;while(element){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;element=element.parentNode;} -return[valueL,valueT];};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});urlObj1=OpenLayers.Util.createUrlObject(url1,options);urlObj2=OpenLayers.Util.createUrlObject(url2,options);for(var key in urlObj1){if(options.test){alert(key+"\n1:"+urlObj1[key]+"\n2:"+urlObj2[key]);} +return[valueL,valueT];};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var urlObj1=OpenLayers.Util.createUrlObject(url1,options);var urlObj2=OpenLayers.Util.createUrlObject(url2,options);for(var key in urlObj1){if(options.test){alert(key+"\n1:"+urlObj1[key]+"\n2:"+urlObj2[key]);} var val1=urlObj1[key];var val2=urlObj2[key];switch(key){case"args":break;case"host":case"port":case"protocol":if((val1=="")||(val2=="")){break;} default:if((key!="args")&&(urlObj1[key]!=urlObj2[key])){return false;} break;}} @@ -134,71 +136,57 @@ for(var key in urlObj2.args){return false;} return true;};OpenLayers.Util.createUrlObject=function(url,options){options=options||{};var urlObject={};if(options.ignoreCase){url=url.toLowerCase();} var a=document.createElement('a');a.href=url;urlObject.host=a.host;var port=a.port;if(port.length<=0){var newHostLength=urlObject.host.length-(port.length);urlObject.host=urlObject.host.substring(0,newHostLength);} urlObject.protocol=a.protocol;urlObject.port=((port=="80")&&(options.ignorePort80))?"":port;urlObject.hash=(options.ignoreHash)?"":a.hash;var queryString=a.search;if(!queryString){var qMark=url.indexOf("?");queryString=(qMark!=-1)?url.substr(qMark):"";} -urlObject.args=OpenLayers.Util.getParameters(queryString);if(((urlObject.protocol=="file:")&&(url.indexOf("file:")!=-1))||((urlObject.protocol!="file:")&&(urlObject.host!=""))){urlObject.pathname=a.pathname;var qIndex=urlObject.pathname.indexOf("?");if(qIndex!=-1){urlObject.pathname=urlObject.pathname.substring(0,qIndex);}}else{var relStr=OpenLayers.Util.removeTail(url);var backs=0;do{var index=relStr.indexOf("../");if(index==0){backs++ -relStr=relStr.substr(3);}else if(index>=0){var prevChunk=relStr.substr(0,index-1);var slash=prevChunk.indexOf("/");prevChunk=(slash!=-1)?prevChunk.substr(0,slash+1):"";var postChunk=relStr.substr(index+3);relStr=prevChunk+postChunk;}}while(index!=-1) +urlObject.args=OpenLayers.Util.getParameters(queryString);if(((urlObject.protocol=="file:")&&(url.indexOf("file:")!=-1))||((urlObject.protocol!="file:")&&(urlObject.host!=""))){urlObject.pathname=a.pathname;var qIndex=urlObject.pathname.indexOf("?");if(qIndex!=-1){urlObject.pathname=urlObject.pathname.substring(0,qIndex);}}else{var relStr=OpenLayers.Util.removeTail(url);var backs=0;do{var index=relStr.indexOf("../");if(index==0){backs++;relStr=relStr.substr(3);}else if(index>=0){var prevChunk=relStr.substr(0,index-1);var slash=prevChunk.indexOf("/");prevChunk=(slash!=-1)?prevChunk.substr(0,slash+1):"";var postChunk=relStr.substr(index+3);relStr=prevChunk+postChunk;}}while(index!=-1) var windowAnchor=document.createElement("a");var windowUrl=window.location.href;if(options.ignoreCase){windowUrl=windowUrl.toLowerCase();} windowAnchor.href=windowUrl;urlObject.protocol=windowAnchor.protocol;var splitter=(windowAnchor.pathname.indexOf("/")!=-1)?"/":"\\";var dirs=windowAnchor.pathname.split(splitter);dirs.pop();while((backs>0)&&(dirs.length>0)){dirs.pop();backs--;} relStr=dirs.join("/")+"/"+relStr;urlObject.pathname=relStr;} if((urlObject.protocol=="file:")||(urlObject.protocol=="")){urlObject.host="localhost";} return urlObject;};OpenLayers.Util.removeTail=function(url){var head=null;var qMark=url.indexOf("?");var hashMark=url.indexOf("#");if(qMark==-1){head=(hashMark!=-1)?url.substr(0,hashMark):url;}else{head=(hashMark!=-1)?url.substr(0,Math.min(qMark,hashMark)):url.substr(0,qMark);} return head;};OpenLayers.Util.getBrowserName=function(){var browserName="";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("opera")!=-1){browserName="opera";}else if(ua.indexOf("msie")!=-1){browserName="msie";}else if(ua.indexOf("safari")!=-1){browserName="safari";}else if(ua.indexOf("mozilla")!=-1){if(ua.indexOf("firefox")!=-1){browserName="firefox";}else{browserName="mozilla";}} -return browserName;};OpenLayers.Rico=new Object();OpenLayers.Rico.Corner={round:function(e,options){e=OpenLayers.Util.getElement(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement") -color=this._background(e);var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent") -bgColor=this._background(e.offsetParent);this._roundCornersImpl(e,color,bgColor);},changeColor:function(theDiv,newColor){theDiv.style.backgroundColor=newColor;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx"+el.innerHTML+""},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i=0;i--) -corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;} +return browserName;};OpenLayers.Util.getRenderedDimensions=function(contentHTML,size){var w=h=null;var container=document.createElement("div");container.style.overflow="";container.style.position="absolute";container.style.left="-9999px";if(size){if(size.w){w=container.style.width=size.w;}else if(size.h){h=container.style.height=size.h;}} +var content=document.createElement("div");content.innerHTML=contentHTML;container.appendChild(content);document.body.appendChild(container);if(!w){w=parseInt(content.scrollWidth);container.style.width=w+"px";} +if(!h){h=parseInt(content.scrollHeight);} +container.removeChild(content);document.body.removeChild(container);return new OpenLayers.Size(w,h);};OpenLayers.Util.getScrollbarWidth=function(){var scrollbarWidth=OpenLayers.Util._scrollbarWidth;if(scrollbarWidth==null){var scr=null;var inn=null;var wNoScroll=0;var wScroll=0;scr=document.createElement('div');scr.style.position='absolute';scr.style.top='-1000px';scr.style.left='-1000px';scr.style.width='100px';scr.style.height='50px';scr.style.overflow='hidden';inn=document.createElement('div');inn.style.width='100%';inn.style.height='200px';scr.appendChild(inn);document.body.appendChild(scr);wNoScroll=inn.offsetWidth;scr.style.overflow='scroll';wScroll=inn.offsetWidth;document.body.removeChild(document.body.lastChild);OpenLayers.Util._scrollbarWidth=(wNoScroll-wScroll);scrollbarWidth=OpenLayers.Util._scrollbarWidth;} +return scrollbarWidth;};OpenLayers.Rico=new Object();OpenLayers.Rico.Corner={round:function(e,options){e=OpenLayers.Util.getElement(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement"){color=this._background(e);} +var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent"){bgColor=this._background(e.offsetParent);} +this._roundCornersImpl(e,color,bgColor);},changeColor:function(theDiv,newColor){theDiv.style.backgroundColor=newColor;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx"+el.innerHTML+"";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));} +el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;} else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";} -if(!this.options.compact&&(n==(this.options.numSlices-1))) -inStyle.height="2px";this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false} -OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()) -this.options.blend=false;},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")) -return"";if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0) -return"";if(this.options.corners.indexOf("tl")>=0) -return"left";else if(this.options.corners.indexOf("tr")>=0) -return"right";return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")) -return"";if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0) -return"";if(this.options.corners.indexOf("bl")>=0) -return"left";else if(this.options.corners.indexOf("br")>=0) -return"right";return"";},_borderColor:function(color,bgColor){if(color=="transparent") -return bgColor;else if(this.options.border) -return this.options.border;else if(this.options.blend) -return this._blend(bgColor,color);else -return"";},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";} +if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";} +this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()){this.options.blend=false;}},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")){return"";} +if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0){return"";} +if(this.options.corners.indexOf("tl")>=0){return"left";}else if(this.options.corners.indexOf("tr")>=0){return"right";} +return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")){return"";} +if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0){return"";} +if(this.options.corners.indexOf("bl")>=0){return"left";}else if(this.options.corners.indexOf("br")>=0){return"right";} +return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return this._blend(bgColor,color);}else{return"";}},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";} else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";} else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";} else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";} else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";} -if(this.options.border!=false) -el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";},_marginSize:function(n){if(this._isTransparent()) -return 0;var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend) -return smBlendedMarginSizes[n];else if(this.options.compact) -return compactMarginSizes[n];else if(this.options.blend) -return blendedMarginSizes[n];else -return marginSizes[n];},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())) -return 1;else if(this.options.compact) -return compactBorderSizes[n];else if(this.options.blend) -return blendedBorderSizes[n];else if(this.options.border) -return actualBorderSizes[n];else if(this._isTransparent()) -return transparentBorderSizes[n];return 0;},_hasString:function(str){for(var i=1;i=0)return true;return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}} -OpenLayers.ProxyHost="";OpenLayers.nullHandler=function(request){alert("Unhandled request return "+request.statusText);};OpenLayers.loadURL=function(uri,params,caller,onComplete,onFailure){if(OpenLayers.ProxyHost&&OpenLayers.String.startsWith(uri,"http")){uri=OpenLayers.ProxyHost+escape(uri);} -var success=(onComplete)?OpenLayers.Function.bind(onComplete,caller):OpenLayers.nullHandler;var failure=(onFailure)?OpenLayers.Function.bind(onFailure,caller):OpenLayers.nullHandler;new OpenLayers.Ajax.Request(uri,{method:'get',parameters:params,onComplete:success,onFailure:failure});};OpenLayers.parseXMLString=function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} +if(this.options.border!=false){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}},_marginSize:function(n){if(this._isTransparent()){return 0;} +var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend){return smBlendedMarginSizes[n];}else if(this.options.compact){return compactMarginSizes[n];}else if(this.options.blend){return blendedMarginSizes[n];}else{return marginSizes[n];}},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1;}else if(this.options.compact){return compactBorderSizes[n];}else if(this.options.blend){return blendedBorderSizes[n];}else if(this.options.border){return actualBorderSizes[n];}else if(this._isTransparent()){return transparentBorderSizes[n];} +return 0;},_hasString:function(str){for(var i=1;i=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};OpenLayers.ProxyHost="";OpenLayers.nullHandler=function(request){alert(OpenLayers.i18n("unhandledRequest",{'statusText':request.statusText}));};OpenLayers.loadURL=function(uri,params,caller,onComplete,onFailure){var success=(onComplete)?OpenLayers.Function.bind(onComplete,caller):OpenLayers.nullHandler;var failure=(onFailure)?OpenLayers.Function.bind(onFailure,caller):OpenLayers.nullHandler;var request=new OpenLayers.Ajax.Request(uri,{method:'get',parameters:params,onComplete:success,onFailure:failure});return request.transport;};OpenLayers.parseXMLString=function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} var ajaxResponse=OpenLayers.Util.Try(function(){var xmldom=new ActiveXObject('Microsoft.XMLDOM');xmldom.loadXML(text);return xmldom;},function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} -req.send(null);return req.responseXML;});return ajaxResponse;};OpenLayers.Ajax={emptyFunction:function(){},getTransport:function(){return OpenLayers.Util.Try(function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')},function(){return new XMLHttpRequest()})||false;},activeRequestCount:0};OpenLayers.Ajax.Responders={responders:[],register:function(responderToAdd){for(var i=0;i=200&&this.transport.status<300);},responseIsFailure:function(){return!this.responseIsSuccess();}};OpenLayers.Ajax.Request=OpenLayers.Class(OpenLayers.Ajax.Base,{initialize:function(url,options){this.transport=OpenLayers.Ajax.getTransport();this.setOptions(options);this.request(url);},request:function(url){var parameters=this.options.parameters||'';if(parameters.length>0)parameters+='&_=';try{this.url=url;if(this.options.method=='get'&¶meters.length>0){this.url+=(this.url.match(/\?/)?'&':'?')+parameters;} -OpenLayers.Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.options.method,this.url,this.options.asynchronous);if(this.options.asynchronous){this.transport.onreadystatechange=OpenLayers.Function.bind(this.onStateChange,this);setTimeout(OpenLayers.Function.bind((function(){this.respondToReadyState(1)}),this),10);} -this.setRequestHeaders();var body=this.options.postBody?this.options.postBody:parameters;this.transport.send(this.options.method=='post'?body:null);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(e){this.dispatchException(e);}},setRequestHeaders:function(){var requestHeaders=['X-Requested-With','XMLHttpRequest','X-Prototype-Version','OpenLayers'];if(this.options.method=='post'&&!this.options.postBody){requestHeaders.push('Content-type','application/x-www-form-urlencoded');if(this.transport.overrideMimeType){requestHeaders.push('Connection','close');}} -if(this.options.requestHeaders){requestHeaders.push.apply(requestHeaders,this.options.requestHeaders);} -for(var i=0;i-1)?'&':'?')+params;}else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){params+='&_=';}} +try{var response=new OpenLayers.Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(response);} +OpenLayers.Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){window.setTimeout(OpenLayers.Function.bind(this.respondToReadyState,this,1),10);} +this.transport.onreadystatechange=OpenLayers.Function.bind(this.onStateChange,this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete)){this.respondToReadyState(this.transport.readyState);}},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*','OpenLayers':true};if(this.method=='post'){headers['Content-type']=this.options.contentType+ +(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){headers['Connection']='close';}} +if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function'){for(var i=0,length=extras.length;i=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0;}},respondToReadyState:function(readyState){var state=OpenLayers.Ajax.Request.Events[readyState];var response=new OpenLayers.Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||OpenLayers.Ajax.emptyFunction)(response);}catch(e){this.dispatchException(e);} +var contentType=response.getHeader('Content-type');} +try{(this.options['on'+state]||OpenLayers.Ajax.emptyFunction)(response);OpenLayers.Ajax.Responders.dispatch('on'+state,this,response);}catch(e){this.dispatchException(e);} +if(state=='Complete'){this.transport.onreadystatechange=OpenLayers.Ajax.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null;}},dispatchException:function(exception){var handler=this.options.onException;if(handler){handler(this,exception);OpenLayers.Ajax.Responders.dispatch('onException',this,exception);}else{var listener=false;var responders=OpenLayers.Ajax.Responders.responders;for(var i=0;i2&&!(!!(window.attachEvent&&!window.opera)))||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=transport.responseText==null?'':String(transport.responseText);} +if(readyState==4){var xml=transport.responseXML;this.responseXML=xml===undefined?null:xml;}},getStatus:OpenLayers.Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return'';}},getHeader:OpenLayers.Ajax.Request.prototype.getHeader,getResponseHeader:function(name){return this.transport.getResponseHeader(name);}});OpenLayers.Ajax.getElementsByTagNameNS=function(parentnode,nsuri,nsprefix,tagname){var elem=null;if(parentnode.getElementsByTagNameNS){elem=parentnode.getElementsByTagNameNS(nsuri,tagname);}else{elem=parentnode.getElementsByTagName(nsprefix+':'+tagname);} +return elem;};OpenLayers.Ajax.serializeXMLToString=function(xmldom){var serializer=new XMLSerializer();var data=serializer.serializeToString(xmldom);return data;};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,initialize:function(left,bottom,right,top){if(left!=null){this.left=parseFloat(left);} if(bottom!=null){this.bottom=parseFloat(bottom);} if(right!=null){this.right=parseFloat(right);} if(top!=null){this.top=parseFloat(top);}},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top);},equals:function(bounds){var equals=false;if(bounds!=null){equals=((this.left==bounds.left)&&(this.right==bounds.right)&&(this.top==bounds.top)&&(this.bottom==bounds.bottom));} @@ -207,7 +195,7 @@ return equals;},toString:function(){return("left-bottom=("+this.left+","+this.bo var mult=Math.pow(10,decimal);var bbox=Math.round(this.left*mult)/mult+","+ Math.round(this.bottom*mult)/mult+","+ Math.round(this.right*mult)/mult+","+ -Math.round(this.top*mult)/mult;return bbox;},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(){return new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2);},add:function(x,y){if((x==null)||(y==null)){var msg="You must pass both x and y values to the add function.";OpenLayers.Console.error(msg);return null;} +Math.round(this.top*mult)/mult;return bbox;},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(){return new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2);},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("boundsAddError");OpenLayers.Console.error(msg);return null;} return new OpenLayers.Bounds(this.left+x,this.bottom+y,this.right+x,this.top+y);},extend:function(object){var bounds=null;if(object){switch(object.CLASS_NAME){case"OpenLayers.LonLat":bounds=new OpenLayers.Bounds(object.lon,object.lat,object.lon,object.lat);break;case"OpenLayers.Geometry.Point":bounds=new OpenLayers.Bounds(object.x,object.y,object.x,object.y);break;case"OpenLayers.Bounds":bounds=object;break;} if(bounds){if((this.left==null)||(bounds.leftthis.bottom)&&(bounds.bottombounds.bottom)&&(this.bottomthis.bottom)&&(bounds.topbounds.bottom)&&(this.topthis.left)&&(bounds.rightbounds.left)&&(this.rightthis.left)&&(bounds.leftbounds.left)&&(this.left=this.left)&&(bounds.left<=this.right);inTop=(bounds.top>=this.bottom)&&(bounds.top<=this.top);inRight=(bounds.right>=this.left)&&(bounds.right<=this.right);inBottom=(bounds.bottom>=this.bottom)&&(bounds.bottom<=this.top);}else{inLeft=(bounds.left>this.left)&&(bounds.leftthis.bottom)&&(bounds.topthis.left)&&(bounds.rightthis.bottom)&&(bounds.bottom=maxExtent.right&&newBounds.right>maxExtent.right){newBounds=newBounds.add(-maxExtent.getWidth(),0);}} return newBounds;},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(str){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds);};OpenLayers.Bounds.fromArray=function(bbox){return new OpenLayers.Bounds(parseFloat(bbox[0]),parseFloat(bbox[1]),parseFloat(bbox[2]),parseFloat(bbox[3]));};OpenLayers.Bounds.fromSize=function(size){return new OpenLayers.Bounds(0,size.h,size.w,0);};OpenLayers.Bounds.oppositeQuadrant=function(quadrant){var opp="";opp+=(quadrant.charAt(0)=='t')?'b':'t';opp+=(quadrant.charAt(1)=='l')?'r':'l';return opp;};OpenLayers.Element={visible:function(element){return OpenLayers.Util.getElement(element).style.display!='none';},toggle:function(){for(var i=0;imaxExtent.right){newLonLat.lon-=maxExtent.getWidth();}} return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(parseFloat(pair[0]),parseFloat(pair[1]));};OpenLayers.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));} -return equals;},add:function(x,y){if((x==null)||(y==null)){var msg="You must pass both x and y values to the add function.";OpenLayers.Console.error(msg);return null;} +return equals;},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("pixelAddError");OpenLayers.Console.error(msg);return null;} return new OpenLayers.Pixel(this.x+x,this.y+y);},offset:function(px){var newPx=this.clone();if(px){newPx=this.add(px.x,px.y);} return newPx;},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0.0,h:0.0,initialize:function(w,h){this.w=parseFloat(w);this.h=parseFloat(h);},toString:function(){return("w="+this.w+",h="+this.h);},clone:function(){return new OpenLayers.Size(this.w,this.h);},equals:function(sz){var equals=false;if(sz!=null){equals=((this.w==sz.w&&this.h==sz.h)||(isNaN(this.w)&&isNaN(this.h)&&isNaN(sz.w)&&isNaN(sz.h)));} -return equals;},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},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(){if(window.console){var scripts=document.getElementsByTagName("script");for(var i=0;i0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}});OpenLayers.Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++)hexCode+=(shortHexCode.charAt(i)+ -shortHexCode.charAt(i));} -if(hexCode.indexOf('#')==0) -hexCode=hexCode.substring(1);var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new OpenLayers.Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));} -OpenLayers.Rico.Color.createColorFromBackground=function(elem){var actualColor=RicoUtil.getElementsComputedStyle(OpenLayers.Util.getElement(elem),"backgroundColor","background-color");if(actualColor=="transparent"&&elem.parentNode) -return OpenLayers.Rico.Color.createColorFromBackground(elem.parentNode);if(actualColor==null) -return new OpenLayers.Rico.Color(255,255,255);if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new OpenLayers.Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));} +if(this.autoSize){var realSize=OpenLayers.Util.getRenderedDimensions(this.contentHTML);var safeSize=this.getSafeContentSize(realSize);var newSize=null;if(safeSize.equals(realSize)){newSize=realSize;}else{var fixedSize=new OpenLayers.Size();fixedSize.w=(safeSize.w(mapSize.w-this.map.paddingForPopups.right)){newTL.x=mapSize.w-this.map.paddingForPopups.right-this.size.w;} +if(origTL.y(mapSize.h-this.map.paddingForPopups.bottom)){newTL.y=mapSize.h-this.map.paddingForPopups.bottom-this.size.h;} +var dx=origTL.x-newTL.x;var dy=origTL.y-newTL.y;this.map.pan(dx,dy);},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,true);this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,scope:this});},onmousedown:function(evt){this.mousedown=true;OpenLayers.Event.stop(evt,true);},onmousemove:function(evt){if(this.mousedown){OpenLayers.Event.stop(evt,true);}},onmouseup:function(evt){if(this.mousedown){this.mousedown=false;OpenLayers.Event.stop(evt,true);}},onclick:function(evt){OpenLayers.Event.stop(evt,true);},onmouseout:function(evt){this.mousedown=false;},ondblclick:function(evt){OpenLayers.Event.stop(evt,true);},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.Renderer=OpenLayers.Class({container:null,extent:null,size:null,resolution:null,map:null,initialize:function(containerID){this.container=OpenLayers.Util.getElement(containerID);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent){this.extent=extent.clone();this.resolution=null;},setSize:function(size){this.size=size.clone();this.resolution=null;},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution;},drawFeature:function(feature,style){if(style==null){style=feature.style;} +if(feature.geometry){this.drawGeometry(feature.geometry,style,feature.id);}},drawGeometry:function(geometry,style,featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(features instanceof Array)){features=[features];} +for(var i=0;ithis.duration){if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);this.playing=false;} +window.clearInterval(this.interval);this.interval=null;}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(red,green,blue){this.rgb={r:red,g:green,b:blue};},setRed:function(r){this.rgb.r=r;},setGreen:function(g){this.rgb.g=g;},setBlue:function(b){this.rgb.b=b;},setHue:function(h){var hsb=this.asHSB();hsb.h=h;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setSaturation:function(s){var hsb=this.asHSB();hsb.s=s;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setBrightness:function(b){var hsb=this.asHSB();hsb.b=b;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},darken:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.max(hsb.b-percent,0));},brighten:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.min(hsb.b+percent,1));},blend:function(other){this.rgb.r=Math.floor((this.rgb.r+other.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+other.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+other.rgb.b)/2);},isBright:function(){var hsb=this.asHSB();return this.asHSB().b>0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}});OpenLayers.Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++){hexCode+=(shortHexCode.charAt(i)+ +shortHexCode.charAt(i));}} +if(hexCode.indexOf('#')==0){hexCode=hexCode.substring(1);} +var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new OpenLayers.Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));};OpenLayers.Rico.Color.createColorFromBackground=function(elem){var actualColor=RicoUtil.getElementsComputedStyle(OpenLayers.Util.getElement(elem),"backgroundColor","background-color");if(actualColor=="transparent"&&elem.parentNode){return OpenLayers.Rico.Color.createColorFromBackground(elem.parentNode);} +if(actualColor==null){return new OpenLayers.Rico.Color(255,255,255);} +if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new OpenLayers.Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));} else if(actualColor.indexOf("#")==0){return OpenLayers.Rico.Color.createFromHex(actualColor);} -else -return new OpenLayers.Rico.Color(255,255,255);} -OpenLayers.Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;} +else{return new OpenLayers.Rico.Color(255,255,255);}};OpenLayers.Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;} else{var h=(hue-Math.floor(hue))*6.0;var f=h-Math.floor(h);var p=brightness*(1.0-saturation);var q=brightness*(1.0-saturation*f);var t=brightness*(1.0-(saturation*(1.0-f)));switch(parseInt(h)){case 0:red=(brightness*255.0+0.5);green=(t*255.0+0.5);blue=(p*255.0+0.5);break;case 1:red=(q*255.0+0.5);green=(brightness*255.0+0.5);blue=(p*255.0+0.5);break;case 2:red=(p*255.0+0.5);green=(brightness*255.0+0.5);blue=(t*255.0+0.5);break;case 3:red=(p*255.0+0.5);green=(q*255.0+0.5);blue=(brightness*255.0+0.5);break;case 4:red=(t*255.0+0.5);green=(p*255.0+0.5);blue=(brightness*255.0+0.5);break;case 5:red=(brightness*255.0+0.5);green=(p*255.0+0.5);blue=(q*255.0+0.5);break;}} -return{r:parseInt(red),g:parseInt(green),b:parseInt(blue)};} -OpenLayers.Rico.Color.RGBtoHSB=function(r,g,b){var hue;var saturation;var brightness;var cmax=(r>g)?r:g;if(b>cmax) -cmax=b;var cmin=(rg)?r:g;if(b>cmax){cmax=b;} +var cmin=(rBase Layer";this.baseLbl.style.marginTop="3px";this.baseLbl.style.marginLeft="3px";this.baseLbl.style.marginBottom="3px";this.baseLayersDiv=document.createElement("div");this.baseLayersDiv.style.paddingLeft="10px";this.dataLbl=document.createElement("div");this.dataLbl.innerHTML="Overlays";this.dataLbl.style.marginTop="3px";this.dataLbl.style.marginLeft="3px";this.dataLbl.style.marginBottom="3px";this.dataLayersDiv=document.createElement("div");this.dataLayersDiv.style.paddingLeft="10px";if(this.ascending){this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);}else{this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);} +for(var i=0;i0){this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),this.map.getZoom()-1);}},zoomBoxEnd:function(evt){if(this.mouseDragStart!=null){if(Math.abs(this.mouseDragStart.x-evt.xy.x)>5||Math.abs(this.mouseDragStart.y-evt.xy.y)>5){var start=this.map.getLonLatFromViewPortPx(this.mouseDragStart);var end=this.map.getLonLatFromViewPortPx(evt.xy);var top=Math.max(start.lat,end.lat);var bottom=Math.min(start.lat,end.lat);var left=Math.min(start.lon,end.lon);var right=Math.max(start.lon,end.lon);var bounds=new OpenLayers.Bounds(left,bottom,right,top);this.map.zoomToExtent(bounds);}else{var end=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(new OpenLayers.LonLat((end.lon),(end.lat)),this.map.getZoom()+1);} this.removeZoomBox();}},removeZoomBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},onWheelEvent:function(e){var inMap=false;var elem=OpenLayers.Event.element(e);while(elem!=null){if(this.map&&elem==this.map.div){inMap=true;break;} elem=elem.parentNode;} if(inMap){var delta=0;if(!e){e=window.event;} -if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} +if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} if(delta){e.xy=this.mousePosition;if(delta<0){this.defaultWheelDown(e);}else{this.defaultWheelUp(e);}} -OpenLayers.Event.stop(e);}},CLASS_NAME:"OpenLayers.Control.MouseDefaults"});OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{element:null,prefix:'',separator:', ',suffix:'',numdigits:5,granularity:10,lastXy:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.map){this.map.events.unregister('mousemove',this,this.redraw);} -OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.div.left="";this.div.top="";this.div.className=this.displayClass;this.element=this.div;} +OpenLayers.Event.stop(e);}},CLASS_NAME:"OpenLayers.Control.MouseDefaults"});OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{element:null,prefix:'',separator:', ',suffix:'',numdigits:5,granularity:10,lastXy:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.map){this.map.events.unregister('mousemove',this,this.redraw);} +OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.div.left="";this.div.top="";this.element=this.div;} this.redraw();return this.div;},redraw:function(evt){var lonLat;if(evt==null){lonLat=new OpenLayers.LonLat(0,0);}else{if(this.lastXy==null||Math.abs(evt.xy.x-this.lastXy.x)>this.granularity||Math.abs(evt.xy.y-this.lastXy.y)>this.granularity) {this.lastXy=evt.xy;return;} -lonLat=this.map.getLonLatFromPixel(evt.xy);this.lastXy=evt.xy;} -var digits=parseInt(this.numdigits);var newHtml=this.prefix+ +lonLat=this.map.getLonLatFromPixel(evt.xy);if(!lonLat){return;} +if(this.displayProjection){lonLat.transform(this.map.getProjectionObject(),this.displayProjection);} +this.lastXy=evt.xy;} +var newHtml=this.formatOutput(lonLat);if(newHtml!=this.element.innerHTML){this.element.innerHTML=newHtml;}},formatOutput:function(lonLat){var digits=parseInt(this.numdigits);var newHtml=this.prefix+ lonLat.lon.toFixed(digits)+ this.separator+ lonLat.lat.toFixed(digits)+ -this.suffix;if(newHtml!=this.element.innerHTML){this.element.innerHTML=newHtml;}},setMap:function(){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register('mousemove',this,this.redraw);},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);while(this.buttons.length){var btn=this.buttons.shift();btn.map=null;OpenLayers.Event.stopObservingElement(btn);} -this.buttons=null;this.position=null;},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_PanZoom_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;btn.slideFactor=this.slideFactor;this.buttons.push(btn);return btn;},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;switch(this.action){case"panup":this.map.pan(0,-50);break;case"pandown":this.map.pan(0,50);break;case"panleft":this.map.pan(-50,0);break;case"panright":this.map.pan(50,0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} -OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,defaultControl:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.controls=[];},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var i=this.controls.length-1;i>=0;i--){OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);this.controls[i].panel_div=null;}},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var i=0;i1){this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);} +if(this.previousStack.length>(this.limit+1)){this.previousStack.pop();} +if(this.nextStack.length>0){this.nextStack=[];this.onNextChange(null,0);}} +return true;},this);}},activate:function(){var activated=false;if(this.map){if(OpenLayers.Control.prototype.activate.apply(this)){if(this.listeners==null){this.setListeners();} +for(var type in this.listeners){this.map.events.register(type,this,this.listeners[type]);} +activated=true;if(this.previousStack.length==0){this.initStack();}}} +return activated;},initStack:function(){if(this.map.getCenter()){this.listeners.moveend();}},deactivate:function(){var deactivated=false;if(this.map){if(OpenLayers.Control.prototype.deactivate.apply(this)){for(var type in this.listeners){this.map.events.unregister(type,this,this.listeners[type]);} +if(this.clearOnDeactivate){this.clear();} +deactivated=true;}} +return deactivated;},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);while(this.buttons.length){var btn=this.buttons.shift();btn.map=null;OpenLayers.Event.stopObservingElement(btn);} +this.buttons=null;this.position=null;},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_PanZoom_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;btn.slideFactor=this.slideFactor;this.buttons.push(btn);return btn;},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +switch(this.action){case"panup":this.map.pan(0,-this.slideFactor);break;case"pandown":this.map.pan(0,this.slideFactor);break;case"panleft":this.map.pan(-this.slideFactor,0);break;case"panright":this.map.pan(this.slideFactor,0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} +OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,defaultControl:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.controls=[];},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var i=this.controls.length-1;i>=0;i--){if(this.controls[i].events){this.controls[i].events.un({"activate":this.redraw,"deactivate":this.redraw,scope:this});} +OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);this.controls[i].panel_div=null;}},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var i=0;i=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);} -this.element.innerHTML="Scale = 1 : "+scale;},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){if(this.map){this.map.zoomToMaxExtent();}},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Event={observers:false,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(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} -if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))) -element=element.parentNode;return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} +href+='?'+OpenLayers.Util.getParameterString(params);this.element.href=href;},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,initialize:function(element,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!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 scale=this.map.getScale();if(!scale){return;} +if(scale>=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);} +this.element.innerHTML=OpenLayers.i18n("scale",{'scaleDenom':scale});},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.eTop){this.div.style.display="block";this.div.style.position="absolute";this.eTop=document.createElement("div");this.eTop.className=this.displayClass+"Top";var theLen=this.topInUnits.length;this.div.appendChild(this.eTop);if((this.topOutUnits=="")||(this.topInUnits=="")){this.eTop.style.visibility="hidden";}else{this.eTop.style.visibility="visible";} +this.eBottom=document.createElement("div");this.eBottom.className=this.displayClass+"Bottom";this.div.appendChild(this.eBottom);if((this.bottomOutUnits=="")||(this.bottomInUnits=="")){this.eBottom.style.visibility="hidden";}else{this.eBottom.style.visibility="visible";}} +this.map.events.register('moveend',this,this.update);this.update();return this.div;},getBarLen:function(maxLen){var digits=parseInt(Math.log(maxLen)/Math.log(10));var pow10=Math.pow(10,digits);var firstChar=parseInt(maxLen/pow10);var barLen;if(firstChar>5){barLen=5;}else if(firstChar>2){barLen=2;}else{barLen=1;} +return barLen*pow10;},update:function(){var res=this.map.getResolution();if(!res){return;} +var curMapUnits=this.map.units;var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var topUnits;var bottomUnits;if(maxSizeData>100000){topUnits=this.topOutUnits;bottomUnits=this.bottomOutUnits;}else{topUnits=this.topInUnits;bottomUnits=this.bottomInUnits;} +var topMax=maxSizeData/inches[topUnits];var bottomMax=maxSizeData/inches[bottomUnits];var topRounded=this.getBarLen(topMax);var bottomRounded=this.getBarLen(bottomMax);topMax=topRounded/inches[curMapUnits]*inches[topUnits];bottomMax=bottomRounded/inches[curMapUnits]*inches[bottomUnits];var topPx=topMax/res;var bottomPx=bottomMax/res;this.eTop.style.width=Math.round(topPx)+"px";this.eBottom.style.width=Math.round(bottomPx)+"px";this.eTop.innerHTML=topRounded+" "+topUnits;this.eBottom.innerHTML=bottomRounded+" "+bottomUnits;},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){if(this.map){this.map.zoomToMaxExtent();}},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Event={observers:false,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(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} +if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))){element=element.parentNode;} +return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} if(!this.observers){this.observers={};} if(!element._eventCacheID){var idPrefix="eventCacheID_";if(element.id){idPrefix=element.id+"_"+idPrefix;} element._eventCacheID=OpenLayers.Util.createUniqueID(idPrefix);} @@ -352,72 +401,67 @@ this.observers[cacheID].push({'element':element,'name':name,'observer':observer, var foundEntry=false;var elementObservers=OpenLayers.Event.observers[cacheID];if(elementObservers){var i=0;while(!foundEntry&&i0)){for(var i=0;i0)){var continueChain;for(var i=0;i0){this.root.removeChild(this.root.firstChild);}}},getNodeType:function(geometry){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;ibottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} -bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Control.MouseToolbar=OpenLayers.Class(OpenLayers.Control.MouseDefaults,{mode:null,buttons:null,direction:"vertical",buttonClicked:null,initialize:function(position,direction){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.position=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,OpenLayers.Control.MouseToolbar.Y);if(position){this.position=position;} +-(document.documentElement.clientTop||0));},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Format=OpenLayers.Class({externalProjection:null,internalProjection:null,initialize:function(options){OpenLayers.Util.extend(this,options);},read:function(data){alert(OpenLayers.i18n("readNotImplemented"));},write:function(object){alert(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Lang.en={'unhandledRequest':"Unhandled request return ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Base Layer",'sameProjection':"The overview map only works when it is in the same projection as the main map",'readNotImplemented':"Read not implemented.",'writeNotImplemented':"Write not implemented.",'noFID':"Can't update a feature for which there is no FID.",'errorLoadingGML':"Error in loading GML file ${url}",'browserNotSupported':"Your browser does not support vector rendering. Currently supported renderers are:\n${renderers}",'componentShouldBe':"addFeatures : component should be an ${geomType}",'getFeatureError':"getFeatureFromEvent called on layer with no renderer. This usually means you "+"destroyed a layer, but not some handler which is associated with it.",'minZoomLevelError':"The minZoomLevel property is only intended for use "+"with the FixedZoomLevels-descendent layers. That this "+"wfs layer checks for minZoomLevel is a relic of the"+"past. We cannot, however, remove it without possibly "+"breaking OL based applications that may depend on it."+" Therefore we are deprecating it -- the minZoomLevel "+"check below will be removed at 3.0. Please instead "+"use min/max resolution setting as described here: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: SUCCESS ${response}",'commitFailed':"WFS Transaction: FAILED ${response}",'googleWarning':"The Google Layer was unable to load correctly.

    "+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

    "+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.

    "+"Developers: For help getting this working correctly, "+"click here",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.

    "+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

    "+"Most likely, this is because the ${layerLib} library "+"script was either not correctly included.

    "+"Developers: For help getting this working correctly, "+"click here",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'end':''};OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,anchor:null,initialize:function(id,lonlat,size,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=new Array(id,lonlat,size,contentHTML,closeBox,closeBoxCallback);OpenLayers.Popup.prototype.initialize.apply(this,newArguments);this.anchor=(anchor!=null)?anchor:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)};},destroy:function(){this.anchor=null;this.relativePosition=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments);},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments);},moveTo:function(px){var oldRelativePosition=this.relativePosition;this.relativePosition=this.calculateRelativePosition(px);var newPx=this.calculateNewPx(px);var newArguments=new Array(newPx);OpenLayers.Popup.prototype.moveTo.apply(this,newArguments);if(this.relativePosition!=oldRelativePosition){this.updateRelativePosition();}},setSize:function(size){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(px);}},calculateRelativePosition:function(px){var lonlat=this.map.getLonLatFromLayerPx(px);var extent=this.map.getExtent();var quadrant=extent.determineQuadrant(lonlat);return OpenLayers.Bounds.oppositeQuadrant(quadrant);},updateRelativePosition:function(){},calculateNewPx:function(px){var newPx=px.offset(this.anchor.offset);var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-this.size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-this.size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},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(projection){if(projection&&projection.getCode){return this.getCode()==projection.getCode();}else{return false;}},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};} +OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);} +return point;};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,xmlns:null,minimumSymbolizer:{strokeLinecap:"round",strokeOpacity:1,fillOpacity:1,pointRadius:0},initialize:function(containerID){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot();this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){if(this.root){while(this.root.childNodes.length>0){this.root.removeChild(this.root.firstChild);}}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;ibottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} +var bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},startTransition:function(){},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));if(withinMaxExtent){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.imageSize||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();}}},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Control.MouseToolbar=OpenLayers.Class(OpenLayers.Control.MouseDefaults,{mode:null,buttons:null,direction:"vertical",buttonClicked:null,initialize:function(position,direction){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.position=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,OpenLayers.Control.MouseToolbar.Y);if(position){this.position=position;} if(direction){this.direction=direction;} this.measureDivs=[];},destroy:function(){for(var btnId in this.buttons){var btn=this.buttons[btnId];btn.map=null;btn.events.destroy();} -OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);OpenLayers.Control.MouseDefaults.prototype.draw.apply(this,arguments);this.buttons={};var sz=new OpenLayers.Size(28,28);var centered=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0);this._addButton("zoombox","drag-rectangle-off.png","drag-rectangle-on.png",centered,sz,"Shift->Drag to zoom to area");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this._addButton("pan","panning-hand-off.png","panning-hand-on.png",centered,sz,"Drag the map to pan.");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this.switchModeTo("pan");return this.div;},_addButton:function(id,img,activeImg,xy,sz,title){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var activeImgLocation=OpenLayers.Util.getImagesLocation()+activeImg;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MouseToolbar_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);btn.imgLocation=imgLocation;btn.activeImgLocation=activeImgLocation;btn.events=new OpenLayers.Events(this,btn,null,true);btn.events.register("mousedown",this,this.buttonDown);btn.events.register("mouseup",this,this.buttonUp);btn.events.register("dblclick",this,OpenLayers.Event.stop);btn.action=id;btn.title=title;btn.alt=title;btn.map=this.map;this.buttons[id]=btn;return btn;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.buttonClicked=evt.element.action;OpenLayers.Event.stop(evt);},buttonUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;if(this.buttonClicked!=null){if(this.buttonClicked==evt.element.action){this.switchModeTo(evt.element.action);} -OpenLayers.Event.stop(evt);this.buttonClicked=null;}},defaultDblClick:function(evt){this.switchModeTo("pan");this.performedDrag=false;var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.mouseDragStart=evt.xy.clone();this.performedDrag=false;this.startViaKeyboard=false;if(evt.shiftKey&&this.mode!="zoombox"){this.switchModeTo("zoombox");this.startViaKeyboard=true;}else if(evt.altKey&&this.mode!="measure"){this.switchModeTo("measure");}else if(!this.mode){this.switchModeTo("pan");} -switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);this.performedDrag=true;break;case"measure":var distance="";if(this.measureStart){measureEnd=this.map.getLonLatFromViewPortPx(this.mouseDragStart);distance=OpenLayers.Util.distVincenty(this.measureStart,measureEnd);distance=Math.round(distance*100)/100;distance=distance+"km";this.measureStartBox=this.measureBox;} +OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);OpenLayers.Control.MouseDefaults.prototype.draw.apply(this,arguments);this.buttons={};var sz=new OpenLayers.Size(28,28);var centered=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0);this._addButton("zoombox","drag-rectangle-off.png","drag-rectangle-on.png",centered,sz,"Shift->Drag to zoom to area");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this._addButton("pan","panning-hand-off.png","panning-hand-on.png",centered,sz,"Drag the map to pan.");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this.switchModeTo("pan");return this.div;},_addButton:function(id,img,activeImg,xy,sz,title){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var activeImgLocation=OpenLayers.Util.getImagesLocation()+activeImg;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MouseToolbar_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);btn.imgLocation=imgLocation;btn.activeImgLocation=activeImgLocation;btn.events=new OpenLayers.Events(this,btn,null,true);btn.events.on({"mousedown":this.buttonDown,"mouseup":this.buttonUp,"dblclick":OpenLayers.Event.stop,scope:this});btn.action=id;btn.title=title;btn.alt=title;btn.map=this.map;this.buttons[id]=btn;return btn;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +this.buttonClicked=evt.element.action;OpenLayers.Event.stop(evt);},buttonUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +if(this.buttonClicked!=null){if(this.buttonClicked==evt.element.action){this.switchModeTo(evt.element.action);} +OpenLayers.Event.stop(evt);this.buttonClicked=null;}},defaultDblClick:function(evt){this.switchModeTo("pan");this.performedDrag=false;var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +this.mouseDragStart=evt.xy.clone();this.performedDrag=false;this.startViaKeyboard=false;if(evt.shiftKey&&this.mode!="zoombox"){this.switchModeTo("zoombox");this.startViaKeyboard=true;}else if(evt.altKey&&this.mode!="measure"){this.switchModeTo("measure");}else if(!this.mode){this.switchModeTo("pan");} +switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);this.performedDrag=true;break;case"measure":var distance="";if(this.measureStart){var measureEnd=this.map.getLonLatFromViewPortPx(this.mouseDragStart);distance=OpenLayers.Util.distVincenty(this.measureStart,measureEnd);distance=Math.round(distance*100)/100;distance=distance+"km";this.measureStartBox=this.measureBox;} this.measureStart=this.map.getLonLatFromViewPortPx(this.mouseDragStart);;this.measureBox=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),-2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBox.style.width="4px";this.measureBox.style.height="4px";this.measureBox.style.fontSize="1px";this.measureBox.style.backgroundColor="red";this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);if(distance){this.measureBoxDistance=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBoxDistance.innerHTML=distance;this.measureBoxDistance.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBoxDistance);this.measureDivs.push(this.measureBoxDistance);} this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);this.measureDivs.push(this.measureBox);break;default:this.map.div.style.cursor="move";break;} -document.onselectstart=function(){return false;} -OpenLayers.Event.stop(evt);},switchModeTo:function(mode){if(mode!=this.mode){if(this.mode&&this.buttons[this.mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode],null,null,null,this.buttons[this.mode].imgLocation);} +document.onselectstart=function(){return false;};OpenLayers.Event.stop(evt);},switchModeTo:function(mode){if(mode!=this.mode){if(this.mode&&this.buttons[this.mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode],null,null,null,this.buttons[this.mode].imgLocation);} if(this.mode=="measure"&&mode!="measure"){for(var i=0;i0)){if(this.map.baseLayer){var layer=this.map.baseLayer.clone();this.layers=[layer];}else{this.map.events.register("changebaselayer",this,this.baseLayerDraw);return 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=1000;this.extentRectangle.style.overflow='hidden';this.extentRectangle.style.backgroundImage='url('+ -OpenLayers.Util.getImagesLocation()+'blank.gif)';this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.mapDiv.appendChild(this.extentRectangle);this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);this.map.events.register('moveend',this,this.update);this.elementEvents=new OpenLayers.Events(this,this.element);this.elementEvents.register('mousedown',this,function(e){OpenLayers.Event.stop(e);});this.elementEvents.register('click',this,function(e){OpenLayers.Event.stop(e);});this.elementEvents.register('dblclick',this,function(e){OpenLayers.Event.stop(e);});this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,true);this.rectEvents.register('mouseout',this,this.rectMouseOut);this.rectEvents.register('mousedown',this,this.rectMouseDown);this.rectEvents.register('mousemove',this,this.rectMouseMove);this.rectEvents.register('mouseup',this,this.rectMouseUp);this.rectEvents.register('click',this,function(e){OpenLayers.Event.stop(e);});this.rectEvents.register('dblclick',this,this.rectDblClick);this.mapDivEvents=new OpenLayers.Events(this,this.mapDiv);this.mapDivEvents.register('click',this,this.mapDivClick);if(!this.outsideViewport){this.div.className=this.displayClass+'Container';var imgLocation=OpenLayers.Util.getImagesLocation();var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+'MaximizeButton',null,new OpenLayers.Size(18,18),img,'absolute');this.maximizeDiv.style.display='none';this.maximizeDiv.className=this.displayClass+'MaximizeButton';OpenLayers.Event.observe(this.maximizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv('OpenLayers_Control_minimizeDiv',null,new OpenLayers.Size(18,18),img,'absolute');this.minimizeDiv.style.display='none';this.minimizeDiv.className=this.displayClass+'MinimizeButton';OpenLayers.Event.observe(this.minimizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);var eventsToStop=['dblclick','mousedown'];for(var i=0;i=this.size.h-this.hComp)||(rectPxBounds.right>=this.size.w-this.wComp)){this.updateMapToRect();}else{return;}} -document.onselectstart=null;this.rectDragStart=null;}},rectMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.rectDragStart=evt.xy.clone();this.performedRectDrag=false;OpenLayers.Event.stop(evt);},rectMouseMove:function(evt){if(this.rectDragStart!=null){var deltaX=this.rectDragStart.x-evt.xy.x;var deltaY=this.rectDragStart.y-evt.xy.y;var rectPxBounds=this.getRectPxBounds();var rectTop=rectPxBounds.top;var rectLeft=rectPxBounds.left;var rectHeight=Math.abs(rectPxBounds.getHeight());var rectWidth=rectPxBounds.getWidth();var newTop=Math.max(0,(rectTop-deltaY));newTop=Math.min(newTop,this.ovmap.size.h-this.hComp-rectHeight);var newLeft=Math.max(0,(rectLeft-deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-this.wComp-rectWidth);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+rectHeight,newLeft+rectWidth,newTop));this.rectDragStart=evt.xy.clone();this.performedRectDrag=true;OpenLayers.Event.stop(evt);}},rectMouseUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;if(this.performedRectDrag){this.updateMapToRect();OpenLayers.Event.stop(evt);} -document.onselectstart=null;this.rectDragStart=null;},rectDblClick:function(evt){this.performedRectDrag=false;OpenLayers.Event.stop(evt);this.updateOverview();},mapDivClick:function(evt){var pxBounds=this.getRectPxBounds();var pxCenter=pxBounds.getCenterPixel();var deltaX=evt.xy.x-pxCenter.x;var deltaY=evt.xy.y-pxCenter.y;var top=pxBounds.top;var left=pxBounds.left;var height=Math.abs(pxBounds.getHeight());var width=pxBounds.getWidth();var newTop=Math.max(0,(top+deltaY));newTop=Math.min(newTop,this.ovmap.size.h-height);var newLeft=Math.max(0,(left+deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-width);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+height,newLeft+width,newTop));this.updateMapToRect();OpenLayers.Event.stop(evt);},maximizeControl:function(e){this.element.style.display='';this.showToggle(false);if(e!=null){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.element.style.display='none';this.showToggle(true);if(e!=null){OpenLayers.Event.stop(e);}},showToggle:function(minimize){this.maximizeDiv.style.display=minimize?'':'none';this.minimizeDiv.style.display=minimize?'none':'';},update:function(){if(this.ovmap==null){this.createMap();} -if(!this.isSuitableOverview()){this.updateOverview();} -this.updateRectToMap();},isSuitableOverview:function(){var mapExtent=this.map.getExtent();var maxExtent=this.map.maxExtent;var testExtent=new OpenLayers.Bounds(Math.max(mapExtent.left,maxExtent.left),Math.max(mapExtent.bottom,maxExtent.bottom),Math.min(mapExtent.right,maxExtent.right),Math.min(mapExtent.top,maxExtent.top));var resRatio=this.ovmap.getResolution()/this.map.getResolution();return((resRatio>this.minRatio)&&(resRatio<=this.maxRatio)&&(this.ovmap.getExtent().containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;} -this.ovmap.setCenter(this.map.center,this.ovmap.getZoomForResolution(targetRes));this.updateRectToMap();},createMap:function(){var options=OpenLayers.Util.extend({controls:[],maxResolution:'auto'},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,options);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-left-width'))+ -parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-right-width'));this.wComp=(this.wComp)?this.wComp:2;this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-top-width'))+ -parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-bottom-width'));this.hComp=(this.hComp)?this.hComp:2;},updateRectToMap:function(){if(this.map.units!='degrees'){if(this.ovmap.getProjection()&&(this.map.getProjection()!=this.ovmap.getProjection())){alert('The overview map only works when it is in the same projection as the main map');}} -var pxBounds=this.getRectBoundsFromMapBounds(this.map.getExtent());if(pxBounds){this.setRectPxBounds(pxBounds);}},updateMapToRect:function(){var pxBounds=this.getRectPxBounds();var lonLatBounds=this.getMapBoundsFromRectBounds(pxBounds);this.map.setCenter(lonLatBounds.getCenterLonLat(),this.map.zoom);},getRectPxBounds:function(){var top=parseInt(this.extentRectangle.style.top);var left=parseInt(this.extentRectangle.style.left);var height=parseInt(this.extentRectangle.style.height);var width=parseInt(this.extentRectangle.style.width);return new OpenLayers.Bounds(left,top+height,left+width,top);},setRectPxBounds:function(pxBounds){var top=Math.max(pxBounds.top,0);var left=Math.max(pxBounds.left,0);var bottom=Math.min(pxBounds.top+Math.abs(pxBounds.getHeight()),this.ovmap.size.h-this.hComp);var right=Math.min(pxBounds.left+pxBounds.getWidth(),this.ovmap.size.w-this.wComp);this.extentRectangle.style.top=parseInt(top)+'px';this.extentRectangle.style.left=parseInt(left)+'px';this.extentRectangle.style.height=parseInt(Math.max(bottom-top,0))+'px';this.extentRectangle.style.width=parseInt(Math.max(right-left,0))+'px';},getRectBoundsFromMapBounds:function(lonLatBounds){var leftBottomLonLat=new OpenLayers.LonLat(lonLatBounds.left,lonLatBounds.bottom);var rightTopLonLat=new OpenLayers.LonLat(lonLatBounds.right,lonLatBounds.top);var leftBottomPx=this.getOverviewPxFromLonLat(leftBottomLonLat);var rightTopPx=this.getOverviewPxFromLonLat(rightTopLonLat);var bounds=null;if(leftBottomPx&&rightTopPx){bounds=new OpenLayers.Bounds(leftBottomPx.x,leftBottomPx.y,rightTopPx.x,rightTopPx.y);} -return bounds;},getMapBoundsFromRectBounds:function(pxBounds){var leftBottomPx=new OpenLayers.Pixel(pxBounds.left,pxBounds.bottom);var rightTopPx=new OpenLayers.Pixel(pxBounds.right,pxBounds.top);var leftBottomLonLat=this.getLonLatFromOverviewPx(leftBottomPx);var rightTopLonLat=this.getLonLatFromOverviewPx(rightTopPx);return new OpenLayers.Bounds(leftBottomLonLat.lon,leftBottomLonLat.lat,rightTopLonLat.lon,rightTopLonLat.lat);},getLonLatFromOverviewPx:function(overviewMapPx){var size=this.ovmap.size;var res=this.ovmap.getResolution();var center=this.ovmap.getExtent().getCenterLonLat();var delta_x=overviewMapPx.x-(size.w/2);var delta_y=overviewMapPx.y-(size.h/2);return new OpenLayers.LonLat(center.lon+delta_x*res,center.lat-delta_y*res);},getOverviewPxFromLonLat:function(lonlat){var res=this.ovmap.getResolution();var extent=this.ovmap.getExtent();var px=null;if(extent){px=new OpenLayers.Pixel(Math.round(1/res*(lonlat.lon-extent.left)),Math.round(1/res*(extent.top-lonlat.lat)));} -return px;},CLASS_NAME:'OpenLayers.Control.OverviewMap'});OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoomBarDiv:null,divEvents:null,initialize:function(){OpenLayers.Control.PanZoom.prototype.initialize.apply(this,arguments);},destroy:function(){this.div.removeChild(this.slider);this.slider=null;this.sliderEvents.destroy();this.sliderEvents=null;this.div.removeChild(this.zoombarDiv);this.zoomBarDiv=null;this.divEvents.destroy();this.divEvents=null;this.map.events.unregister("zoomend",this,this.moveZoomBar);this.map.events.unregister("changebaselayer",this,this.redraw) -OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,arguments);this.map.events.register("changebaselayer",this,this.redraw);},redraw:function(){if(this.div!=null){this.div.innerHTML="";} -this.draw();},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position.clone();this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);centered=this._addZoomBar(centered.add(0,sz.h*4+5));this._addButton("zoomout","zoom-minus-mini.png",centered,sz);return this.div;},_addZoomBar:function(centered){var imgLocation=OpenLayers.Util.getImagesLocation();var id="OpenLayers_Control_PanZoomBar_Slider"+this.map.id;var zoomsToEnd=this.map.getNumZoomLevels()-1-this.map.getZoom();var slider=OpenLayers.Util.createAlphaImageDiv(id,centered.add(-1,zoomsToEnd*this.zoomStopHeight),new OpenLayers.Size(20,9),imgLocation+"slider.png","absolute");this.slider=slider;this.sliderEvents=new OpenLayers.Events(this,slider,null,true);this.sliderEvents.register("mousedown",this,this.zoomBarDown);this.sliderEvents.register("mousemove",this,this.zoomBarDrag);this.sliderEvents.register("mouseup",this,this.zoomBarUp);this.sliderEvents.register("dblclick",this,this.doubleClick);this.sliderEvents.register("click",this,this.doubleClick);sz=new OpenLayers.Size();sz.h=this.zoomStopHeight*this.map.getNumZoomLevels();sz.w=this.zoomStopWidth;var div=null -if(OpenLayers.Util.alphaHack()){var id="OpenLayers_Control_PanZoomBar"+this.map.id;div=OpenLayers.Util.createAlphaImageDiv(id,centered,new OpenLayers.Size(sz.w,this.zoomStopHeight),imgLocation+"zoombar.png","absolute",null,"crop");div.style.height=sz.h;}else{div=OpenLayers.Util.createDiv('OpenLayers_Control_PanZoomBar_Zoombar'+this.map.id,centered,sz,imgLocation+"zoombar.png");} -this.zoombarDiv=div;this.divEvents=new OpenLayers.Events(this,div,null,true);this.divEvents.register("mousedown",this,this.divClick);this.divEvents.register("mousemove",this,this.passEventToSlider);this.divEvents.register("dblclick",this,this.doubleClick);this.divEvents.register("click",this,this.doubleClick);this.div.appendChild(div);this.startTop=parseInt(div.style.top);this.div.appendChild(slider);this.map.events.register("zoomend",this,this.moveZoomBar);centered=centered.add(0,this.zoomStopHeight*this.map.getNumZoomLevels());return centered;},passEventToSlider:function(evt){this.sliderEvents.handleBrowserEvent(evt);},divClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;var y=evt.xy.y;var top=OpenLayers.Util.pagePosition(evt.object)[1];var levels=Math.floor((y-top)/this.zoomStopHeight);this.map.zoomTo((this.map.getNumZoomLevels()-1)-levels);OpenLayers.Event.stop(evt);},zoomBarDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.map.events.register("mousemove",this,this.passEventToSlider);this.map.events.register("mouseup",this,this.passEventToSlider);this.mouseDragStart=evt.xy.clone();this.zoomStart=evt.xy.clone();this.div.style.cursor="move";this.zoombarDiv.offsets=null;OpenLayers.Event.stop(evt);},zoomBarDrag:function(evt){if(this.mouseDragStart!=null){var deltaY=this.mouseDragStart.y-evt.xy.y -var offsets=OpenLayers.Util.pagePosition(this.zoombarDiv);if((evt.clientY-offsets[1])>0&&(evt.clientY-offsets[1])0&&(evt.clientY-offsets[1])0){text=text.substring(index);} var node=OpenLayers.Util.Try(OpenLayers.Function.bind((function(){var xmldom;if(window.ActiveXObject&&!this.xmldom){xmldom=new ActiveXObject("Microsoft.XMLDOM");}else{xmldom=this.xmldom;} xmldom.loadXML(text);return xmldom;}),this),function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} -req.send(null);return req.responseXML;});return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();data=serializer.serializeToString(node);} -return data;},createElementNS:function(uri,name){var element;if(this.xmldom){element=this.xmldom.createNode(1,name,uri);}else{element=document.createElementNS(uri,name);} +req.send(null);return req.responseXML;});return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);} +doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}} +return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);} return element;},createTextNode:function(text){var node;if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0;i=0;--i){this.layers[i].destroy(false);} -this.layers=null;} -if(this.controls!=null){for(var i=this.controls.length-1;i>=0;--i){this.controls[i].destroy();} +this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,'unload',this.unloadDestroy);},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy){return false;} +OpenLayers.Event.stopObserving(window,'unload',this.unloadDestroy);this.unloadDestroy=null;if(this.updateSizeDestroy){OpenLayers.Event.stopObserving(window,'resize',this.updateSizeDestroy);}else{this.events.unregister("resize",this,this.updateSize);} +this.paddingForPopups=null;if(this.controls!=null){for(var i=this.controls.length-1;i>=0;--i){this.controls[i].destroy();} this.controls=null;} +if(this.layers!=null){for(var i=this.layers.length-1;i>=0;--i){this.layers[i].destroy(false);} +this.layers=null;} if(this.viewPortDiv){this.div.removeChild(this.viewPortDiv);} -this.viewPortDiv=null;this.events.destroy();this.events=null;},setOptions:function(options){this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);this.theme=OpenLayers._getScriptLocation()+'theme/default/style.css';OpenLayers.Util.extend(this,options);},getTileSize:function(){return this.tileSize;},getLayer:function(id){var foundLayer=null;for(var i=0;ithis.layers.length){idx=this.layers.length;} +OpenLayers.Util.removeItem(this.layers,layer);layer.removeMap(this);layer.map=null;if(this.baseLayer==layer){this.baseLayer=null;if(setNewBaseLayer){for(var i=0;ithis.layers.length){idx=this.layers.length;} if(base!=idx){this.layers.splice(base,1);this.layers.splice(idx,0,layer);for(var i=0;i=0;--i){this.removePopup(this.popups[i]);}} popup.map=this;this.popups.push(popup);var popupDiv=popup.draw();if(popupDiv){popupDiv.style.zIndex=this.Z_INDEX_BASE['Popup']+ this.popups.length;this.layerContainerDiv.appendChild(popupDiv);}},removePopup:function(popup){OpenLayers.Util.removeItem(this.popups,popup);if(popup.div){try{this.layerContainerDiv.removeChild(popup.div);} catch(e){}} popup.map=null;},getSize:function(){var size=null;if(this.size!=null){size=this.size.clone();} -return size;},updateSize:function(){this.events.element.offsets=null;var newSize=this.getCurrentSize();var oldSize=this.getSize();if(oldSize==null) -this.size=oldSize=newSize;if(!newSize.equals(oldSize)){this.size=newSize;for(var i=0;ithis.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.leftthis.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.leftthis.restrictedExtent.right){lonlat=lonlat.add(this.restrictedExtent.right- extent.right,0);} if(extent.getHeight()>this.restrictedExtent.getHeight()){lonlat=new OpenLayers.LonLat(lonlat.lon,maxCenter.lat);}else if(extent.bottomthis.restrictedExtent.top){lonlat=lonlat.add(0,this.restrictedExtent.top- extent.top);}}} -var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||!dragging){if(!dragging){this.events.triggerEvent("movestart");} +var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||!dragging){if(!this.dragging&&!noEvent){this.events.triggerEvent("movestart");} if(centerChanged){if((!zoomChanged)&&(this.center)){this.centerLayerContainer(lonlat);} this.center=lonlat.clone();} if((zoomChanged)||(this.layerContainerOrigin==null)){this.layerContainerOrigin=this.center.clone();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";} -if(zoomChanged){this.zoom=zoom;this.viewRequestID++;} -var bounds=this.getExtent();this.baseLayer.moveTo(bounds,zoomChanged,dragging);bounds=this.baseLayer.getExtent();for(var i=0;i=0)&&(zoomLevel=0)&&(zoomLevel=-this.MAX_PIXEL&&x<=this.MAX_PIXEL&&y>=-this.MAX_PIXEL&&y<=this.MAX_PIXEL);},setExtent:function(extent){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();if(!this.localResolution||resolution!=this.localResolution){this.left=-extent.left/resolution;this.top=extent.top/resolution;} var left=0;var top=0;if(this.localResolution&&resolution==this.localResolution){left=(this.left)-(-extent.left/resolution);top=(this.top)-(extent.top/resolution);} this.localResolution=resolution;var extentString=left+" "+top+" "+ -extent.getWidth()/resolution+" "+extent.getHeight()/resolution;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);},setSize:function(size){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(geometry){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType="circle";break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;} -return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;if(node._geometryClass=="OpenLayers.Geometry.Point"){if(style.externalGraphic){var id=node.getAttributeNS(null,"id");var x=parseFloat(node.getAttributeNS(null,"cx"));var y=parseFloat(node.getAttributeNS(null,"cy"));var _featureId=node._featureId;var _geometryClass=node._geometryClass;var _style=node._style;this.root.removeChild(node);var node=this.createNode("image",id);node._featureId=_featureId;node._geometryClass=_geometryClass;node._style=_style;this.root.appendChild(node);if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");} -var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",(x+xOffset).toFixed());node.setAttributeNS(null,"y",(-y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS("http://www.w3.org/1999/xlink","href",style.externalGraphic);node.setAttributeNS(null,"transform","scale(1,-1)");node.setAttributeNS(null,"style","opacity: "+opacity);}else{node.setAttributeNS(null,"r",style.pointRadius);}} +extent.getWidth()/resolution+" "+extent.getHeight()/resolution;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);},setSize:function(size){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(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType=style.externalGraphic?"image":"circle";break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;} +return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;var r=parseFloat(node.getAttributeNS(null,"r"));if(node._geometryClass=="OpenLayers.Geometry.Point"&&r){if(style.externalGraphic){var x=parseFloat(node.getAttributeNS(null,"cx"));var y=parseFloat(node.getAttributeNS(null,"cy"));if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");} +var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",(x+xOffset).toFixed());node.setAttributeNS(null,"y",(y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS("http://www.w3.org/1999/xlink","href",style.externalGraphic);node.setAttributeNS(null,"style","opacity: "+opacity);}else{node.setAttributeNS(null,"r",style.pointRadius);}} if(options.isFilled){node.setAttributeNS(null,"fill",style.fillColor);node.setAttributeNS(null,"fill-opacity",style.fillOpacity);}else{node.setAttributeNS(null,"fill","none");} if(options.isStroked){node.setAttributeNS(null,"stroke",style.strokeColor);node.setAttributeNS(null,"stroke-opacity",style.strokeOpacity);node.setAttributeNS(null,"stroke-width",style.strokeWidth);node.setAttributeNS(null,"stroke-linecap",style.strokeLinecap);}else{node.setAttributeNS(null,"stroke","none");} if(style.pointerEvents){node.setAttributeNS(null,"pointer-events",style.pointerEvents);} -if(style.cursor){node.setAttributeNS(null,"cursor",style.cursor);}},createNode:function(type,id){var node=document.createElementNS(this.xmlns,type);if(id){node.setAttributeNS(null,"id",id);} -return node;},nodeTypeCompare:function(node,type){return(type==node.nodeName);},createRenderRoot:function(){var id=this.container.id+"_svgRoot";var rendererRoot=this.nodeFactory(id,"svg");return rendererRoot;},createRoot:function(){var id=this.container.id+"_root";var root=this.nodeFactory(id,"g");root.setAttributeNS(null,"transform","scale(1, -1)");return root;},drawPoint:function(node,geometry){this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(geometry.y/resolution-this.top);var draw=true;if(x<-this.maxPixel||x>this.maxPixel){draw=false;} -if(y<-this.maxPixel||y>this.maxPixel){draw=false;} -if(draw){node.setAttributeNS(null,"cx",x);node.setAttributeNS(null,"cy",y);node.setAttributeNS(null,"r",radius);}else{this.root.removeChild(node);}},drawLineString:function(node,geometry){node.setAttributeNS(null,"points",this.getComponentsString(geometry.components));},drawLinearRing:function(node,geometry){node.setAttributeNS(null,"points",this.getComponentsString(geometry.components));},drawPolygon:function(node,geometry){var d="";var draw=true;for(var j=0;jthis.maxPixel){draw=false;} -if(y<-this.maxPixel||y>this.maxPixel){draw=false;} -if(draw){node.setAttributeNS(null,"x",x);node.setAttributeNS(null,"y",y);node.setAttributeNS(null,"width",geometry.width);node.setAttributeNS(null,"height",geometry.height);}else{node.setAttributeNS(null,"x","");node.setAttributeNS(null,"y","");node.setAttributeNS(null,"width",0);node.setAttributeNS(null,"height",0);}},drawCurve:function(node,geometry){var d=null;var draw=true;for(var i=0;ithis.maxPixel){return false;} -if(y<-this.maxPixel||y>this.maxPixel){return false;} -var string=x+","+y;return string;},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",initialize:function(containerID){if(!this.supported()){return;} -document.namespaces.add("v","urn:schemas-microsoft-com:vml");var style=document.createStyleSheet();style.addRule('v\\:*',"behavior: url(#default#VML); "+"position: relative; display: inline-block;");OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.apply(this,arguments);},supported:function(){var supported=document.namespaces;return supported;},setExtent:function(extent){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var org=extent.left/resolution+" "+ +return strings.join(",");},getShortString:function(point){var resolution=this.getResolution();var x=(point.x/resolution+this.left);var y=(this.top-point.y/resolution);if(this.inValidRange(x,y)){return x+","+y;}else{return false;}},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",initialize:function(containerID){if(!this.supported()){return;} +if(!document.namespaces.v){document.namespaces.add("v",this.xmlns);var style=document.createStyleSheet();style.addRule('v\\:*',"behavior: url(#default#VML); "+"position: absolute; display: inline-block;");} +OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.apply(this,arguments);},supported:function(){return!!(document.namespaces);},setExtent:function(extent){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var org=extent.left/resolution+" "+ extent.top/resolution;this.root.setAttribute("coordorigin",org);var size=extent.getWidth()/resolution+" "+ --extent.getHeight()/resolution;this.root.setAttribute("coordsize",size);},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.style.width=this.size.w;this.rendererRoot.style.height=this.size.h;this.root.style.width="100%";this.root.style.height="100%";},getNodeType:function(geometry){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType="v:oval";break;case"OpenLayers.Geometry.Rectangle":nodeType="v:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="v:shape";break;default:break;} -return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;if(node._geometryClass=="OpenLayers.Geometry.Point"){if(style.externalGraphic){var id=node.id;var _featureId=node._featureId;var _geometryClass=node._geometryClass;var _style=node._style;this.root.removeChild(node);var node=this.createNode("v:rect",id);var fill=this.createNode("v:fill",id+"_image");node.appendChild(fill);node._featureId=_featureId;node._geometryClass=_geometryClass;node._style=_style;this.root.appendChild(node);fill.src=style.externalGraphic;fill.type="frame";node.style.flip="y";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";} -var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=((geometry.x/resolution)+xOffset).toFixed();node.style.top=((geometry.y/resolution)-(yOffset+height)).toFixed();node.style.width=width;node.style.height=height;style.fillColor="none";style.strokeColor="none";}else{this.drawCircle(node,geometry,style.pointRadius);}} -var fillColor=(options.isFilled)?style.fillColor:"none";node.setAttribute("fillcolor",fillColor);var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('v:fill',node.id+"_fill");node.appendChild(fill);} -if(node._geometryClass=="OpenLayers.Geometry.Point"&&style.externalGraphic&&style.graphicOpacity){fill.setAttribute("opacity",style.graphicOpacity);}else if(style.fillOpacity){fill.setAttribute("opacity",style.fillOpacity);}} -var strokeColor=(options.isStroked)?style.strokeColor:"none";node.setAttribute("strokecolor",strokeColor);node.setAttribute("strokeweight",style.strokeWidth);var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){if(stroke){node.removeChild(stroke);}}else{if(!stroke){stroke=this.createNode('v:stroke',node.id+"_stroke");node.appendChild(stroke);} +-extent.getHeight()/resolution;this.root.setAttribute("coordsize",size);},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.style.width=this.size.w;this.rendererRoot.style.height=this.size.h;this.root.style.width=this.size.w;this.root.style.height=this.size.h;},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType=style.externalGraphic?"v:rect":"v:oval";break;case"OpenLayers.Geometry.Rectangle":nodeType="v:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="v:shape";break;default:break;} +return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;if(node._geometryClass=="OpenLayers.Geometry.Point"){if(style.externalGraphic){var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=((geometry.x/resolution)+xOffset).toFixed();node.style.top=((geometry.y/resolution)-(yOffset+height)).toFixed();node.style.width=width;node.style.height=height;style.fillColor="none";options.isStroked=false;}else{this.drawCircle(node,geometry,style.pointRadius);}} +if(options.isFilled){node.setAttribute("fillcolor",style.fillColor);}else{node.setAttribute("filled","false");} +var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('v:fill',node.id+"_fill");} +fill.setAttribute("opacity",style.fillOpacity);if(node._geometryClass=="OpenLayers.Geometry.Point"&&style.externalGraphic){if(style.graphicOpacity){fill.setAttribute("opacity",style.graphicOpacity);} +fill.setAttribute("src",style.externalGraphic);fill.setAttribute("type","frame");node.style.flip="y";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";}} +if(fill.parentNode!=node){node.appendChild(fill);}} +if(options.isStroked){node.setAttribute("strokecolor",style.strokeColor);node.setAttribute("strokeweight",style.strokeWidth+"px");}else{node.setAttribute("stroked","false");} +var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){if(stroke){node.removeChild(stroke);}}else{if(!stroke){stroke=this.createNode('v:stroke',node.id+"_stroke");node.appendChild(stroke);} stroke.setAttribute("opacity",style.strokeOpacity);stroke.setAttribute("endcap",!style.strokeLinecap||style.strokeLinecap=='butt'?'flat':style.strokeLinecap);} -if(style.cursor){node.style.cursor=style.cursor;}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution).toFixed(),(bbox.bottom/resolution).toFixed(),(bbox.right/resolution).toFixed(),(bbox.top/resolution).toFixed());node.style.left=scaledBox.left;node.style.top=scaledBox.top;node.style.width=scaledBox.getWidth();node.style.height=scaledBox.getHeight();node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},createNode:function(type,id){var node=document.createElement(type);if(id){node.setAttribute('id',id);} -return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} +if(style.cursor!=null){node.style.cursor=style.cursor;} +return node;},postDraw:function(node){var fillColor=node._style.fillColor;var strokeColor=node._style.strokeColor;if(fillColor=="none"&&node.getAttribute("fillcolor")!=fillColor){node.setAttribute("fillcolor",fillColor);} +if(strokeColor=="none"&&node.getAttribute("strokecolor")!=strokeColor){node.setAttribute("strokecolor",strokeColor);}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution).toFixed(),(bbox.bottom/resolution).toFixed(),(bbox.right/resolution).toFixed(),(bbox.top/resolution).toFixed());node.style.left=scaledBox.left;node.style.top=scaledBox.top;node.style.width=scaledBox.getWidth();node.style.height=scaledBox.getHeight();node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},createNode:function(type,id){var node=document.createElement(type);if(id){node.setAttribute('id',id);} +node.setAttribute('unselectable','on',0);node.onselectstart=function(){return(false);};return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} var nodeName=node.nodeName;splitIndex=nodeName.indexOf(":");if(splitIndex!=-1){nodeName=nodeName.substr(splitIndex+1);} -return(subType==nodeName);},createRenderRoot:function(){var id=this.container.id+"_vmlRoot";var rendererRoot=this.nodeFactory(id,"div");return rendererRoot;},createRoot:function(){var id=this.container.id+"_root";var root=this.nodeFactory(id,"v:group");return root;},drawPoint:function(node,geometry){this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){if(!isNaN(geometry.x)&&!isNaN(geometry.y)){var resolution=this.getResolution();node.style.left=(geometry.x/resolution).toFixed()-radius;node.style.top=(geometry.y/resolution).toFixed()-radius;var diameter=radius*2;node.style.width=diameter;node.style.height=diameter;}},drawLineString:function(node,geometry){this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path="m";for(var i=0;i0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:OpenLayers.Popup.AnchoredBubble,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}} +return this.renderTile();},renderTile:function(){if(this.imgDiv==null){this.initImgDiv();} +this.imgDiv.viewRequestID=this.layer.map.viewRequestID;this.url=this.layer.getURL(this.bounds);OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize();if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;} +return true;},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){var offset=this.layer.imageOffset;var size=this.layer.getImageSize();if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} +this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} +this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} +var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} +var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();} +if(ratio!=this.lastRatio){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);} +OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}} +this.lastRatio=ratio;},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.Util.getBrowserName()=="safari"||OpenLayers.Util.getBrowserName()=="opera");OpenLayers.Tile.WFS=OpenLayers.Class(OpenLayers.Tile,{features:null,url:null,request:null,initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=url;this.features=[];},destroy:function(){OpenLayers.Tile.prototype.destroy.apply(this,arguments);this.destroyAllFeatures();this.features=null;this.url=null;if(this.request){this.request.abort();this.request=null;}},clear:function(){this.destroyAllFeatures();},draw:function(){if(OpenLayers.Tile.prototype.draw.apply(this,arguments)){if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} +this.loadFeaturesForRegion(this.requestSuccess);}},loadFeaturesForRegion:function(success,failure){if(this.request){this.request.abort();} +this.request=OpenLayers.loadURL(this.url,null,this,success);},requestSuccess:function(request){if(this.features){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=OpenLayers.Format.XML.prototype.read(request.responseText);} +if(this.layer.vectorMode){this.layer.addFeatures(this.layer.formatObject.read(doc));}else{var resultFeatures=OpenLayers.Ajax.getElementsByTagNameNS(doc,"http://www.opengis.net/gml","gml","featureMember");this.addResults(resultFeatures);}} +if(this.events){this.events.triggerEvent("loadend");} +this.request=null;},addResults:function(results){for(var i=0;i0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:new OpenLayers.Size(180,90),layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,handlers:null,initialize:function(options){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[options]);},destroy:function(){if(!this.mapDiv){return;} +this.handlers.click.destroy();this.mapDiv.removeChild(this.extentRectangle);this.extentRectangle=null;this.rectEvents.destroy();this.rectEvents=null;this.ovmap.destroy();this.ovmap=null;this.element.removeChild(this.mapDiv);this.mapDiv=null;this.div.removeChild(this.element);this.element=null;if(this.maximizeDiv){OpenLayers.Event.stopObservingElement(this.maximizeDiv);this.div.removeChild(this.maximizeDiv);this.maximizeDiv=null;} +if(this.minimizeDiv){OpenLayers.Event.stopObservingElement(this.minimizeDiv);this.div.removeChild(this.minimizeDiv);this.minimizeDiv=null;} +this.map.events.un({"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(!(this.layers.length>0)){if(this.map.baseLayer){var layer=this.map.baseLayer.clone();this.layers=[layer];}else{this.map.events.register("changebaselayer",this,this.baseLayerDraw);return 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=1000;this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.mapDiv.appendChild(this.extentRectangle);this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);if(!this.outsideViewport){this.div.className+=" "+this.displayClass+'Container';var imgLocation=OpenLayers.Util.getImagesLocation();var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+'MaximizeButton',null,new OpenLayers.Size(18,18),img,'absolute');this.maximizeDiv.style.display='none';this.maximizeDiv.className=this.displayClass+'MaximizeButton';OpenLayers.Event.observe(this.maximizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv('OpenLayers_Control_minimizeDiv',null,new OpenLayers.Size(18,18),img,'absolute');this.minimizeDiv.style.display='none';this.minimizeDiv.className=this.displayClass+'MinimizeButton';OpenLayers.Event.observe(this.minimizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);var eventsToStop=['dblclick','mousedown'];for(var i=0;ithis.minRatio)&&(resRatio<=this.maxRatio)&&(this.ovmap.getExtent().containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;} +this.ovmap.setCenter(this.map.center,this.ovmap.getZoomForResolution(targetRes));this.updateRectToMap();},createMap:function(){var options=OpenLayers.Util.extend({controls:[],maxResolution:'auto',fallThrough:false},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,options);OpenLayers.Event.stopObserving(window,'unload',this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-left-width'))+ +parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-right-width'));this.wComp=(this.wComp)?this.wComp:2;this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-top-width'))+ +parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-bottom-width'));this.hComp=(this.hComp)?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":true,"double":false,"stopSingle":true,"stopDouble":true,"pixelTolerance":1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,true);this.rectEvents.register("mouseover",this,function(e){if(!this.handlers.drag.active&&!this.map.dragging){this.handlers.drag.activate();}});this.rectEvents.register("mouseout",this,function(e){if(!this.handlers.drag.dragging){this.handlers.drag.deactivate();}});},updateRectToMap:function(){if(this.map.units!='degrees'){if(this.ovmap.getProjection()&&(this.map.getProjection()!=this.ovmap.getProjection())){alert(OpenLayers.i18n("sameProjection"));}} +var pxBounds=this.getRectBoundsFromMapBounds(this.map.getExtent());if(pxBounds){this.setRectPxBounds(pxBounds);}},updateMapToRect:function(){var lonLatBounds=this.getMapBoundsFromRectBounds(this.rectPxBounds);this.map.panTo(lonLatBounds.getCenterLonLat());},setRectPxBounds:function(pxBounds){var top=Math.max(pxBounds.top,0);var left=Math.max(pxBounds.left,0);var bottom=Math.min(pxBounds.top+Math.abs(pxBounds.getHeight()),this.ovmap.size.h-this.hComp);var right=Math.min(pxBounds.left+pxBounds.getWidth(),this.ovmap.size.w-this.wComp);var width=Math.max(right-left,0);var height=Math.max(bottom-top,0);if(width0){this.read_wmc_OnlineResource(legend,links[0]);} +style.legend=legend;},write:function(context,options){var root=this.createElementDefaultNS("ViewContext");this.setAttributes(root,{version:this.VERSION,id:(options&&typeof options.id=="string")?options.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(root,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);root.appendChild(this.write_wmc_General(context));root.appendChild(this.write_wmc_LayerList(context));return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},createElementDefaultNS:function(name,childValue,attributes){var node=this.createElementNS(this.namespaces[this.defaultPrefix],name);if(childValue){node.appendChild(this.createTextNode(childValue));} +if(attributes){this.setAttributes(node,attributes);} +return node;},setAttributes:function(node,obj){var value;for(var name in obj){value=obj[name].toString();if(value.match(/[A-Z]/)){this.setAttributeNS(node,null,name,value);}else{node.setAttribute(name,value);}}},write_wmc_General:function(context){var node=this.createElementDefaultNS("General");if(context.size){node.appendChild(this.createElementDefaultNS("Window",null,{width:context.size.w,height:context.size.h}));} +var bounds=context.bounds;node.appendChild(this.createElementDefaultNS("BoundingBox",null,{minx:bounds.left.toPrecision(10),miny:bounds.bottom.toPrecision(10),maxx:bounds.right.toPrecision(10),maxy:bounds.top.toPrecision(10),SRS:context.projection}));node.appendChild(this.createElementDefaultNS("Title",context.title));node.appendChild(this.write_ol_MapExtension(context));return node;},write_ol_MapExtension:function(context){var node=this.createElementDefaultNS("Extension");var bounds=context.maxExtent;if(bounds){var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(10),miny:bounds.bottom.toPrecision(10),maxx:bounds.right.toPrecision(10),maxy:bounds.top.toPrecision(10)});node.appendChild(maxExtent);} +return node;},write_wmc_LayerList:function(context){var list=this.createElementDefaultNS("LayerList");var layer;for(var i=0;ithis.pixelTolerance){passes=false;}} +return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback('click',[evt]);}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;deactivated=true;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&OpenLayers.Event.isLeftClick(evt)){this.started=true;this.start=evt.xy;this.last=evt.xy;this.map.div.style.cursor="move";this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=(document.onselectstart)?document.onselectstart:function(){return true;};document.onselectstart=function(){return false;};} +propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} +return propagate;},mousemove:function(evt){if(this.started){if(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y){this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=function(){return false;};} this.last=evt.xy;}} -return true;},mouseup:function(evt){if(this.started){this.started=false;this.dragging=false;this.map.div.style.cursor="";this.up(evt);this.callback("up",[evt.xy]);this.callback("done",[evt.xy]);document.onselectstart=this.oldOnselectstart;} -return true;},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.div)){this.started=false;this.dragging=false;this.map.div.style.cursor="";this.out(evt);this.callback("out",[]);if(document.onselectstart){document.onselectstart=this.oldOnselectstart;} -this.callback("done",[evt.xy])} +return true;},mouseup:function(evt){if(this.started){var dragged=(this.start!=this.last);this.started=false;this.dragging=false;this.map.div.style.cursor="";this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);} +document.onselectstart=this.oldOnselectstart;} +return true;},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.div)){var dragged=(this.start!=this.last);this.started=false;this.dragging=false;this.map.div.style.cursor="";this.out(evt);this.callback("out",[]);if(dragged){this.callback("done",[evt.xy]);} +if(document.onselectstart){document.onselectstart=this.oldOnselectstart;}} return true;},click:function(evt){return(this.start==this.last);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;activated=true;} return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;} -return deactivated;},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{geometryTypes:null,layerIndex:null,feature:null,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},click:function(evt){var selected=this.select('click',evt);return!selected;},mousedown:function(evt){var selected=this.select('down',evt);return!selected;},mousemove:function(evt){this.select('move',evt);return true;},mouseup:function(evt){var selected=this.select('up',evt);return!selected;},dblclick:function(evt){var selected=this.select('dblclick',evt);return!selected;},select:function(type,evt){var feature=this.layer.getFeatureFromEvent(evt);var selected=false;if(feature){if(this.geometryTypes==null||(OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1)){if(!this.feature){this.callback('over',[feature]);}else if(this.feature!=feature){this.callback('out',[this.feature]);this.callback('over',[feature]);} -this.feature=feature;this.callback(type,[feature]);selected=true;}else{if(this.feature&&(this.feature!=feature)){this.callback('out',[this.feature]);this.feature=null;} -selected=false;}}else{if(this.feature){this.callback('out',[this.feature]);this.feature=null;} -selected=false;} -return selected;},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.layerIndex=this.layer.div.style.zIndex;this.layer.div.style.zIndex=this.map.Z_INDEX_BASE['Popup']-1;return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.layer&&this.layer.div){this.layer.div.style.zIndex=this.layerIndex;} -return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keypress","keyup"],eventListener:null,initialize:function(control,callbacks,options){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)){for(var i=0;i-1;},handle:function(evt){var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature){var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){this.triggerCallback(type,'out',[this.lastFeature]);this.triggerCallback(type,'in',[this.feature]);}else if(!previouslyIn||click){this.triggerCallback(type,'in',[this.feature]);} +this.lastFeature=this.feature;handled=true;}else{if(previouslyIn&&inNew||(click&&this.lastFeature)){this.triggerCallback(type,'out',[this.lastFeature]);} +this.feature=null;}}else{if(previouslyIn||(click&&this.lastFeature)){this.triggerCallback(type,'out',[this.lastFeature]);}} +return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&mode=='out'&&this.up&&this.down){var dpx=Math.sqrt(Math.pow(this.up.x-this.down.x,2)+ +Math.pow(this.up.y-this.down.y,2));if(dpx<=this.clickoutTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.layerIndex=this.layer.div.style.zIndex;this.layer.div.style.zIndex=this.map.Z_INDEX_BASE['Popup']-1;activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.layer&&this.layer.div){this.layer.div.style.zIndex=this.layerIndex;} +this.feature=null;this.lastFeature=null;this.down=null;this.up=null;deactivated=true;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:false,px:null,timerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},mousemove:function(evt){if(this.passesTolerance(evt.xy)){this.clearTimer();this.callback('move',[evt]);this.px=evt.xy;evt=OpenLayers.Util.extend({},evt);this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);} +return!this.stopMove;},mouseout:function(evt){if(OpenLayers.Util.mouseLeft(evt,this.map.div)){this.clearTimer();this.callback('move',[evt]);} +return true;},passesTolerance:function(px){var passes=true;if(this.pixelTolerance&&this.px){var dpx=Math.sqrt(Math.pow(this.px.x-px.x,2)+ +Math.pow(this.px.y-px.y,2));if(dpx=this.minResolution)&&(resolution<=this.maxResolution));} -return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changelayer");}}},initResolutions:function(){var props=new Array('projection','units','scales','resolutions','maxScale','minScale','maxResolution','minResolution','minExtent','maxExtent','numZoomLevels','maxZoomLevel');var confProps={};for(var i=0;i=this.minResolution)&&(resolution<=this.maxResolution));} +return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this});}}},initResolutions:function(){var props=new Array('projection','units','scales','resolutions','maxScale','minScale','maxResolution','minResolution','minExtent','maxExtent','numZoomLevels','maxZoomLevel');var confProps={};for(var i=0;i1){base=Math.pow((confProps.maxResolution/confProps.minResolution),(1/(confProps.numZoomLevels-1)));} +for(var i=0;iminDiff){break;} +this.minScale=this.scales[0];this.maxScale=this.scales[this.scales.length-1];this.numZoomLevels=confProps.numZoomLevels;},getResolution:function(){var zoom=this.map.getZoom();return this.getResolutionForZoom(zoom);},getExtent:function(){return this.map.calculateBounds();},getZoomForExtent:function(extent,closest){var viewSize=this.map.getSize();var idealResolution=Math.max(extent.getWidth()/viewSize.w,extent.getHeight()/viewSize.h);return this.getZoomForResolution(idealResolution,closest);},getDataExtent:function(){},getResolutionForZoom:function(zoom){zoom=Math.max(0,Math.min(zoom,this.resolutions.length-1));var resolution;if(this.map.fractionalZoom){var low=Math.floor(zoom);var high=Math.ceil(zoom);resolution=this.resolutions[high]+ +((zoom-low)*(this.resolutions[low]-this.resolutions[high]));}else{resolution=this.resolutions[Math.round(zoom)];} +return resolution;},getZoomForResolution:function(resolution,closest){var zoom;if(this.map.fractionalZoom){var lowZoom=0;var highZoom=this.resolutions.length-1;var highRes=this.resolutions[lowZoom];var lowRes=this.resolutions[highZoom];var res;for(var i=0;i=resolution){highRes=res;lowZoom=i;} +if(res<=resolution){lowRes=res;highZoom=i;break;}} +var dRes=highRes-lowRes;if(dRes>0){zoom=lowZoom+((resolution-lowRes)/dRes);}else{zoom=lowZoom;}}else{var diff;var minDiff=Number.POSITIVE_INFINITY;for(var i=0;iminDiff){break;} minDiff=diff;}else{if(this.resolutions[i]5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();} -this.removeBox();this.map.div.style.cursor="";this.callback("done",[result]);},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',persist:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:new Object();},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options={displayInLayerSwitcher:false};this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} +this.removeBox();this.map.div.style.cursor="";this.callback("done",[result]);},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',persist:false,irregular:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:new Object();},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options={displayInLayerSwitcher:false};this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)){if(this.dragging){this.cancel();} -this.map.removeLayer(this.layer,false);this.layer.destroy();if(this.feature){this.feature.destroy();} -deactivated=true;} -return deactivated;},down:function(evt){this.fixedRadius=!!(this.radius);var maploc=this.map.getLonLatFromPixel(evt.xy);this.origin=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(!this.fixedRadius){this.radius=this.map.getResolution();} +if(this.layer.map!=null){this.layer.destroy(false);if(this.feature){this.feature.destroy();}} +this.layer=null;this.feature=null;deactivated=true;} +return deactivated;},down:function(evt){this.fixedRadius=!!(this.radius);var maploc=this.map.getLonLatFromPixel(evt.xy);this.origin=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(!this.fixedRadius||this.irregular){this.radius=this.map.getResolution();} if(this.persist){this.clear();} -this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.layer.addFeatures([this.feature]);this.layer.drawFeature(this.feature,this.style);},move:function(evt){var maploc=this.map.getLonLatFromPixel(evt.xy);var point=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(this.fixedRadius){this.origin=point;}else{this.calculateAngle(point,evt);this.radius=Math.max(this.map.getResolution()/2,point.distanceTo(this.origin));} -this.modifyGeometry();this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(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 angle,dx,dy,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();} +this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.layer.addFeatures([this.feature],{silent:true});this.layer.drawFeature(this.feature,this.style);},move:function(evt){var maploc=this.map.getLonLatFromPixel(evt.xy);var point=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(this.irregular){var ry=Math.sqrt(2)*Math.abs(point.y-this.origin.y)/2;this.radius=Math.max(this.map.getResolution()/2,ry);}else if(this.fixedRadius){this.origin=point;}else{this.calculateAngle(point,evt);this.radius=Math.max(this.map.getResolution()/2,point.distanceTo(this.origin));} +this.modifyGeometry();if(this.irregular){var dx=point.x-this.origin.x;var dy=point.y-this.origin.y;var ratio;if(dy==0){ratio=dx/(this.radius*Math.sqrt(2));}else{ratio=dx/dy;} +this.feature.geometry.resize(1,this.origin,ratio);this.feature.geometry.move(dx/2,dy/2);} +this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(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 angle,dx,dy,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();ring=this.feature.geometry.components[0];} for(var i=0;i0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{var markerImg=marker.draw(px);if(!marker.drawn){this.div.appendChild(markerImg);marker.drawn=true;}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0;i0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{var markerImg=marker.draw(px);if(!marker.drawn){this.div.appendChild(markerImg);marker.drawn=true;}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0;i-1){this.unselect(feature);}else{this.select(feature);}}else{if(OpenLayers.Util.indexOf(this.layer.selectedFeatures,feature)>-1){this.unselect(feature);}else{if(this.layer.selectedFeatures){for(var i=0;i-1)){this.select(feature);}},outFeature:function(feature){if(!this.hover){return;} -this.unselect(feature);},select:function(feature){if(feature.originalStyle==null){feature.originalStyle=feature.style;} -this.layer.selectedFeatures.push(feature);feature.style=this.selectStyle;this.layer.drawFeature(feature);this.onSelect(feature);},unselect:function(feature){if(feature.originalStyle!=null){feature.style=feature.originalStyle;} -this.layer.drawFeature(feature);OpenLayers.Util.removeItem(this.layer.selectedFeatures,feature);this.onUnselect(feature);},setMap:function(map){this.handler.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);this.map.zoomToExtent(bounds);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){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,[options]);},read:function(wkt){var features,type,str;var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);}} +this.units="m";this.projection="EPSG:900913";},forwardMercator:function(lon,lat){var x=lon*20037508.34/180;var y=Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);y=y*20037508.34/180;return new OpenLayers.LonLat(x,y);},inverseMercator:function(x,y){var lon=(x/20037508.34)*180;var lat=(y/20037508.34)*180;lat=180/Math.PI*(2*Math.atan(Math.exp(lat*Math.PI/180))-Math.PI/2);return new OpenLayers.LonLat(lon,lat);},projectForward:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.forwardMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;},projectInverse:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;}};OpenLayers.Projection.addTransform("EPSG:4326","EPSG:900913",OpenLayers.Layer.SphericalMercator.projectForward);OpenLayers.Projection.addTransform("EPSG:900913","EPSG:4326",OpenLayers.Layer.SphericalMercator.projectInverse);OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,featureAdded:function(){},handlerOptions:null,initialize:function(layer,handler,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature},this.callbacks);this.layer=layer;this.handler=new handler(this,this.callbacks,this.handlerOptions);},drawFeature:function(geometry){var feature=new OpenLayers.Feature.Vector(geometry);this.layer.addFeatures([feature]);this.featureAdded(feature);},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,onSelect:function(){},onUnselect:function(){},geometryTypes:null,layer:null,callbacks:null,selectStyle:null,renderIntent:"select",handler:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;this.callbacks=OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.callbacks);var handlerOptions={geometryTypes:this.geometryTypes};this.handler=new OpenLayers.Handler.Feature(this,layer,this.callbacks,handlerOptions);},unselectAll:function(options){var feature;for(var i=this.layer.selectedFeatures.length-1;i>=0;--i){feature=this.layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(this.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});} +this.select(feature);}}},multipleSelect:function(){return this.multiple||this.handler.evt[this.multipleKey];},toggleSelect:function(){return this.toggle||this.handler.evt[this.toggleKey];},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){if(this.hover&&(OpenLayers.Util.indexOf(this.layer.selectedFeatures,feature)==-1)){this.select(feature);}},outFeature:function(feature){if(this.hover){this.unselect(feature);}},select:function(feature){this.layer.selectedFeatures.push(feature);var selectStyle=this.selectStyle||this.renderIntent;this.layer.drawFeature(feature,selectStyle);this.layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect(feature);},unselect:function(feature){this.layer.drawFeature(feature,"default");OpenLayers.Util.removeItem(this.layer.selectedFeatures,feature);this.layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect(feature);},setMap:function(map){this.handler.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){if(!this.out){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{var pixWidth=Math.abs(position.right-position.left);var pixHeight=Math.abs(position.top-position.bottom);var zoomFactor=Math.min((this.map.size.h/pixHeight),(this.map.size.w/pixWidth));var extent=this.map.getExtent();var center=this.map.getLonLatFromPixel(position.getCenterPixel());var xmin=center.lon-(extent.getWidth()/2)*zoomFactor;var xmax=center.lon+(extent.getWidth()/2)*zoomFactor;var ymin=center.lat-(extent.getHeight()/2)*zoomFactor;var ymax=center.lat+(extent.getHeight()/2)*zoomFactor;var bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);} +this.map.zoomToExtent(bounds);}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()-1);}}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){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,[options]);},read:function(wkt){var features,type,str;var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);} +if(this.internalProjection&&this.externalProjection){if(features&&features.CLASS_NAME=="OpenLayers.Feature.Vector"){features.geometry.transform(this.externalProjection,this.internalProjection);}else if(features&&typeof features=="object"){for(var i=0;i0){pieces.push(',');} geometry=collection[i].geometry;type=geometry.CLASS_NAME.split('.')[2].toLowerCase();if(!this.extract[type]){return null;} +if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} data=this.extract[type].apply(this,[geometry]);pieces.push(type.toUpperCase()+'('+data+')');} if(isCollection){pieces.push(')');} return pieces.join('');},extract:{'point':function(point){return point.x+' '+point.y;},'multipoint':function(multipoint){var array=[];for(var i=0;i0){var location=point[0].firstChild.nodeValue.split(" ");if(location.length!=2){var location=point[0].firstChild.nodeValue.split(",");}}else if(lat.length>0&&lon.length>0){var location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];}else{continue;} -location=new OpenLayers.LonLat(parseFloat(location[1]),parseFloat(location[0]));var title="Untitled";try{title=OpenLayers.Util.getNodes(itemlist[i],"title")[0].firstChild.nodeValue;} -catch(e){title="Untitled";} -var descr_nodes=null;try{descr_nodes=itemlist[i].getElementsByTagNameNS("*","description");} -catch(e){descr_nodes=itemlist[i].getElementsByTagName("description");} -if(descr_nodes.length==0){try{descr_nodes=itemlist[i].getElementsByTagNameNS("*","summary");} -catch(e){descr_nodes=itemlist[i].getElementsByTagName("summary");}} -var description="No description.";try{description=descr_nodes[0].firstChild.nodeValue;} -catch(e){description="No description.";} -try{var link=OpenLayers.Util.getNodes(itemlist[i],"link")[0].firstChild.nodeValue;} -catch(e){try{var link=OpenLayers.Util.getNodes(itemlist[i],"link")[0].getAttribute("href");} -catch(e){}} -data.icon=this.icon==null?OpenLayers.Marker.defaultIcon():this.icon.clone();data.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if((title!=null)&&(description!=null)){contentHTML='
    [x]
    ';contentHTML+='
    ';if(link)contentHTML+='';contentHTML+=title;if(link)contentHTML+='';contentHTML+='
    ';contentHTML+='
    ';contentHTML+=description;contentHTML+='
    ';data['popupContentHTML']=contentHTML;} +var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +var format=new OpenLayers.Format.GeoRSS(options);var features=format.read(doc);for(var i=0;i';} +contentHTML+=title;if(link){contentHTML+='';} +contentHTML+='';contentHTML+='
    ';contentHTML+=description;contentHTML+='
    ';data['popupContentHTML']=contentHTML;} var feature=new OpenLayers.Feature(this,location,data);this.features.push(feature);var marker=feature.createMarker();marker.events.register('click',feature,this.markerClick);this.addMarker(marker);} -this.events.triggerEvent("loadend");},markerClick:function(evt){sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0;i0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:19,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515,0.00000268220901489257],type:null,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);this.addContainerPxFunction();if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{this.mapObject=new GMap2(this.div);var poweredBy=this.div.lastChild;this.div.removeChild(poweredBy);this.pane.appendChild(poweredBy);poweredBy.className="olLayerGooglePoweredBy gmnoprint";poweredBy.style.left="";poweredBy.style.bottom="";var termsOfUse=this.div.lastChild;this.div.removeChild(termsOfUse);this.pane.appendChild(termsOfUse);termsOfUse.className="olLayerGoogleCopyright";termsOfUse.style.right="";termsOfUse.style.bottom="";}catch(e){}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);if(this.type!=null){this.map.events.register("moveend",this,this.setMapType);}},setMapType:function(){if(this.mapObject.getCenter()!=null){this.mapObject.setMapType(this.type);this.map.events.unregister("moveend",this,this.setMapType);}},onMapResize:function(){this.mapObject.checkResize();},getOLBoundsFromMapObjectBounds:function(moBounds){var olBounds=null;if(moBounds!=null){var sw=moBounds.getSouthWest();var ne=moBounds.getNorthEast();if(this.sphericalMercator){sw=this.forwardMercator(sw.lng(),sw.lat());ne=this.forwardMercator(ne.lng(),ne.lat());}else{sw=new OpenLayers.LonLat(sw.lng(),sw.lat());ne=new OpenLayers.LonLat(ne.lng(),ne.lat());} +OpenLayers.Event.stop(evt);},clearFeatures:function(){if(this.features!=null){while(this.features.length>0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:19,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515,0.00000268220901489257],type:null,sphericalMercator:false,dragObject:null,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);this.addContainerPxFunction();if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{this.mapObject=new GMap2(this.div);if(typeof this.mapObject.getDragObject=="function"){this.dragObject=this.mapObject.getDragObject();}else{this.dragPanMapObject=null;} +var poweredBy=this.div.lastChild;this.div.removeChild(poweredBy);this.pane.appendChild(poweredBy);poweredBy.className="olLayerGooglePoweredBy gmnoprint";poweredBy.style.left="";poweredBy.style.bottom="";var termsOfUse=this.div.lastChild;this.div.removeChild(termsOfUse);this.pane.appendChild(termsOfUse);termsOfUse.className="olLayerGoogleCopyright";termsOfUse.style.right="";termsOfUse.style.bottom="";}catch(e){OpenLayers.Console.error(e);}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);if(this.type!=null){this.map.events.register("moveend",this,this.setMapType);}},setMapType:function(){if(this.mapObject.getCenter()!=null){if(OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)==-1){this.mapObject.addMapType(this.type);} +this.mapObject.setMapType(this.type);this.map.events.unregister("moveend",this,this.setMapType);}},onMapResize:function(){this.mapObject.checkResize();},getOLBoundsFromMapObjectBounds:function(moBounds){var olBounds=null;if(moBounds!=null){var sw=moBounds.getSouthWest();var ne=moBounds.getNorthEast();if(this.sphericalMercator){sw=this.forwardMercator(sw.lng(),sw.lat());ne=this.forwardMercator(ne.lng(),ne.lat());}else{sw=new OpenLayers.LonLat(sw.lng(),sw.lat());ne=new OpenLayers.LonLat(ne.lng(),ne.lat());} olBounds=new OpenLayers.Bounds(sw.lon,sw.lat,ne.lon,ne.lat);} return olBounds;},getMapObjectBoundsFromOLBounds:function(olBounds){var moBounds=null;if(olBounds!=null){var sw=this.sphericalMercator?this.inverseMercator(olBounds.bottom,olBounds.left):new OpenLayers.LonLat(olBounds.bottom,olBounds.left);var ne=this.sphericalMercator?this.inverseMercator(olBounds.top,olBounds.right):new OpenLayers.LonLat(olBounds.top,olBounds.right);moBounds=new GLatLngBounds(new GLatLng(sw.lat,sw.lon),new GLatLng(ne.lat,ne.lon));} -return moBounds;},addContainerPxFunction:function(){if((typeof GMap2!="undefined")&&!GMap2.prototype.fromLatLngToContainerPixel){GMap2.prototype.fromLatLngToContainerPixel=function(gLatLng){var gPoint=this.fromLatLngToDivPixel(gLatLng);var div=this.getContainer().firstChild.firstChild;gPoint.x+=div.offsetLeft;gPoint.y+=div.offsetTop;return gPoint;};}},getWarningHTML:function(){var html="";html+="The Google Layer was unable to load correctly.
    ";html+="
    ";html+="To get rid of this message, select a new BaseLayer " -html+="in the layer switcher in the upper-right corner.
    ";html+="
    ";html+="Most likely, this is because the Google Maps library";html+=" script was either not included, or does not contain the";html+=" correct API key for your site.
    ";html+="
    ";html+="Developers: For help getting this working correctly, ";html+="=bounds.bottom-tilelat*this.buffer)||rowidx=0)&&(testCell=0)){tile=this.grid[testRow][testCell];} if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}} -for(var i=0;i-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{break;}};if(this.buffer==0){for(var r=0,rl=this.grid.length;rrows){var row=this.grid.pop();for(var i=0,l=row.length;icolumns){for(var i=0,l=this.grid.length;i-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{break;}};},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0;irows){var row=this.grid.pop();for(var i=0,l=row.length;icolumns){for(var i=0,l=this.grid.length;i'+title+'

    '+description+'

    ';} -data['overflow']=overflow||"auto";var feature=new OpenLayers.Feature(this,location,data);this.features.push(feature);var marker=feature.createMarker();if((title!=null)&&(description!=null)){marker.events.register('click',feature,this.markerClick);} -this.addMarker(marker);}}}} +maxExtent.bottom)/tileMapHeight));return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Layer.MultiMap=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[9,1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();this.RESOLUTIONS.unshift(10);}},loadMapObject:function(){try{this.mapObject=new MultimapViewer(this.div);}catch(e){}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':"MM",'layerLib':"MultiMap"});},setMapObjectCenter:function(center,zoom){this.mapObject.goToPosition(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCurrentPosition();},getMapObjectZoom:function(){return this.mapObject.getZoomFactor();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){moPixel.x=moPixel.x-(this.map.getSize().w/2);moPixel.y=moPixel.y-(this.map.getSize().h/2);return this.mapObject.getMapPositionAt(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.geoPosToContainerPixels(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lon:moLonLat.lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lat:moLonLat.lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var mmLatLon;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);mmLatLon=new MMLatLon(lonlat.lat,lonlat.lon);}else{mmLatLon=new MMLatLon(lat,lon);} +return mmLatLon;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new MMPoint(x,y);},CLASS_NAME:"OpenLayers.Layer.MultiMap"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(name,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=new Array();},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null;},loadText:function(){if(!this.loaded){if(this.location!=null){var onFail=function(e){this.events.triggerEvent("loadend");};this.events.triggerEvent("loadstart");OpenLayers.loadURL(this.location,null,this,this.parseData,onFail);this.loaded=true;}}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.events.triggerEvent("loadstart");this.loadText();}},parseData:function(ajaxRequest){var text=ajaxRequest.responseText;var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +var parser=new OpenLayers.Format.Text(options);features=parser.read(text);for(var i=0;i'+feature.attributes.title+''+'

    '+feature.attributes.description+'

    ';} +data['overflow']=feature.attributes.overflow||"auto";var markerFeature=new OpenLayers.Feature(this,location,data);this.features.push(markerFeature);var marker=markerFeature.createMarker();if((feature.attributes.title!=null)&&(feature.attributes.description!=null)){marker.events.register('click',markerFeature,this.markerClick);} +this.addMarker(marker);} this.events.triggerEvent("loadend");},markerClick:function(evt){var sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0;i0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:false,isFixed:false,isVector:true,features:null,selectedFeatures:null,reportError:true,style:null,renderers:['SVG','VML'],renderer:null,geometryType:null,drawn:false,initialize:function(name,options){var defaultStyle=OpenLayers.Feature.Vector.style['default'];this.style=OpenLayers.Util.extend({},defaultStyle);OpenLayers.Layer.prototype.initialize.apply(this,arguments);if(!this.renderer||!this.renderer.supported()){this.assignRenderer();} -if(!this.renderer||!this.renderer.supported()){this.renderer=null;this.displayError();} -this.features=[];this.selectedFeatures=[];},destroy:function(){OpenLayers.Layer.prototype.destroy.apply(this,arguments);this.destroyFeatures();this.features=null;this.selectedFeatures=null;if(this.renderer){this.renderer.destroy();} -this.renderer=null;this.geometryType=null;this.drawn=null;},assignRenderer:function(){for(var i=0;i=0;i--){var feature=features[i];this.features=OpenLayers.Util.removeItem(this.features,feature);if(feature.geometry){this.renderer.eraseGeometry(feature.geometry);} -if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}}},destroyFeatures:function(){this.selectedFeatures=[];for(var i=this.features.length-1;i>=0;i--){this.features[i].destroy();}},drawFeature:function(feature,style){if(style==null){if(feature.style){style=feature.style;}else{style=this.style;}} -this.renderer.drawFeature(feature,style);},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");return null;} -var featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},getFeatureById:function(featureId){var feature=null;for(var i=0;i0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Layer.VirtualEarth=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){var veDiv=OpenLayers.Util.createDiv(this.name);var sz=this.map.getSize();veDiv.style.width=sz.w;veDiv.style.height=sz.h;this.div.appendChild(veDiv);try{this.mapObject=new VEMap(this.name);}catch(e){} +if(this.mapObject!=null){try{this.mapObject.LoadMap(null,null,this.type,true);this.mapObject.AttachEvent("onmousedown",function(){return true;});}catch(e){} +this.mapObject.HideDashboard();} +if(!this.mapObject||!this.mapObject.vemapcontrol||!this.mapObject.vemapcontrol.PanMap||(typeof this.mapObject.vemapcontrol.PanMap!="function")){this.dragPanMapObject=null;}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'VE','layerLib':'VirtualEarth'});},setMapObjectCenter:function(center,zoom){this.mapObject.SetCenterAndZoom(center,zoom);},getMapObjectCenter:function(){return this.mapObject.GetCenter();},dragPanMapObject:function(dX,dY){this.mapObject.vemapcontrol.PanMap(dX,-dY);},getMapObjectZoom:function(){return this.mapObject.GetZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.PixelToLatLong(moPixel.x,moPixel.y);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.LatLongToPixel(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lon:moLonLat.Longitude;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lat:moLonLat.Latitude;},getMapObjectLonLatFromLonLat:function(lon,lat){var veLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);veLatLong=new VELatLong(lonlat.lat,lonlat.lon);}else{veLatLong=new VELatLong(lat,lon);} +return veLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new Msn.VE.Pixel(x,y);},CLASS_NAME:"OpenLayers.Layer.VirtualEarth"});OpenLayers.Layer.Yahoo=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:15,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject=new YMap(this.div,this.type,size);this.mapObject.disableKeyControls();this.mapObject.disableDragMap();if(!this.mapObject.moveByXY||(typeof this.mapObject.moveByXY!="function")){this.dragPanMapObject=null;}}catch(e){}},onMapResize:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject.resizeTo(size);}catch(e){}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);this.map.events.register("moveend",this,this.fixYahooEventPane);},fixYahooEventPane:function(){var yahooEventPane=OpenLayers.Util.getElement("ygddfdiv");if(yahooEventPane!=null){if(yahooEventPane.parentNode!=null){yahooEventPane.parentNode.removeChild(yahooEventPane);} +this.map.events.unregister("moveend",this,this.fixYahooEventPane);}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'Yahoo','layerLib':'Yahoo'});},getOLZoomFromMapObjectZoom:function(moZoom){var zoom=null;if(moZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getOLZoomFromMapObjectZoom.apply(this,[moZoom]);zoom=18-zoom;} return zoom;},getMapObjectZoomFromOLZoom:function(olZoom){var zoom=null;if(olZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getMapObjectZoomFromOLZoom.apply(this,[olZoom]);zoom=18-zoom;} -return zoom;},setMapObjectCenter:function(center,zoom){this.mapObject.drawZoomAndCenter(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCenterLatLon();},getMapObjectZoom:function(){return this.mapObject.getZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.convertXYLatLon(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.convertLatLonXY(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lon:moLonLat.Lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lat:moLonLat.Lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var yLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);yLatLong=new YGeoPoint(lonlat.lat,lonlat.lon);}else{yLatLong=new YGeoPoint(lat,lon);} -return yLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new YCoordPoint(x,y);},getMapObjectSizeFromOLSize:function(olSize){return new YSize(olSize.w,olSize.h);},CLASS_NAME:"OpenLayers.Layer.Yahoo"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,keyboardHandler:null,deleteCodes:null,virtualStyle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(layer,options){this.layer=layer;this.vertices=[];this.virtualVertices=[];this.styleVirtual=OpenLayers.Util.extend({},this.layer.style);this.styleVirtual.fillOpacity=0.3;this.styleVirtual.strokeOpacity=0.3;this.deleteCodes=[46,100];OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!(this.deleteCodes instanceof Array)){this.deleteCodes=[this.deleteCodes];} -var control=this;var selectOptions={geometryTypes:this.geometryTypes,onSelect:function(feature){control.selectFeature.apply(control,[feature]);},onUnselect:function(feature){control.unselectFeature.apply(control,[feature]);}};this.selectControl=new OpenLayers.Control.SelectFeature(layer,selectOptions);var dragOptions={geometryTypes:["OpenLayers.Geometry.Point"],snappingOptions:this.snappingOptions,onStart:function(feature,pixel){control.dragStart.apply(control,[feature,pixel]);},onDrag:function(feature){control.dragVertex.apply(control,[feature]);},onComplete:function(feature){control.dragComplete.apply(control,[feature]);}};this.dragControl=new OpenLayers.Control.DragFeature(layer,dragOptions);var keyboardOptions={keypress:this.handleKeypress};this.keyboardHandler=new OpenLayers.Handler.Keyboard(this,keyboardOptions);},destroy:function(){this.layer=null;this.selectControl.destroy();this.dragControl.destroy();this.keyboardHandler.destroy();OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return(this.selectControl.activate()&&this.keyboardHandler.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){var deactivated=false;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices);this.layer.removeFeatures(this.virtualVertices);this.vertices=[];this.dragControl.deactivate();if(this.feature){this.selectControl.unselect.apply(this.selectControl,[this.feature]);} -this.selectControl.deactivate();this.keyboardHandler.deactivate();deactivated=true;} -return deactivated;},selectFeature:function(feature){this.feature=feature;this.resetVertices();this.dragControl.activate();this.onModificationStart(this.feature);},unselectFeature:function(feature){this.layer.removeFeatures(this.vertices);this.layer.removeFeatures(this.virtualVertices);this.vertices=[];this.virtualVertices=[];this.feature=null;this.dragControl.deactivate();this.onModificationEnd(feature);},dragStart:function(feature,pixel){if(feature!=this.feature&&OpenLayers.Util.indexOf(this.vertices,feature)==-1&&OpenLayers.Util.indexOf(this.virtualVertices,feature)==-1){if(this.feature){this.selectControl.clickFeature.apply(this.selectControl,[this.feature]);} -if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)!=-1){this.selectControl.clickFeature.apply(this.selectControl,[feature]);this.dragControl.overFeature.apply(this.dragControl,[feature]);this.dragControl.lastPixel=pixel;this.dragControl.dragHandler.started=true;this.dragControl.dragHandler.start=pixel;this.dragControl.dragHandler.last=pixel;}}},dragVertex:function(vertex){if(this.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){if(this.feature!=vertex){this.feature=vertex;}}else{if(OpenLayers.Util.indexOf(this.virtualVertices,vertex)!=-1){vertex.geometry.parent.addComponent(vertex.geometry,vertex._index);delete vertex._index;OpenLayers.Util.removeItem(this.virtualVertices,vertex);this.layer.removeFeatures(vertex);}} -this.layer.drawFeature(this.feature,this.selectControl.selectStyle);this.layer.removeFeatures(this.virtualVertices);this.layer.drawFeature(vertex);},dragComplete:function(vertex){this.resetVertices();this.onModification(this.feature);},resetVertices:function(){if(this.vertices.length>0){this.layer.removeFeatures(this.vertices);this.vertices=[];} +return zoom;},setMapObjectCenter:function(center,zoom){this.mapObject.drawZoomAndCenter(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCenterLatLon();},dragPanMapObject:function(dX,dY){this.mapObject.moveByXY({'x':-dX,'y':dY});},getMapObjectZoom:function(){return this.mapObject.getZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.convertXYLatLon(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.convertLatLonXY(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lon:moLonLat.Lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lat:moLonLat.Lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var yLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);yLatLong=new YGeoPoint(lonlat.lat,lonlat.lon);}else{yLatLong=new YGeoPoint(lat,lon);} +return yLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new YCoordPoint(x,y);},getMapObjectSizeFromOLSize:function(olSize){return new YSize(olSize.w,olSize.h);},CLASS_NAME:"OpenLayers.Layer.Yahoo"});OpenLayers.Style=OpenLayers.Class({name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,propertyStyles:null,initialize:function(style,options){this.rules=[];this.setDefaultStyle(style||OpenLayers.Feature.Vector.style["default"]);OpenLayers.Util.extend(this,options);},destroy:function(){for(var i=0;i0){appliedRules=true;for(var i=0;i0&&appliedRules==false){style.display="none";}else{style.display="";} +return style;},applySymbolizer:function(rule,style,feature){var symbolizerPrefix=feature.geometry?this.getSymbolizerPrefix(feature.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];var symbolizer=rule.symbolizer[symbolizerPrefix]||rule.symbolizer;return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=this.context||feature.attributes||feature.data;for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature);} +return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0;i0){this.layer.destroyFeatures(this.virtualVertices);this.virtualVertices=[];} +this.layer.drawFeature(this.feature,this.selectControl.renderIntent);} +this.layer.drawFeature(vertex);},dragComplete:function(vertex){this.resetVertices();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature});},resetVertices:function(){if(this.dragControl.feature){this.dragControl.outFeature(this.dragControl.feature);} +if(this.vertices.length>0){this.layer.removeFeatures(this.vertices);this.vertices=[];} if(this.virtualVertices.length>0){this.layer.removeFeatures(this.virtualVertices);this.virtualVertices=[];} -if(this.feature&&this.feature.geometry.CLASS_NAME!="OpenLayers.Geometry.Point"){this.collectVertices(this.feature.geometry);this.layer.addFeatures(this.vertices);this.layer.addFeatures(this.virtualVertices);}},handleKeypress:function(code){if(this.feature&&OpenLayers.Util.indexOf(this.deleteCodes,code)!=-1){var vertex=this.dragControl.feature;if(vertex&&OpenLayers.Util.indexOf(this.vertices,vertex)!=-1){vertex.geometry.parent.removeComponent(vertex.geometry);this.layer.drawFeature(this.feature,this.selectControl.selectStyle);this.resetVertices();this.onModification(this.feature);}}},collectVertices:function(){this.vertices=[];this.virtualVirtices=[];var control=this;function collectComponentVertices(geometry){var i,vertex,component;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){vertex=new OpenLayers.Feature.Vector(geometry);control.vertices.push(vertex);}else{for(i=0;i=bounds.bottom-tilelat*this.buffer||rowidx=0&&along1<=1&&along2>=0&&along2<=1){if(!point){intersection=true;}else{var x=seg1.x1+(along1*x12_11);var y=seg1.y1+(along1*y12_11);intersection=new OpenLayers.Geometry.Point(x,y);}}} +return intersection;};OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,units:null,resolution:OpenLayers.DOTS_PER_INCH,DEFAULT_PARAMS:{i:'jpeg',map:''},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=(params?params:{});if(params){OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);}},getURL:function(bounds){bounds=this.adjustBounds(bounds);var mapRes=this.map.getResolution();var scale=Math.round((this.map.getScale()*10000))/10000;var pX=Math.round(bounds.left/mapRes);var pY=-Math.round(bounds.top/mapRes);return this.getFullRequestString({t:pY,l:pX,s:scale});},addTile:function(bounds,position){var url=this.getURL(bounds);return new OpenLayers.Tile.Image(this,position,bounds,url,this.tileSize);},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=tilecol*tilelon;var offsetlat=bounds.top;var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-(tilerowremain+1)*this.tileSize.h;var tileoffsetlat=tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.options);} obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();} -obj.grid=[];return obj;},getTileBounds:function(viewPortPx){var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=tileMapWidth*Math.floor(mapPoint.lon/tileMapWidth);var tileBottom=tileMapHeight*Math.floor(mapPoint.lat/tileMapHeight);return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);if(arguments.length>0){OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);} -if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.params.transparent!="true")&&(this.params.transparent!=true));}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.options);} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var extent=[bounds.left,bounds.bottom,bounds.right,bounds.top];var imageSize=this.getImageSize();var url=this.getFullRequestString({mapext:extent,imgext:extent,map_size:[imageSize.w,imageSize.h],imgx:imageSize.w/2,imgy:imageSize.h/2,imgxy:[imageSize.w,imageSize.h]});return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];} -var requestString=url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} +obj.grid=[];return obj;},getTileBounds:function(viewPortPx){var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=tileMapWidth*Math.floor(mapPoint.lon/tileMapWidth);var tileBottom=tileMapHeight*Math.floor(mapPoint.lat/tileMapHeight);return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,singleTile:false,TILE_PARAMS:{operation:'GETTILEIMAGE',version:'1.2.0'},SINGLE_TILE_PARAMS:{operation:'GETMAPIMAGE',format:'PNG',locale:'en',clip:'1',version:'1.0.0'},defaultSize:new OpenLayers.Size(300,300),initialize:function(name,url,params,options){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.transparent!="true")&&(this.transparent!=true));} +if(this.singleTile){OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS);}else{OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS);this.setTileSize(this.defaultSize);}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.options);} +obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){var url;var center=bounds.getCenterLonLat();var mapSize=this.map.getCurrentSize();if(this.singleTile){var params={};params.setdisplaydpi=OpenLayers.DOTS_PER_INCH;params.setdisplayheight=mapSize.h*this.ratio;params.setdisplaywidth=mapSize.w*this.ratio;params.setviewcenterx=center.lon;params.setviewcentery=center.lat;params.setviewscale=this.map.getScale();if(!this.isBaseLayer){this.params.operation="GETDYNAMICMAPOVERLAYIMAGE";var getVisParams={};getVisParams.operation="GETVISIBLEMAPEXTENT";getVisParams.version="1.0.0";getVisParams.session=this.params.session;getVisParams.mapName=this.params.mapName;getVisParams.format='text/xml';getVisParams=OpenLayers.Util.extend(getVisParams,params);new OpenLayers.Ajax.Request(this.url,{parameters:getVisParams,method:'get',asynchronous:false});} +url=this.getFullRequestString(params);}else{var currentRes=this.map.getResolution();var colidx=Math.floor((bounds.left-this.maxExtent.left)/currentRes);colidx=Math.round(colidx/this.tileSize.w);var rowidx=Math.floor((this.maxExtent.top-bounds.top)/currentRes);rowidx=Math.round(rowidx/this.tileSize.h);url=this.getFullRequestString({tilecol:colidx,tilerow:rowidx,scaleindex:this.resolutions.length-this.map.zoom-1});} +return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];} +var requestString=url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getArgs(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} var paramsString=OpenLayers.Util.getParameterString(allParams);paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}} +return requestString;},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-extent.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=extent.left+tilecol*tilelon;var offsetlat=extent.top-bounds.top+tilelat;var tilerow=Math.floor(offsetlat/tilelat)-this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=tilerowremain*this.tileSize.h;var tileoffsetlat=extent.top-tilelat*tilerow;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);if(arguments.length>0){OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);} +if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.params.transparent!="true")&&(this.params.transparent!=true));}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.options);} +obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var extent=[bounds.left,bounds.bottom,bounds.right,bounds.top];var imageSize=this.getImageSize();var url=this.getFullRequestString({mapext:extent,imgext:extent,map_size:[imageSize.w,imageSize.h],imgx:imageSize.w/2,imgy:imageSize.h/2,imgxy:[imageSize.w,imageSize.h]});return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(url instanceof Array){url=this.selectUrl(paramsString,url);} +var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} +paramsString=OpenLayers.Util.getParameterString(allParams);var requestString=url;paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}} return requestString;},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",isBaseLayer:true,tileOrigin:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,url,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TMS(this.name,this.url,this.options);} obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((bounds.bottom-this.tileOrigin.lat)/(res*this.tileSize.h));var z=this.map.getZoom();var path=this.serviceVersion+"/"+this.layername+"/"+z+"/"+x+"/"+y+"."+this.type;var url=this.url;if(url instanceof Array){url=this.selectUrl(path,url);} -return url+path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,tileOrigin:null,format:'image/png',initialize:function(name,url,layername,options){options=OpenLayers.Util.extend({maxResolution:180/256},options);this.layername=layername;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[name,url,{},options]);this.extension=this.format.split('/')[1].toLowerCase();this.extension=(this.extension=='jpeg')?'jpg':this.extension;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TileCache(this.name,this.url,this.options);} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var res=this.map.getResolution();var bbox=this.maxExtent;var size=this.tileSize;var tileX=Math.floor((bounds.left-bbox.left)/(res*size.w));var tileY=Math.floor((bounds.bottom-bbox.bottom)/(res*size.h));var tileZ=this.map.zoom;function zeroPad(number,length){number=String(number);var zeros=[];for(var i=0;i=OpenLayers.Style.createLiteral(this.minScaleDenominator,context);} +if(applies&&this.maxScaleDenominator){applies=scale0){this.setBounds(this.components[0].getBounds());for(var i=1;i-1)){if(index!=null&&(index=0;--i){this.removeComponent(components[i]);}},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();},getLength:function(){var length=0.0;for(var i=0;i0)){area+=Math.abs(this.components[0].getArea());for(var i=1;i=0;i--){var feature=features[i];this.features=OpenLayers.Util.removeItem(this.features,feature);if(feature.geometry){this.renderer.eraseGeometry(feature.geometry);} +if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}}},destroyFeatures:function(features){var all=(features==undefined);if(all){features=this.features;this.selectedFeatures=[];} +this.eraseFeatures(features);var feature;for(var i=features.length-1;i>=0;i--){feature=features[i];if(!all){OpenLayers.Util.removeItem(this.selectedFeatures,feature);} +feature.destroy();}},drawFeature:function(feature,style){if(typeof style!="object"){var renderIntent=typeof style=="string"?style:feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}} +this.renderer.drawFeature(feature,style);},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;} +var featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},getFeatureById:function(featureId){var feature=null;for(var i=0;i=this.lowerBoundary;result=result&&context[this.property]<=this.upperBoundary;return result;case OpenLayers.Rule.Comparison.LIKE:var regexp=new RegExp(this.value,"gi");return regexp.test(context[this.property]);}},value2regex:function(wildCard,singleChar,escapeChar){if(wildCard=="."){var msg="'.' is an unsupported wildCard character for "+"OpenLayers.Rule.Comparison";OpenLayers.Console.error(msg);return null;} +wildCard=wildCard?wildCard:"*";singleChar=singleChar?singleChar:".";escapeChar=escapeChar?escapeChar:"!";this.value=this.value.replace(new RegExp("\\"+escapeChar,"g"),"\\");this.value=this.value.replace(new RegExp("\\"+singleChar,"g"),".");this.value=this.value.replace(new RegExp("\\"+wildCard,"g"),".*");this.value=this.value.replace(new RegExp("\\\\.\\*","g"),"\\"+wildCard);this.value=this.value.replace(new RegExp("\\\\\\.","g"),"\\"+singleChar);return this.value;},regex2value:function(){var value=this.value;value=value.replace(/!/g,"!!");value=value.replace(/(\\)?\\\./g,function($0,$1){return $1?$0:"!.";});value=value.replace(/(\\)?\\\*/g,function($0,$1){return $1?$0:"!*";});value=value.replace(/\\\\/g,"\\");value=value.replace(/\.\*/g,"*");return value;},binaryCompare:function(context,property,value){switch(this.type){case OpenLayers.Rule.Comparison.EQUAL_TO:return context[property]==value;case OpenLayers.Rule.Comparison.NOT_EQUAL_TO:return context[property]!=value;case OpenLayers.Rule.Comparison.LESS_THAN:return context[property]value;case OpenLayers.Rule.Comparison.LESS_THAN_OR_EQUAL_TO:return context[property]<=value;case OpenLayers.Rule.Comparison.GREATER_THAN_OR_EQUAL_TO:return context[property]>=value;}},CLASS_NAME:"OpenLayers.Rule.Comparison"});OpenLayers.Rule.Comparison.EQUAL_TO="==";OpenLayers.Rule.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Rule.Comparison.LESS_THAN="<";OpenLayers.Rule.Comparison.GREATER_THAN=">";OpenLayers.Rule.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Rule.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Rule.Comparison.BETWEEN="..";OpenLayers.Rule.Comparison.LIKE="~";OpenLayers.Rule.FeatureId=OpenLayers.Class(OpenLayers.Rule,{fids:null,initialize:function(options){this.fids=[];OpenLayers.Rule.prototype.initialize.apply(this,[options]);},evaluate:function(feature){if(!OpenLayers.Rule.prototype.evaluate.apply(this,arguments)){return false;} +for(var i=0;i0)){area+=Math.abs(this.components[0].getArea());for(var i=1;i0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i1)){for(var i=1;i2)){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}},CLASS_NAME:"OpenLayers.Geometry.LineString"});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:true,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)};OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +return true;},mouseup:function(evt){if(this.drawing){this.finalize();return false;}else{return true;}},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Layer.GML=OpenLayers.Class(OpenLayers.Layer.Vector,{loaded:false,format:null,formatOptions:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);this.url=url;},setVisibility:function(visibility,noEvent){OpenLayers.Layer.Vector.prototype.setVisibility.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadGML();}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.events.triggerEvent("loadstart");this.loadGML();}},loadGML:function(){if(!this.loaded){var results=OpenLayers.loadURL(this.url,null,this,this.requestSuccess,this.requestFailure);this.loaded=true;}},setUrl:function(url){this.url=url;this.destroyFeatures();this.loaded=false;this.events.triggerEvent("loadstart");this.loadGML();},requestSuccess:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} +var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +var gml=this.format?new this.format(options):new OpenLayers.Format.GML(options);this.addFeatures(gml.read(doc));this.events.triggerEvent("loadend");},requestFailure:function(request){alert(OpenLayers.i18n("errorLoadingGML",{'url':this.url}));this.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Layer.GML"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},addNodes:function(pointFeatures){if(pointFeatures.length<2){OpenLayers.Console.error("At least two point features have to be added to create"+"a line from");return;} +var lines=new Array(pointFeatures.length-1);var pointFeature,startPoint,endPoint;for(var i=0;i0){var attributes=(this.dataFrom!=null)?(pointFeatures[i+this.dataFrom].data||pointFeatures[i+this.dataFrom].attributes):null;var line=new OpenLayers.Geometry.LineString([startPoint,endPoint]);lines[i-1]=new OpenLayers.Feature.Vector(line,attributes);} +startPoint=endPoint;} +this.addFeatures(lines);},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.dataFrom={'SOURCE_NODE':-1,'TARGET_NODE':0};OpenLayers.Layer.WFS=OpenLayers.Class(OpenLayers.Layer.Vector,OpenLayers.Layer.Markers,{isBaseLayer:false,tile:null,ratio:2,DEFAULT_PARAMS:{service:"WFS",version:"1.0.0",request:"GetFeature"},featureClass:null,format:null,formatObject:null,formatOptions:null,vectorMode:true,encodeBBOX:false,extractAttributes:false,initialize:function(name,url,params,options){if(options==undefined){options={};} +if(options.featureClass||!OpenLayers.Layer.Vector||!OpenLayers.Feature.Vector){this.vectorMode=false;} +OpenLayers.Util.extend(options,{'reportError':false});var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);if(!this.renderer||!this.vectorMode){this.vectorMode=false;if(!options.featureClass){options.featureClass=OpenLayers.Feature.WFS;} +OpenLayers.Layer.Markers.prototype.initialize.apply(this,newArguments);} +if(this.params&&this.params.typename&&!this.options.typename){this.options.typename=this.params.typename;} +if(!this.options.geometry_column){this.options.geometry_column="the_geom";} +this.params=params;OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));this.url=url;},destroy:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.destroy.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);} +if(this.tile){this.tile.destroy();} +this.tile=null;this.ratio=null;this.featureClass=null;this.format=null;if(this.formatObject&&this.formatObject.destroy){this.formatObject.destroy();} +this.formatObject=null;this.formatOptions=null;this.vectorMode=null;this.encodeBBOX=null;this.extractAttributes=null;},setMap:function(map){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);var options={'extractAttributes':this.extractAttributes};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +this.formatObject=this.format?new this.format(options):new OpenLayers.Format.GML(options);}else{OpenLayers.Layer.Markers.prototype.setMap.apply(this,arguments);}},moveTo:function(bounds,zoomChanged,dragging){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);} +if(dragging){return false;} +if(zoomChanged){if(this.vectorMode){this.renderer.clear();}} +if(this.options.minZoomLevel){OpenLayers.Console.warn(OpenLayers.i18n('minZoomLevelError'));if(this.map.getZoom()0){rule.rules.push(new OpenLayers.Rule.FeatureId({fids:filter.fids}));} +if(filter.rules.length>0){rule.rules=rule.rules.concat(filter.rules);}},"FeatureId":function(node,filter){var fid=node.getAttribute("fid");if(fid){filter.fids.push(fid);}},"And":function(node,filter){var rule=new OpenLayers.Rule.Logical({type:OpenLayers.Rule.Logical.AND});rule.fids=[];this.readChildNodes(node,rule);if(rule.fids.length>0){rule.rules.push(new OpenLayers.Rule.FeatureId({fids:rule.fids}));} +delete rule.fids;filter.rules.push(rule);},"Or":function(node,filter){var rule=new OpenLayers.Rule.Logical({type:OpenLayers.Rule.Logical.OR});rule.fids=[];this.readChildNodes(node,rule);if(rule.fids.length>0){rule.rules.push(new OpenLayers.Rule.FeatureId({fids:rule.fids}));} +delete rule.fids;filter.rules.push(rule);},"Not":function(node,filter){var rule=new OpenLayers.Rule.Logical({type:OpenLayers.Rule.Logical.NOT});rule.fids=[];this.readChildNodes(node,rule);if(rule.fids.length>0){rule.rules.push(new OpenLayers.Rule.FeatureId({fids:rule.fids}));} +delete rule.fids;filter.rules.push(rule);},"PropertyIsEqualTo":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.EQUAL_TO});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsNotEqualTo":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.NOT_EQUAL_TO});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsLessThan":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.LESS_THAN});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsGreaterThan":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.GREATER_THAN});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsLessThanOrEqualTo":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsGreaterThanOrEqualTo":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsBetween":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.BETWEEN});this.readChildNodes(node,rule);filter.rules.push(rule);},"PropertyIsLike":function(node,filter){var rule=new OpenLayers.Rule.Comparison({type:OpenLayers.Rule.Comparison.LIKE});this.readChildNodes(node,rule);var wildCard=node.getAttribute("wildCard");var singleChar=node.getAttribute("singleChar");var esc=node.getAttribute("escape");rule.value2regex(wildCard,singleChar,esc);filter.rules.push(rule);},"Literal":function(node,obj){obj.value=this.getChildValue(node);},"PropertyName":function(node,rule){rule.property=this.getChildValue(node);},"LowerBoundary":function(node,rule){rule.lowerBoundary=this.readOgcExpression(node);},"UpperBoundary":function(node,rule){rule.upperBoundary=this.readOgcExpression(node);}}},readOgcExpression:function(node){var obj={};this.readChildNodes(node,obj);var value=obj.value;if(!value){value=this.getChildValue(node);} +return value;},cssMap:{"stroke":"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","fill":"fillColor","fill-opacity":"fillOpacity"},getCssProperty:function(sym){var css=null;for(var prop in this.cssMap){if(this.cssMap[prop]==sym){css=prop;break;}} +return css;},getGraphicFormat:function(href){var format,regex;for(var key in this.graphicFormats){if(this.graphicFormats[key].test(href)){format=key;break;}} +return format||this.defautlGraphicFormat;},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\.jpe?g$/i,"image/gif":/\.gif$/i,"image/png":/\.png$/i},write:function(sld){return this.writers.sld.StyledLayerDescriptor.apply(this,[sld]);},writers:{"sld":{"StyledLayerDescriptor":function(sld){var root=this.createElementNSPlus("StyledLayerDescriptor",{attributes:{"version":this.VERSION,"xsi:schemaLocation":this.schemaLocation}});if(sld.name){this.writeNode(root,"Name",sld.name);} +if(sld.title){this.writeNode(root,"Title",sld.title);} +if(sld.description){this.writeNode(root,"Abstract",sld.description);} +for(var name in sld.namedLayers){this.writeNode(root,"NamedLayer",sld.namedLayers[name]);} +return root;},"Name":function(name){return this.createElementNSPlus("Name",{value:name});},"Title":function(title){return this.createElementNSPlus("Title",{value:title});},"Abstract":function(description){return this.createElementNSPlus("Abstract",{value:description});},"NamedLayer":function(layer){var node=this.createElementNSPlus("NamedLayer");this.writeNode(node,"Name",layer.name);if(layer.namedStyles){for(var i=0;i":"PropertyIsGreaterThan","<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike"},getNamespacePrefix:function(uri){var prefix=null;if(uri==null){prefix=this.namespaces[this.defaultPrefix];}else{var gotPrefix=false;for(prefix in this.namespaces){if(this.namespaces[prefix]==uri){gotPrefix=true;break;}} +if(!gotPrefix){prefix=null;}} +return prefix;},readChildNodes:function(node,obj){var children=node.childNodes;var child,group,reader,prefix,local;for(var i=0;i0){prefix=name.substring(0,split);local=name.substring(split+1);}else{prefix=this.getNamespacePrefix(parent.namespaceURI);local=name;} +var child=this.writers[prefix][local].apply(this,[obj]);parent.appendChild(child);return child;},createElementNSPlus:function(name,options){options=options||{};var loc=name.indexOf(":");var uri=options.uri||this.namespaces[options.prefix];if(!uri){loc=name.indexOf(":");uri=this.namespaces[name.substring(0,loc)];} +if(!uri){uri=this.namespaces[this.defaultPrefix];} +var node=this.createElementNS(uri,name);if(options.attributes){this.setAttributes(node,options.attributes);} +if(options.value){node.appendChild(this.createTextNode(options.value));} +return node;},setAttributes:function(node,obj){var value,loc,alias,uri;for(var name in obj){value=obj[name].toString();uri=this.namespaces[name.substring(0,name.indexOf(":"))]||null;this.setAttributeNS(node,uri,name,value);}},CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.MultiPoint.prototype.initialize.apply(this,arguments);},getLength:function(){var length=0.0;if(this.components&&(this.components.length>1)){for(var i=1;i2)){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}},intersects:function(geometry){var intersect=false;var type=geometry.CLASS_NAME;if(type=="OpenLayers.Geometry.LineString"||type=="OpenLayers.Geometry.LinearRing"||type=="OpenLayers.Geometry.Point"){var segs1=this.getSortedSegments();var segs2;if(type=="OpenLayers.Geometry.Point"){segs2=[{x1:geometry.x,y1:geometry.y,x2:geometry.x,y2:geometry.y}];}else{segs2=geometry.getSortedSegments();} +var seg1,seg1x1,seg1x2,seg1y1,seg1y2,seg2,seg2y1,seg2y2;outer:for(var i=0;iseg1x2){break;} +if(seg2.x2Math.max(seg1y1,seg1y2)){continue;} +if(Math.max(seg2y1,seg2y2)0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);}else{OpenLayers.Console.error("Unsupported geometry type: "+ -type);} +return features;},parseFeature:function(node){var order=["MultiPolygon","Polygon","MultiLineString","LineString","MultiPoint","Point","Envelope"];var type,nodeList,geometry,parser;for(var i=0;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} break;}} var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} var feature=new OpenLayers.Feature.Vector(geometry,attributes);var childNode=node.firstChild;var fid;while(childNode){if(childNode.nodeType==1){fid=childNode.getAttribute("fid")||childNode.getAttribute("id");if(fid){break;}} childNode=childNode.nextSibling;} -feature.fid=fid;return feature;},parseGeometry:{point:function(node){var nodeList;var coords=[];var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"pos");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} +feature.fid=fid;return feature;},parseGeometry:{point:function(node){var nodeList,coordString;var coords=[];var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"pos");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");}} if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coord");if(nodeList.length>0){var xList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"X");var yList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"Y");if(xList.length>0&&yList.length>0){coords=[xList[0].firstChild.nodeValue,yList[0].firstChild.nodeValue];}}} if(coords.length==2){coords[2]=null;} -return new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);},multipoint:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"Point");var components=[];if(nodeList.length>0){var point;for(var i=0;i0){coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);var dim=parseInt(nodeList[0].getAttribute("dimension"));var j,x,y,z;for(var i=0;i0){var point;for(var i=0;i0){coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);var dim=parseInt(nodeList[0].getAttribute("dimension"));var j,x,y,z;for(var i=0;i0){coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);for(var i=0;i0){var line;for(var i=0;i0){var ring;for(var i=0;i0){var polygon;for(var i=0;i0){var coords=[];if(lpoint.length>0){coordString=lpoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} +if(coords.length==2){coords[2]=null;} +if(this.xy){var lowerPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var lowerPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} +var upoint=this.getElementsByTagNameNS(node,this.gmlns,"upperCorner");if(upoint.length>0){var coords=[];if(upoint.length>0){coordString=upoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} +if(coords.length==2){coords[2]=null;} +if(this.xy){var upperPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var upperPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} +if(lowerPoint&&upperPoint){components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));var ring=new OpenLayers.Geometry.LinearRing(components);envelope=new OpenLayers.Geometry.Polygon([ring]);} +return envelope;}},parseAttributes:function(node){var attributes={};var childNode=node.firstChild;var children,i,child,grandchildren,grandchild,name,value;while(childNode){if(childNode.nodeType==1){children=childNode.childNodes;for(i=0;i0||(lat.length>0&&lon.length>0)){if(point.length>0){var location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s+/);if(location.length!=2){var location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s*,\s*/);}}else{var location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];} -var geometry=new OpenLayers.Geometry.Point(parseFloat(location[1]),parseFloat(location[0]));}else if(line.length>0){var coords=OpenLayers.String.trim(line[0].firstChild.nodeValue).split(/\s+/);var components=[];for(var i=0;i0){var coords=OpenLayers.String.trim(polygon[0].firstChild.nodeValue).split(/\s+/);var components=[];for(var i=0;i0||(lat.length>0&&lon.length>0)){var location;if(point.length>0){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s+/);if(location.length!=2){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s*,\s*/);}}else{location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];} +var geometry=new OpenLayers.Geometry.Point(parseFloat(location[1]),parseFloat(location[0]));}else if(line.length>0){var coords=OpenLayers.String.trim(line[0].firstChild.nodeValue).split(/\s+/);var components=[];var point;for(var i=0;i0){var coords=OpenLayers.String.trim(polygon[0].firstChild.nodeValue).split(/\s+/);var components=[];var point;for(var i=0;i0){if(!this.gmlParser){this.gmlParser=new OpenLayers.Format.GML({'xy':this.xy});} +var feature=this.gmlParser.parseFeature(where[0]);geometry=feature.geometry;} +if(geometry&&this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);} return geometry;},createFeatureFromItem:function(item){var geometry=this.createGeometryFromItem(item);var title=this.getChildValue(item,"*","title",this.featureTitle);var description=this.getChildValue(item,"*","description",this.getChildValue(item,"*","content",this.featureDescription));var link=this.getChildValue(item,"*","link");if(!link){try{link=this.getElementsByTagNameNS(item,"*","link")[0].getAttribute("href");}catch(e){link=null;}} var id=this.getChildValue(item,"*","id",null);var data={"title":title,"description":description,"link":link};var feature=new OpenLayers.Feature.Vector(geometry,data);feature.fid=id;return feature;},getChildValue:function(node,nsuri,name,def){var value;try{value=this.getElementsByTagNameNS(node,nsuri,name)[0].firstChild.nodeValue;}catch(e){value=(def==undefined)?"":def;} return value;},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);} @@ -995,41 +1261,111 @@ return OpenLayers.Format.XML.prototype.write.apply(this,[georss]);},createFeatur for(var attr in feature.attributes){if(attr=="link"||attr=="title"||attr=="description"){continue;} var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr;if(attr.search(":")!=-1){nodename=attr.split(":")[1];} var attrContainer=this.createElementNS(this.featureNS,"feature:"+nodename);attrContainer.appendChild(attrText);featureNode.appendChild(attrContainer);} -featureNode.appendChild(geometryNode);return featureNode;},buildGeometryNode:function(geometry){var node;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){node=this.createElementNS(this.georssns,'georss:polygon');node.appendChild(this.buildCoordinatesNode(geometry.components[0]));} +featureNode.appendChild(geometryNode);return featureNode;},buildGeometryNode:function(geometry){if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} +var node;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){node=this.createElementNS(this.georssns,'georss:polygon');node.appendChild(this.buildCoordinatesNode(geometry.components[0]));} else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){node=this.createElementNS(this.georssns,'georss:line');node.appendChild(this.buildCoordinatesNode(geometry));} else if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){node=this.createElementNS(this.georssns,'georss:point');node.appendChild(this.buildCoordinatesNode(geometry));}else{throw"Couldn't parse "+geometry.CLASS_NAME;} return node;},buildCoordinatesNode:function(geometry){var points=null;if(geometry.components){points=geometry.components;} var path;if(points){var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);}else{OpenLayers.Console.error("Unsupported geometry type: "+ -type);} +return this.createTextNode(path);},CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date(),extractAttributes:true,extractStyles:false,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(options){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)};OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){this.features=[];this.styles={};this.fetched={};var options={depth:this.maxDepth,styleBaseUrl:this.styleBaseUrl};return this.parseData(data,options);},parseData:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +var types=["Link","NetworkLink","Style","StyleMap","Placemark"];for(var i=0;i=this.maxDepth){return false;} +var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} break;}} var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} -var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id");if(fid!=null){feature.fid=fid;} -return feature;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} +var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id")||node.getAttribute("name");if(fid!=null){feature.fid=fid;} +return feature;},getStyle:function(styleUrl,options){var styleBaseUrl=OpenLayers.Util.removeTail(styleUrl);var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;newOptions.styleBaseUrl=styleBaseUrl;if(!this.styles[styleUrl]&&!OpenLayers.String.startsWith(styleUrl,"#")&&newOptions.depth<=this.maxDepth&&!this.fetched[styleBaseUrl]){var data=this.fetchLink(styleBaseUrl);if(data){this.parseData(data,newOptions);}} +var style=this.styles[styleUrl];return style;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} var point=null;if(coords.length>1){if(coords.length==2){coords[2]=null;} point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad coordinate string: "+coordString;} -return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i1){if(coords.length==2){coords[2]=null;} +return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i1){if(coords.length==2){coords[2]=null;} points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad LineString point coordinates: "+ pointList[i];}} if(numPoints){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}else{throw"Bad LineString coordinates: "+coordString;}} return line;},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"LinearRing");var numRings=nodeList.length;var components=new Array(numRings);if(numRings>0){var ring;for(var i=0;i4){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}},move:function(x,y){for(var i=0;i2)){var sum=0.0;for(var i=0;i=0;i--){var nodes=this.createFeatureNodes(features[i]);for(var j=0;j4){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}},move:function(x,y){for(var i=0;i2)){var sum=0.0;for(var i=0;i=x1&&px<=x2)||x1>=x2&&(px<=x1&&px>=x2)){crosses=-1;break;}} +continue;} +cx=approx(getX(py,x1,y1,x2,y2),digs);if(cx==px){if(y1=y1&&py<=y2)||y1>y2&&(py<=y1&&py>=y2)){crosses=-1;break;}} +if(cx<=px){continue;} +if(x1!=x2&&(cxMath.max(x1,x2))){continue;} +if(y1=y1&&pyy2&&(py=y2)){++crosses;}} +var contained=(crosses==-1)?1:!!(crosses&1);return contained;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){intersect=geometry.intersects(this);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){intersect=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[geometry]);}else{for(var i=0;iYb9`ySxy zvq@9KKm!JYX?ox=L>NpBQreR_GnJ7zLhe)LG9#9_$rV=FZpc?Uj=o+b?5R3fYip}O zAP@?LB9TZe77q*z3=R%TB$A<_q2b}-(b3Vdv9XDX38_>%IXNkl$>egmLZL9#-g-%u zkxKOOgKd1t3spLEqjB3}VK9wBmCbOyh|E_8)u|rdSase^LtTSaiMm~Paf!-Sl($D=)9jf!S?48>DBG<=>%Z&QS9k7?)fL%Q}nPIw&lsQVVjURrdr z;f)E2dbYf`Px?r(pwSlP&EI$Uj87-Zn-bL;7UhKQ9NBX<|4#E=e0IrBwu6ii_518} zN7Bm%te{3 ze6x)STaR8iYBLa+=1mm0lZF8A71A&E>6EPZySs;SA&|JA3#c7$REyASZTp;D5 zF@;Y7Dm-nG5}yK8_@{2vVov3Lp91?q6^w<7h>Fjj^**EormKp-Cr488o2G$2TgNuH84opnmmG=;b2-tm3QZTegN_l@be|54~irN5|b1o2D$vX7MfOSc$& z=H~s!uK&Ef`DsEw8jCL~`%|avuS$IHiSf|(W>+D=C8gs^HbUypT@4>afQ5Jf4W{Sd zPChX4H}5dz#6m3g@w>aBG9oG;=Z{y(e4PSo_mq0-D03@i&lr!YVB&rT03nEDCW&>19BB)2lSz76wZo-6X zruu?#zn5zt&u{*T3f(aSD^GlD!d(NFoyGJ$5cK6aA2)CJlHR!5mEvWBLCG?a$wK3} zi~HW(FV5{9y>QS=z_O(~bNH6y$?_fakUX`3_5L&_;u5!i;CU@8{xK1{Fj<|)e*=~Q zKykPOxtil&h2LyTx8?v@=tFW|*=sG&BM8|w&5kShR{(Wq>ABAS3Gxr(mZ@mxpa&xs zgQ9S4Ml&mD)x`5S8`_eni8d3uy&V+S!XhZVy0s8Jfx^)94P_wOCt`#ll9}<>wkM47 zW47x{YBH$Zt2P{39TO4sFsL}-dMZ#ok+GP795(JiAA1)*vgp77SKUn>wz=R|Q7s6x%3x#x*o%$PS~E#Kvah7uL@tc9DrG$p%eE zrT3dVZqBjVz=<+a2e>~^Dkq` zikHW(0V50o)F%g%O+h``UNez5=Ht=Vf>|Q?N^(R-SjH{|PUR%Actv z;gRI*%RLFKT}zX~wU}Rx3|G?07xz7IfppQggrO^*87%{ACv)7Og3_&{v={7zEqy~p zz0rO#sYMk7Xin1RcqGl8!BueQo=U*%->_?2?r{M5iqdEco{U1ar_kn=S9i^G1mpjv%bjRhf9f#lv>ZWb}R;=a405aV_Ik430$v(00Af zgN;E+g$VA^u$Ft(O%<7LM!BI@ZTjJqdn^6PwB$!68F)Lrdd(W#KvVCKCuk3nmNm?r31M7pSbPYcG2Yb^G4*&oF literal 0 HcmV?d00001 diff --git a/public/openlayers/theme/default/framedCloud.css b/public/openlayers/theme/default/framedCloud.css new file mode 100644 index 000000000..a67f36775 --- /dev/null +++ b/public/openlayers/theme/default/framedCloud.css @@ -0,0 +1,5 @@ + +.olFramedCloudPopupContent { + padding: 5px; + overflow: auto; +} \ No newline at end of file diff --git a/public/openlayers/theme/default/img/blank.gif b/public/openlayers/theme/default/img/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bcc753a12e9854923af4b9b5b9a4b76f1bc53a6 GIT binary patch literal 42 ocmZ?wbhEHbWMp7uXkY+=|Ns9h{$ybUF?B!$NXCJQ(S^Yp0J?7nHvj+t literal 0 HcmV?d00001 diff --git a/public/openlayers/img/close.gif b/public/openlayers/theme/default/img/close.gif similarity index 100% rename from public/openlayers/img/close.gif rename to public/openlayers/theme/default/img/close.gif diff --git a/public/openlayers/theme/default/img/editing_tool_bar.png b/public/openlayers/theme/default/img/editing_tool_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..464340efb61df48b4cab2225ca724d53314ee67b GIT binary patch literal 3901 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 literal 0 HcmV?d00001 diff --git a/public/openlayers/theme/default/img/view_previous_off.png b/public/openlayers/theme/default/img/view_previous_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c230f749e1887d70d1928398b5d03e0105a3d8 GIT binary patch literal 1553 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 Date: Tue, 8 Apr 2008 18:38:43 +0000 Subject: [PATCH 07/93] Disable OSM export when the area is too large. --- app/views/export/_start.rhtml | 48 +++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 41fd790f2..08306e13c 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -67,16 +67,26 @@ updateRegion(map.getExtent()); } - function setFormat(format) { - $("export_osm").style.display = "none"; - $("export_mapnik").style.display = "none"; - $("export_" + format).style.display = "inline"; + function formatChanged() { + if ($("export_format_osm").checked) { + $("export_osm").style.display = "inline"; + } else { + $("export_osm").style.display = "none"; + } + + if ($("export_format_png").checked || + $("export_format_pdf").checked || + $("export_format_svg").checked) { + $("export_mapnik").style.display = "inline"; + } else { + $("export_mapnik").style.display = "none"; + } } - $("export_format_osm").onclick = function() { setFormat("osm") }; - $("export_format_png").onclick = function() { setFormat("mapnik") }; - $("export_format_pdf").onclick = function() { setFormat("mapnik") }; - $("export_format_svg").onclick = function() { setFormat("mapnik") }; + $("export_format_osm").onclick = function() { formatChanged() }; + $("export_format_png").onclick = function() { formatChanged() }; + $("export_format_pdf").onclick = function() { formatChanged() }; + $("export_format_svg").onclick = function() { formatChanged() }; function mapMoved() { updateRegion(map.getExtent()); @@ -88,14 +98,24 @@ } function updateRegion(bounds) { + var epsg4326 = new OpenLayers.Projection("EPSG:4326"); var decimals = Math.pow(10, Math.floor(map.getZoom() / 3)); - var bl = mercatorToLonLat(new OpenLayers.LonLat(bounds.left, bounds.bottom)); - var tr = mercatorToLonLat(new OpenLayers.LonLat(bounds.right, bounds.top)); - $("export_maxlat").value = Math.round(tr.lat * decimals) / decimals; - $("export_minlon").value = Math.round(bl.lon * decimals) / decimals; - $("export_maxlon").value = Math.round(tr.lon * decimals) / decimals; - $("export_minlat").value = Math.round(bl.lat * decimals) / decimals; + bounds.transform(map.getProjectionObject(), epsg4326); + + $("export_maxlat").value = Math.round(bounds.top * decimals) / decimals; + $("export_minlon").value = Math.round(bounds.left * decimals) / decimals; + $("export_maxlon").value = Math.round(bounds.right * decimals) / decimals; + $("export_minlat").value = Math.round(bounds.bottom * decimals) / decimals; + + if (bounds.getWidth() * bounds.getHeight() > 0.25) { + $("export_format_osm").disabled = true; + $("export_format_osm").checked = false; + + formatChanged(); + } else { + $("export_format_osm").disabled = false; + } } startExport(); From 2c66491e000dcfa634830dc1caf6d7d8939c5fcc Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 9 Apr 2008 18:14:30 +0000 Subject: [PATCH 08/93] Reflect any changes made to the bounds in the map. --- app/views/export/_start.rhtml | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 08306e13c..e63b87c56 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -43,13 +43,15 @@ diff --git a/config/routes.rb b/config/routes.rb index b44139c4a..519142411 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -124,6 +124,7 @@ ActionController::Routing::Routes.draw do |map| # export map.connect '/export/start', :controller => 'export', :action => 'start' + map.connect '/export/finish', :controller => 'export', :action => 'finish' # messages @@ -135,6 +136,6 @@ ActionController::Routing::Routes.draw do |map| map.connect '/message/reply/:message_id', :controller => 'message', :action => 'reply' # fall through - map.connect ':controller/:id/:action' + map.connect ':controller/:id/:action' map.connect ':controller/:action' end diff --git a/lib/bounding_box.rb b/lib/bounding_box.rb new file mode 100644 index 000000000..d943768ad --- /dev/null +++ b/lib/bounding_box.rb @@ -0,0 +1,72 @@ +class BoundingBox + def initialize(min_lon, min_lat, max_lon, max_lat) + @bbox = [min_lon.to_f, min_lat.to_f, max_lon.to_f, max_lat.to_f] + end + + def self.from_s(s) + BoundingBox.new(s.split(/,/)) + end + + def min_lon + @bbox[0] + end + + def min_lon=(min_lon) + @bbox[0] = min_lon + end + + def min_lat + @bbox[1] + end + + def min_lat=(min_lat) + @bbox[1] = min_lat + end + + def max_lon + @bbox[2] + end + + def max_lon=(max_lon) + @bbox[2] = max_lon + end + + def max_lat + @bbox[3] + end + + def max_lat=(max_lat) + @bbox[3] = max_lat + end + + def centre_lon + (@bbox[0] + @bbox[2]) / 2.0 + end + + def centre_lat + (@bbox[1] + @bbox[3]) / 2.0 + end + + def width + @bbox[2] - @bbox[0] + end + + def height + @bbox[3] - @bbox[1] + end + + def slippy_width(zoom) + width * 256.0 * 2.0 ** zoom / 360.0 + end + + def slippy_height(zoom) + min = min_lat * Math::PI / 180.0 + max = max_lat * Math::PI / 180.0 + + Math.log((Math.tan(max) + 1.0 / Math.cos(max)) / (Math.tan(min) + 1.0 / Math.cos(min))) * 128.0 * 2.0 ** zoom / Math::PI + end + + def to_s + return @bbox.join(",") + end +end diff --git a/public/stylesheets/site.css b/public/stylesheets/site.css index bb8bbe999..dee3e8504 100644 --- a/public/stylesheets/site.css +++ b/public/stylesheets/site.css @@ -608,3 +608,17 @@ input { #export_mapnik { display: none; } + +#export_osmarender { + display: none; +} + +.export_hint { + padding: 0px 12px 0px 12px; + font-style: italic; +} + +.export_buttons { + width: 100%; + text-align: center; +} From 4e05d2af7274e561adeba6c7256876bdf2c9692e Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 16 Apr 2008 07:27:29 +0000 Subject: [PATCH 16/93] Update OpenLayers to 2.6 release. --- public/openlayers/OpenLayers.js | 1436 ++++++++++------- public/openlayers/img/close.gif | Bin 1078 -> 0 bytes .../openlayers/img/cloud-popup-relative.png | Bin 0 -> 2564 bytes .../openlayers/theme/default/framedCloud.css | 5 + public/openlayers/theme/default/style.css | 107 +- 5 files changed, 985 insertions(+), 563 deletions(-) delete mode 100644 public/openlayers/img/close.gif create mode 100644 public/openlayers/img/cloud-popup-relative.png create mode 100644 public/openlayers/theme/default/framedCloud.css diff --git a/public/openlayers/OpenLayers.js b/public/openlayers/OpenLayers.js index 886a6fe41..f20b4d7be 100644 --- a/public/openlayers/OpenLayers.js +++ b/public/openlayers/OpenLayers.js @@ -2,8 +2,8 @@ OpenLayers.js -- OpenLayers Map Viewer Library - Copyright 2005-2007 MetaCarta, Inc., released under the BSD license. - Please see http://svn.openlayers.org/trunk/openlayers/release-license.txt + Copyright 2005-2008 MetaCarta, Inc., released under the Clear BSD license. + Please see http://svn.openlayers.org/trunk/openlayers/license.txt for the full text of the license. Includes compressed code under the following licenses: @@ -21,7 +21,7 @@ * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * -/*--------------------------------------------------------------------------*/ + *--------------------------------------------------------------------------*/ /** * @@ -43,88 +43,90 @@ * **/ -OpenLayers={singleFile:true};(function(){var singleFile=(typeof OpenLayers=="object"&&OpenLayers.singleFile);OpenLayers={_scriptName:(!singleFile)?"lib/OpenLayers.js":"OpenLayers.js",_getScriptLocation:function(){var scriptLocation="";var scriptName=OpenLayers._scriptName;var scripts=document.getElementsByTagName('script');for(var i=0;i-1)&&(index+scriptName.length==src.length)){scriptLocation=src.slice(0,-scriptName.length);break;}}} -return scriptLocation;}};if(!singleFile){var jsfiles=new Array("OpenLayers/Util.js","OpenLayers/BaseTypes.js","OpenLayers/BaseTypes/Class.js","OpenLayers/BaseTypes/Bounds.js","OpenLayers/BaseTypes/Element.js","OpenLayers/BaseTypes/LonLat.js","OpenLayers/BaseTypes/Pixel.js","OpenLayers/BaseTypes/Size.js","OpenLayers/Console.js","Rico/Corner.js","Rico/Color.js","OpenLayers/Ajax.js","OpenLayers/Events.js","OpenLayers/Map.js","OpenLayers/Layer.js","OpenLayers/Icon.js","OpenLayers/Marker.js","OpenLayers/Marker/Box.js","OpenLayers/Popup.js","OpenLayers/Tile.js","OpenLayers/Tile/Image.js","OpenLayers/Tile/WFS.js","OpenLayers/Layer/Image.js","OpenLayers/Layer/SphericalMercator.js","OpenLayers/Layer/EventPane.js","OpenLayers/Layer/FixedZoomLevels.js","OpenLayers/Layer/Google.js","OpenLayers/Layer/VirtualEarth.js","OpenLayers/Layer/Yahoo.js","OpenLayers/Layer/HTTPRequest.js","OpenLayers/Layer/Grid.js","OpenLayers/Layer/MapServer.js","OpenLayers/Layer/MapServer/Untiled.js","OpenLayers/Layer/KaMap.js","OpenLayers/Layer/MultiMap.js","OpenLayers/Layer/Markers.js","OpenLayers/Layer/Text.js","OpenLayers/Layer/WorldWind.js","OpenLayers/Layer/WMS.js","OpenLayers/Layer/WMS/Untiled.js","OpenLayers/Layer/GeoRSS.js","OpenLayers/Layer/Boxes.js","OpenLayers/Layer/TMS.js","OpenLayers/Layer/TileCache.js","OpenLayers/Popup/Anchored.js","OpenLayers/Popup/AnchoredBubble.js","OpenLayers/Feature.js","OpenLayers/Feature/Vector.js","OpenLayers/Feature/WFS.js","OpenLayers/Handler.js","OpenLayers/Handler/Point.js","OpenLayers/Handler/Path.js","OpenLayers/Handler/Polygon.js","OpenLayers/Handler/Feature.js","OpenLayers/Handler/Drag.js","OpenLayers/Handler/RegularPolygon.js","OpenLayers/Handler/Box.js","OpenLayers/Handler/MouseWheel.js","OpenLayers/Handler/Keyboard.js","OpenLayers/Control.js","OpenLayers/Control/Attribution.js","OpenLayers/Control/ZoomBox.js","OpenLayers/Control/ZoomToMaxExtent.js","OpenLayers/Control/DragPan.js","OpenLayers/Control/Navigation.js","OpenLayers/Control/MouseDefaults.js","OpenLayers/Control/MousePosition.js","OpenLayers/Control/OverviewMap.js","OpenLayers/Control/KeyboardDefaults.js","OpenLayers/Control/PanZoom.js","OpenLayers/Control/PanZoomBar.js","OpenLayers/Control/ArgParser.js","OpenLayers/Control/Permalink.js","OpenLayers/Control/Scale.js","OpenLayers/Control/LayerSwitcher.js","OpenLayers/Control/DrawFeature.js","OpenLayers/Control/DragFeature.js","OpenLayers/Control/ModifyFeature.js","OpenLayers/Control/Panel.js","OpenLayers/Control/SelectFeature.js","OpenLayers/Geometry.js","OpenLayers/Geometry/Rectangle.js","OpenLayers/Geometry/Collection.js","OpenLayers/Geometry/Point.js","OpenLayers/Geometry/MultiPoint.js","OpenLayers/Geometry/Curve.js","OpenLayers/Geometry/LineString.js","OpenLayers/Geometry/LinearRing.js","OpenLayers/Geometry/Polygon.js","OpenLayers/Geometry/MultiLineString.js","OpenLayers/Geometry/MultiPolygon.js","OpenLayers/Geometry/Surface.js","OpenLayers/Renderer.js","OpenLayers/Renderer/Elements.js","OpenLayers/Renderer/SVG.js","OpenLayers/Renderer/VML.js","OpenLayers/Layer/Vector.js","OpenLayers/Layer/GML.js","OpenLayers/Format.js","OpenLayers/Format/XML.js","OpenLayers/Format/GML.js","OpenLayers/Format/KML.js","OpenLayers/Format/GeoRSS.js","OpenLayers/Format/WFS.js","OpenLayers/Format/WKT.js","OpenLayers/Format/JSON.js","OpenLayers/Format/GeoJSON.js","OpenLayers/Layer/WFS.js","OpenLayers/Control/MouseToolbar.js","OpenLayers/Control/NavToolbar.js","OpenLayers/Control/EditingToolbar.js");var allScriptTags="";var host=OpenLayers._getScriptLocation()+"lib/";for(var i=0;i";allScriptTags+=currentScriptTag;}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} -if(allScriptTags)document.write(allScriptTags);}})();OpenLayers.VERSION_NUMBER="$Revision: 4899 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s*(.*?)\s*$/,"$1");},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1;i0){fig=parseFloat(num.toPrecision(sig));}else{fig=0;} -return fig;}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(sig){OpenLayers.Console.warn("This method has been deprecated and will be removed in 3.0. "+"Please use OpenLayers.Number.limitSigDigs instead");return OpenLayers.Number.limitSigDigs(this,sig);};} -OpenLayers.Function={bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},bindAsEventListener:function(func,object){return function(event){return func.call(object,event||window.event);};}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn("This method has been deprecated and will be removed in 3.0. "+"Please use OpenLayers.Function.bind instead");Array.prototype.unshift.apply(arguments,[this]);return OpenLayers.Function.bind.apply(null,arguments);};} -if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(object){OpenLayers.Console.warn("This method has been deprecated and will be removed in 3.0. "+"Please use OpenLayers.Function.bindAsEventListener instead");return OpenLayers.Function.bindAsEventListener(this,object);};} -OpenLayers.Class=function(){var Class=function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}} -var extended={};var parent;for(var i=0;i-1)&&(index+scriptName.length==pathLength)){scriptLocation=src.slice(0,pathLength-scriptName.length);break;}}} +return scriptLocation;}};if(!singleFile){var jsfiles=new Array("OpenLayers/Util.js","OpenLayers/BaseTypes.js","OpenLayers/BaseTypes/Class.js","OpenLayers/BaseTypes/Bounds.js","OpenLayers/BaseTypes/Element.js","OpenLayers/BaseTypes/LonLat.js","OpenLayers/BaseTypes/Pixel.js","OpenLayers/BaseTypes/Size.js","OpenLayers/Console.js","OpenLayers/Tween.js","Rico/Corner.js","Rico/Color.js","OpenLayers/Ajax.js","OpenLayers/Events.js","OpenLayers/Projection.js","OpenLayers/Map.js","OpenLayers/Layer.js","OpenLayers/Icon.js","OpenLayers/Marker.js","OpenLayers/Marker/Box.js","OpenLayers/Popup.js","OpenLayers/Tile.js","OpenLayers/Tile/Image.js","OpenLayers/Tile/WFS.js","OpenLayers/Layer/Image.js","OpenLayers/Layer/SphericalMercator.js","OpenLayers/Layer/EventPane.js","OpenLayers/Layer/FixedZoomLevels.js","OpenLayers/Layer/Google.js","OpenLayers/Layer/VirtualEarth.js","OpenLayers/Layer/Yahoo.js","OpenLayers/Layer/HTTPRequest.js","OpenLayers/Layer/Grid.js","OpenLayers/Layer/MapGuide.js","OpenLayers/Layer/MapServer.js","OpenLayers/Layer/MapServer/Untiled.js","OpenLayers/Layer/KaMap.js","OpenLayers/Layer/MultiMap.js","OpenLayers/Layer/Markers.js","OpenLayers/Layer/Text.js","OpenLayers/Layer/WorldWind.js","OpenLayers/Layer/WMS.js","OpenLayers/Layer/WMS/Untiled.js","OpenLayers/Layer/GeoRSS.js","OpenLayers/Layer/Boxes.js","OpenLayers/Layer/TMS.js","OpenLayers/Layer/TileCache.js","OpenLayers/Popup/Anchored.js","OpenLayers/Popup/AnchoredBubble.js","OpenLayers/Popup/Framed.js","OpenLayers/Popup/FramedCloud.js","OpenLayers/Feature.js","OpenLayers/Feature/Vector.js","OpenLayers/Feature/WFS.js","OpenLayers/Handler.js","OpenLayers/Handler/Click.js","OpenLayers/Handler/Hover.js","OpenLayers/Handler/Point.js","OpenLayers/Handler/Path.js","OpenLayers/Handler/Polygon.js","OpenLayers/Handler/Feature.js","OpenLayers/Handler/Drag.js","OpenLayers/Handler/RegularPolygon.js","OpenLayers/Handler/Box.js","OpenLayers/Handler/MouseWheel.js","OpenLayers/Handler/Keyboard.js","OpenLayers/Control.js","OpenLayers/Control/Attribution.js","OpenLayers/Control/Button.js","OpenLayers/Control/ZoomBox.js","OpenLayers/Control/ZoomToMaxExtent.js","OpenLayers/Control/DragPan.js","OpenLayers/Control/Navigation.js","OpenLayers/Control/MouseDefaults.js","OpenLayers/Control/MousePosition.js","OpenLayers/Control/OverviewMap.js","OpenLayers/Control/KeyboardDefaults.js","OpenLayers/Control/PanZoom.js","OpenLayers/Control/PanZoomBar.js","OpenLayers/Control/ArgParser.js","OpenLayers/Control/Permalink.js","OpenLayers/Control/Scale.js","OpenLayers/Control/ScaleLine.js","OpenLayers/Control/LayerSwitcher.js","OpenLayers/Control/DrawFeature.js","OpenLayers/Control/DragFeature.js","OpenLayers/Control/ModifyFeature.js","OpenLayers/Control/Panel.js","OpenLayers/Control/SelectFeature.js","OpenLayers/Control/NavigationHistory.js","OpenLayers/Geometry.js","OpenLayers/Geometry/Rectangle.js","OpenLayers/Geometry/Collection.js","OpenLayers/Geometry/Point.js","OpenLayers/Geometry/MultiPoint.js","OpenLayers/Geometry/Curve.js","OpenLayers/Geometry/LineString.js","OpenLayers/Geometry/LinearRing.js","OpenLayers/Geometry/Polygon.js","OpenLayers/Geometry/MultiLineString.js","OpenLayers/Geometry/MultiPolygon.js","OpenLayers/Geometry/Surface.js","OpenLayers/Renderer.js","OpenLayers/Renderer/Elements.js","OpenLayers/Renderer/SVG.js","OpenLayers/Renderer/VML.js","OpenLayers/Layer/Vector.js","OpenLayers/Layer/PointTrack.js","OpenLayers/Layer/GML.js","OpenLayers/Style.js","OpenLayers/StyleMap.js","OpenLayers/Rule.js","OpenLayers/Filter.js","OpenLayers/Filter/FeatureId.js","OpenLayers/Filter/Logical.js","OpenLayers/Filter/Comparison.js","OpenLayers/Format.js","OpenLayers/Format/XML.js","OpenLayers/Format/GML.js","OpenLayers/Format/KML.js","OpenLayers/Format/GeoRSS.js","OpenLayers/Format/WFS.js","OpenLayers/Format/WKT.js","OpenLayers/Format/OSM.js","OpenLayers/Format/SLD.js","OpenLayers/Format/SLD/v1.js","OpenLayers/Format/SLD/v1_0_0.js","OpenLayers/Format/Text.js","OpenLayers/Format/JSON.js","OpenLayers/Format/GeoJSON.js","OpenLayers/Format/WMC.js","OpenLayers/Format/WMC/v1.js","OpenLayers/Format/WMC/v1_0_0.js","OpenLayers/Format/WMC/v1_1_0.js","OpenLayers/Layer/WFS.js","OpenLayers/Control/MouseToolbar.js","OpenLayers/Control/NavToolbar.js","OpenLayers/Control/EditingToolbar.js","OpenLayers/Lang.js","OpenLayers/Lang/en.js");var agent=navigator.userAgent;var docWrite=(agent.match("MSIE")||agent.match("Safari"));if(docWrite){var allScriptTags=new Array(jsfiles.length);} +var host=OpenLayers._getScriptLocation()+"lib/";for(var i=0;i";}else{var s=document.createElement("script");s.src=host+jsfiles[i];var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}} +if(docWrite){document.write(allScriptTags.join(""));}}})();OpenLayers.VERSION_NUMBER="$Revision: 6819 $";OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s*(.*?)\s*$/,"$1");},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1;i0){replacement=context[item.substring(0,last)];if(typeof replacement=="function"){replacement=args?replacement.apply(null,args):replacement();} +tokens[i]=replacement+item.substring(++last);}else{tokens[i]="${"+item;}} +return tokens.join("");}};if(!String.prototype.startsWith){String.prototype.startsWith=function(sStart){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.startsWith'}));return OpenLayers.String.startsWith(this,sStart);};} +if(!String.prototype.contains){String.prototype.contains=function(str){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.contains'}));return OpenLayers.String.contains(this,str);};} +if(!String.prototype.trim){String.prototype.trim=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.trim'}));return OpenLayers.String.trim(this);};} +if(!String.prototype.camelize){String.prototype.camelize=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.camelize'}));return OpenLayers.String.camelize(this);};} +OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(num,sig){var fig=0;if(sig>0){fig=parseFloat(num.toPrecision(sig));} +return fig;},format:function(num,dec,tsep,dsep){dec=(typeof dec!="undefined")?dec:0;tsep=(typeof tsep!="undefined")?tsep:OpenLayers.Number.thousandsSeparator;dsep=(typeof dsep!="undefined")?dsep:OpenLayers.Number.decimalSeparator;if(dec!=null){num=parseFloat(num.toFixed(dec));} +var parts=num.toString().split(".");if(parts.length==1&&dec==null){dec=0;} +var integer=parts[0];if(tsep){var thousands=/(-?[0-9]+)([0-9]{3})/;while(thousands.test(integer)){integer=integer.replace(thousands,"$1"+tsep+"$2");}} +var str;if(dec==0){str=integer;}else{var rem=parts.length>1?parts[1]:"0";if(dec!=null){rem=rem+new Array(dec-rem.length+1).join("0");} +str=integer+dsep+rem;} +return str;}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(sig){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.limitSigDigs'}));return OpenLayers.Number.limitSigDigs(this,sig);};} +OpenLayers.Function={bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},bindAsEventListener:function(func,object){return function(event){return func.call(object,event||window.event);};}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.bind'}));Array.prototype.unshift.apply(arguments,[this]);return OpenLayers.Function.bind.apply(null,arguments);};} +if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(object){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.bindAsEventListener'}));return OpenLayers.Function.bindAsEventListener(this,object);};} +OpenLayers.Array={filter:function(array,callback,caller){var selected=[];if(Array.prototype.filter){selected=array.filter(callback,caller);}else{var len=array.length;if(typeof callback!="function"){throw new TypeError();} +for(var i=0;i=0;i--){if(array[i]==item){array.splice(i,1);}} +return array;};OpenLayers.Util.clearArray=function(array){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'array = []'}));array.length=0;};OpenLayers.Util.indexOf=function(array,obj){for(var i=0;i=0.0&&parseFloat(opacity)<1.0){element.style.filter='alpha(opacity='+(opacity*100)+')';element.style.opacity=opacity;}else if(parseFloat(opacity)==1.0){element.style.filter='';element.style.opacity='';}};OpenLayers.Util.createDiv=function(id,px,sz,imgURL,position,border,overflow,opacity){var dom=document.createElement('div');if(imgURL){dom.style.backgroundImage='url('+imgURL+')';} if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");} if(!position){position="absolute";} OpenLayers.Util.modifyDOMElement(dom,id,px,sz,position,border,overflow,opacity);return dom;};OpenLayers.Util.createImage=function(id,px,sz,imgURL,position,border,opacity,delayDisplay){var image=document.createElement("img");if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");} if(!position){position="relative";} OpenLayers.Util.modifyDOMElement(image,id,px,sz,position,border,null,opacity);if(delayDisplay){image.style.display="none";OpenLayers.Event.observe(image,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,image));OpenLayers.Event.observe(image,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,image));} image.style.alt=id;image.galleryImg="no";if(imgURL){image.src=imgURL;} -return image;};OpenLayers.Util.setOpacity=function(element,opacity){OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);} -OpenLayers.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.backgroundColor=null;this.style.display="";}};OpenLayers.Util.onImageLoadErrorColor="pink";OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){this.src=this.src;}else{this.style.backgroundColor=OpenLayers.Util.onImageLoadErrorColor;} -this.style.display="";};OpenLayers.Util.alphaHack=function(){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=document.body.filters;}catch(e){} -return(filter&&(version>=5.5)&&(version<7));} -OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz);var img=div.childNodes[0];if(imgURL){img.src=imgURL;} -OpenLayers.Util.modifyDOMElement(img,div.id+"_innerImage",null,sz,"relative",border);if(opacity){div.style.opacity=opacity;div.style.filter='alpha(opacity='+(opacity*100)+')';} -if(OpenLayers.Util.alphaHack()){div.style.display="inline-block";if(sizing==null){sizing="scale";} -div.style.filter="progid:DXImageTransform.Microsoft"+".AlphaImageLoader(src='"+img.src+"', "+"sizingMethod='"+sizing+"')";if(div.style.opacity){div.style.filter+=" alpha(opacity="+div.style.opacity*100+")";} -img.style.filter="progid:DXImageTransform.Microsoft"+".Alpha(opacity=0)";}};OpenLayers.Util.createAlphaImageDiv=function(id,px,sz,imgURL,position,border,sizing,opacity,delayDisplay){var div=OpenLayers.Util.createDiv();var img=OpenLayers.Util.createImage(null,null,null,null,null,null,null,false);div.appendChild(img);if(delayDisplay){img.style.display="none";OpenLayers.Event.observe(img,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,div));OpenLayers.Event.observe(img,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,div));} +return image;};OpenLayers.Util.setOpacity=function(element,opacity){OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);};OpenLayers.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.backgroundColor=null;this.style.display="";}};OpenLayers.Util.onImageLoadErrorColor="pink";OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){this.src=this.src;}else{this.style.backgroundColor=OpenLayers.Util.onImageLoadErrorColor;} +this.style.display="";};OpenLayers.Util.alphaHack=function(){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=!!(document.body.filters);}catch(e){} +return(filter&&(version>=5.5)&&(version<7));};OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz,null,null,null,opacity);var img=div.childNodes[0];if(imgURL){img.src=imgURL;} +OpenLayers.Util.modifyDOMElement(img,div.id+"_innerImage",null,sz,"relative",border);if(OpenLayers.Util.alphaHack()){div.style.display="inline-block";if(sizing==null){sizing="scale";} +div.style.filter="progid:DXImageTransform.Microsoft"+".AlphaImageLoader(src='"+img.src+"', "+"sizingMethod='"+sizing+"')";if(parseFloat(div.style.opacity)>=0.0&&parseFloat(div.style.opacity)<1.0){div.style.filter+=" alpha(opacity="+div.style.opacity*100+")";} +img.style.filter="alpha(opacity=0)";}};OpenLayers.Util.createAlphaImageDiv=function(id,px,sz,imgURL,position,border,sizing,opacity,delayDisplay){var div=OpenLayers.Util.createDiv();var img=OpenLayers.Util.createImage(null,null,null,null,null,null,null,false);div.appendChild(img);if(delayDisplay){img.style.display="none";OpenLayers.Event.observe(img,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,div));OpenLayers.Event.observe(img,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,div));} OpenLayers.Util.modifyAlphaImageDiv(div,id,px,sz,imgURL,position,border,sizing,opacity);return div;};OpenLayers.Util.upperCaseObject=function(object){var uObject={};for(var key in object){uObject[key.toUpperCase()]=object[key];} -return uObject;};OpenLayers.Util.applyDefaults=function(to,from){for(var key in from){if(to[key]==null){to[key]=from[key];}}};OpenLayers.Util.getParameterString=function(params){paramsArray=[];for(var key in params){var value=params[key];if((value!=null)&&(typeof value!='function')){var encodedValue;if(typeof value=='object'&&value.constructor==Array){var encodedItemArray=[];for(var itemIndex=0;itemIndex0)) {if(!index){index=0;} if(result[index].childNodes.length>1){return result.childNodes[1].nodeValue;} -else if(result[index].childNodes.length==1){return result[index].firstChild.nodeValue;}}else{return"";}};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val) -val=node.textContent;if(!val) -val=node.firstChild.nodeValue;},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;} +else if(result[index].childNodes.length==1){return result[index].firstChild.nodeValue;}}else{return"";}};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val){val=node.textContent;} +if(!val){val=node.firstChild.nodeValue;}},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;} return(target!=div);};OpenLayers.Util.rad=function(x){return x*Math.PI/180;};OpenLayers.Util.distVincenty=function(p1,p2){var a=6378137,b=6356752.3142,f=1/298.257223563;var L=OpenLayers.Util.rad(p2.lon-p1.lon);var U1=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p1.lat)));var U2=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p2.lat)));var sinU1=Math.sin(U1),cosU1=Math.cos(U1);var sinU2=Math.sin(U2),cosU2=Math.cos(U2);var lambda=L,lambdaP=2*Math.PI;var iterLimit=20;while(Math.abs(lambda-lambdaP)>1e-12&&--iterLimit>0){var sinLambda=Math.sin(lambda),cosLambda=Math.cos(lambda);var sinSigma=Math.sqrt((cosU2*sinLambda)*(cosU2*sinLambda)+ -(cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0)return 0;var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));} -if(iterLimit==0)return NaN +(cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0){return 0;} +var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));} +if(iterLimit==0){return NaN;} var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)- -B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.getParameters=function(url){url=url||window.location.href -if(url==null){url=window.location.href;} -var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} +B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.getParameters=function(url){url=url||window.location.href;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);} var parameters={};var pairs=paramsString.split(/[&;]/);for(var i=0;i1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){if(units==null){units="degrees";} +return parameters;};OpenLayers.Util.getArgs=function(url){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Util.getParameters'}));return OpenLayers.Util.getParameters(url);};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(prefix){if(prefix==null){prefix="id_";} +OpenLayers.Util.lastSeqID+=1;return prefix+OpenLayers.Util.lastSeqID;};OpenLayers.INCHES_PER_UNIT={'inches':1.0,'ft':12.0,'mi':63360.0,'m':39.3701,'km':39370.1,'dd':4374754,'yd':36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT["degrees"]=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT["nmi"]=1852*OpenLayers.INCHES_PER_UNIT.m;OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(scale){var normScale=(scale>1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){if(units==null){units="degrees";} var normScale=OpenLayers.Util.normalizeScale(scale);var resolution=1/(normScale*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH);return resolution;};OpenLayers.Util.getScaleFromResolution=function(resolution,units){if(units==null){units="degrees";} var scale=resolution*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH;return scale;};OpenLayers.Util.safeStopPropagation=function(evt){OpenLayers.Event.stop(evt,true);};OpenLayers.Util.pagePosition=function(forElement){var valueT=0,valueL=0;var element=forElement;var child=forElement;while(element){if(element==document.body){if(child&&child.style&&OpenLayers.Element.getStyle(child,'position')=='absolute'){break;}} -valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;child=element;try{element=element.offsetParent;}catch(e){OpenLayers.Console.error("OpenLayers.Util.pagePosition failed: element with id "+ -element.id+" may be misplaced.");break;}} +valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;child=element;try{element=element.offsetParent;}catch(e){OpenLayers.Console.error(OpenLayers.i18n("pagePositionFailed",{'elemId':element.id}));break;}} element=forElement;while(element){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;element=element.parentNode;} -return[valueL,valueT];};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});urlObj1=OpenLayers.Util.createUrlObject(url1,options);urlObj2=OpenLayers.Util.createUrlObject(url2,options);for(var key in urlObj1){if(options.test){alert(key+"\n1:"+urlObj1[key]+"\n2:"+urlObj2[key]);} +return[valueL,valueT];};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var urlObj1=OpenLayers.Util.createUrlObject(url1,options);var urlObj2=OpenLayers.Util.createUrlObject(url2,options);for(var key in urlObj1){if(options.test){alert(key+"\n1:"+urlObj1[key]+"\n2:"+urlObj2[key]);} var val1=urlObj1[key];var val2=urlObj2[key];switch(key){case"args":break;case"host":case"port":case"protocol":if((val1=="")||(val2=="")){break;} default:if((key!="args")&&(urlObj1[key]!=urlObj2[key])){return false;} break;}} @@ -134,71 +136,57 @@ for(var key in urlObj2.args){return false;} return true;};OpenLayers.Util.createUrlObject=function(url,options){options=options||{};var urlObject={};if(options.ignoreCase){url=url.toLowerCase();} var a=document.createElement('a');a.href=url;urlObject.host=a.host;var port=a.port;if(port.length<=0){var newHostLength=urlObject.host.length-(port.length);urlObject.host=urlObject.host.substring(0,newHostLength);} urlObject.protocol=a.protocol;urlObject.port=((port=="80")&&(options.ignorePort80))?"":port;urlObject.hash=(options.ignoreHash)?"":a.hash;var queryString=a.search;if(!queryString){var qMark=url.indexOf("?");queryString=(qMark!=-1)?url.substr(qMark):"";} -urlObject.args=OpenLayers.Util.getParameters(queryString);if(((urlObject.protocol=="file:")&&(url.indexOf("file:")!=-1))||((urlObject.protocol!="file:")&&(urlObject.host!=""))){urlObject.pathname=a.pathname;var qIndex=urlObject.pathname.indexOf("?");if(qIndex!=-1){urlObject.pathname=urlObject.pathname.substring(0,qIndex);}}else{var relStr=OpenLayers.Util.removeTail(url);var backs=0;do{var index=relStr.indexOf("../");if(index==0){backs++ -relStr=relStr.substr(3);}else if(index>=0){var prevChunk=relStr.substr(0,index-1);var slash=prevChunk.indexOf("/");prevChunk=(slash!=-1)?prevChunk.substr(0,slash+1):"";var postChunk=relStr.substr(index+3);relStr=prevChunk+postChunk;}}while(index!=-1) +urlObject.args=OpenLayers.Util.getParameters(queryString);if(((urlObject.protocol=="file:")&&(url.indexOf("file:")!=-1))||((urlObject.protocol!="file:")&&(urlObject.host!=""))){urlObject.pathname=a.pathname;var qIndex=urlObject.pathname.indexOf("?");if(qIndex!=-1){urlObject.pathname=urlObject.pathname.substring(0,qIndex);}}else{var relStr=OpenLayers.Util.removeTail(url);var backs=0;do{var index=relStr.indexOf("../");if(index==0){backs++;relStr=relStr.substr(3);}else if(index>=0){var prevChunk=relStr.substr(0,index-1);var slash=prevChunk.indexOf("/");prevChunk=(slash!=-1)?prevChunk.substr(0,slash+1):"";var postChunk=relStr.substr(index+3);relStr=prevChunk+postChunk;}}while(index!=-1) var windowAnchor=document.createElement("a");var windowUrl=window.location.href;if(options.ignoreCase){windowUrl=windowUrl.toLowerCase();} windowAnchor.href=windowUrl;urlObject.protocol=windowAnchor.protocol;var splitter=(windowAnchor.pathname.indexOf("/")!=-1)?"/":"\\";var dirs=windowAnchor.pathname.split(splitter);dirs.pop();while((backs>0)&&(dirs.length>0)){dirs.pop();backs--;} relStr=dirs.join("/")+"/"+relStr;urlObject.pathname=relStr;} if((urlObject.protocol=="file:")||(urlObject.protocol=="")){urlObject.host="localhost";} return urlObject;};OpenLayers.Util.removeTail=function(url){var head=null;var qMark=url.indexOf("?");var hashMark=url.indexOf("#");if(qMark==-1){head=(hashMark!=-1)?url.substr(0,hashMark):url;}else{head=(hashMark!=-1)?url.substr(0,Math.min(qMark,hashMark)):url.substr(0,qMark);} return head;};OpenLayers.Util.getBrowserName=function(){var browserName="";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("opera")!=-1){browserName="opera";}else if(ua.indexOf("msie")!=-1){browserName="msie";}else if(ua.indexOf("safari")!=-1){browserName="safari";}else if(ua.indexOf("mozilla")!=-1){if(ua.indexOf("firefox")!=-1){browserName="firefox";}else{browserName="mozilla";}} -return browserName;};OpenLayers.Rico=new Object();OpenLayers.Rico.Corner={round:function(e,options){e=OpenLayers.Util.getElement(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement") -color=this._background(e);var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent") -bgColor=this._background(e.offsetParent);this._roundCornersImpl(e,color,bgColor);},changeColor:function(theDiv,newColor){theDiv.style.backgroundColor=newColor;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx"+el.innerHTML+""},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i=0;i--) -corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;} +return browserName;};OpenLayers.Util.getRenderedDimensions=function(contentHTML,size){var w=h=null;var container=document.createElement("div");container.style.overflow="";container.style.position="absolute";container.style.left="-9999px";if(size){if(size.w){w=container.style.width=size.w;}else if(size.h){h=container.style.height=size.h;}} +var content=document.createElement("div");content.innerHTML=contentHTML;container.appendChild(content);document.body.appendChild(container);if(!w){w=parseInt(content.scrollWidth);container.style.width=w+"px";} +if(!h){h=parseInt(content.scrollHeight);} +container.removeChild(content);document.body.removeChild(container);return new OpenLayers.Size(w,h);};OpenLayers.Util.getScrollbarWidth=function(){var scrollbarWidth=OpenLayers.Util._scrollbarWidth;if(scrollbarWidth==null){var scr=null;var inn=null;var wNoScroll=0;var wScroll=0;scr=document.createElement('div');scr.style.position='absolute';scr.style.top='-1000px';scr.style.left='-1000px';scr.style.width='100px';scr.style.height='50px';scr.style.overflow='hidden';inn=document.createElement('div');inn.style.width='100%';inn.style.height='200px';scr.appendChild(inn);document.body.appendChild(scr);wNoScroll=inn.offsetWidth;scr.style.overflow='scroll';wScroll=inn.offsetWidth;document.body.removeChild(document.body.lastChild);OpenLayers.Util._scrollbarWidth=(wNoScroll-wScroll);scrollbarWidth=OpenLayers.Util._scrollbarWidth;} +return scrollbarWidth;};OpenLayers.Rico=new Object();OpenLayers.Rico.Corner={round:function(e,options){e=OpenLayers.Util.getElement(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement"){color=this._background(e);} +var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent"){bgColor=this._background(e.offsetParent);} +this._roundCornersImpl(e,color,bgColor);},changeColor:function(theDiv,newColor){theDiv.style.backgroundColor=newColor;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx"+el.innerHTML+"";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));} +el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;} else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";} -if(!this.options.compact&&(n==(this.options.numSlices-1))) -inStyle.height="2px";this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false} -OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()) -this.options.blend=false;},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")) -return"";if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0) -return"";if(this.options.corners.indexOf("tl")>=0) -return"left";else if(this.options.corners.indexOf("tr")>=0) -return"right";return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")) -return"";if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0) -return"";if(this.options.corners.indexOf("bl")>=0) -return"left";else if(this.options.corners.indexOf("br")>=0) -return"right";return"";},_borderColor:function(color,bgColor){if(color=="transparent") -return bgColor;else if(this.options.border) -return this.options.border;else if(this.options.blend) -return this._blend(bgColor,color);else -return"";},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";} +if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";} +this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()){this.options.blend=false;}},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")){return"";} +if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0){return"";} +if(this.options.corners.indexOf("tl")>=0){return"left";}else if(this.options.corners.indexOf("tr")>=0){return"right";} +return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")){return"";} +if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0){return"";} +if(this.options.corners.indexOf("bl")>=0){return"left";}else if(this.options.corners.indexOf("br")>=0){return"right";} +return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return this._blend(bgColor,color);}else{return"";}},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";} else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";} else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";} else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";} else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";} -if(this.options.border!=false) -el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";},_marginSize:function(n){if(this._isTransparent()) -return 0;var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend) -return smBlendedMarginSizes[n];else if(this.options.compact) -return compactMarginSizes[n];else if(this.options.blend) -return blendedMarginSizes[n];else -return marginSizes[n];},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())) -return 1;else if(this.options.compact) -return compactBorderSizes[n];else if(this.options.blend) -return blendedBorderSizes[n];else if(this.options.border) -return actualBorderSizes[n];else if(this._isTransparent()) -return transparentBorderSizes[n];return 0;},_hasString:function(str){for(var i=1;i=0)return true;return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}} -OpenLayers.ProxyHost="";OpenLayers.nullHandler=function(request){alert("Unhandled request return "+request.statusText);};OpenLayers.loadURL=function(uri,params,caller,onComplete,onFailure){if(OpenLayers.ProxyHost&&OpenLayers.String.startsWith(uri,"http")){uri=OpenLayers.ProxyHost+escape(uri);} -var success=(onComplete)?OpenLayers.Function.bind(onComplete,caller):OpenLayers.nullHandler;var failure=(onFailure)?OpenLayers.Function.bind(onFailure,caller):OpenLayers.nullHandler;new OpenLayers.Ajax.Request(uri,{method:'get',parameters:params,onComplete:success,onFailure:failure});};OpenLayers.parseXMLString=function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} +if(this.options.border!=false){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}},_marginSize:function(n){if(this._isTransparent()){return 0;} +var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend){return smBlendedMarginSizes[n];}else if(this.options.compact){return compactMarginSizes[n];}else if(this.options.blend){return blendedMarginSizes[n];}else{return marginSizes[n];}},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1;}else if(this.options.compact){return compactBorderSizes[n];}else if(this.options.blend){return blendedBorderSizes[n];}else if(this.options.border){return actualBorderSizes[n];}else if(this._isTransparent()){return transparentBorderSizes[n];} +return 0;},_hasString:function(str){for(var i=1;i=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};OpenLayers.ProxyHost="";OpenLayers.nullHandler=function(request){alert(OpenLayers.i18n("unhandledRequest",{'statusText':request.statusText}));};OpenLayers.loadURL=function(uri,params,caller,onComplete,onFailure){var success=(onComplete)?OpenLayers.Function.bind(onComplete,caller):OpenLayers.nullHandler;var failure=(onFailure)?OpenLayers.Function.bind(onFailure,caller):OpenLayers.nullHandler;var request=new OpenLayers.Ajax.Request(uri,{method:'get',parameters:params,onComplete:success,onFailure:failure});return request.transport;};OpenLayers.parseXMLString=function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} var ajaxResponse=OpenLayers.Util.Try(function(){var xmldom=new ActiveXObject('Microsoft.XMLDOM');xmldom.loadXML(text);return xmldom;},function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} -req.send(null);return req.responseXML;});return ajaxResponse;};OpenLayers.Ajax={emptyFunction:function(){},getTransport:function(){return OpenLayers.Util.Try(function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')},function(){return new XMLHttpRequest()})||false;},activeRequestCount:0};OpenLayers.Ajax.Responders={responders:[],register:function(responderToAdd){for(var i=0;i=200&&this.transport.status<300);},responseIsFailure:function(){return!this.responseIsSuccess();}};OpenLayers.Ajax.Request=OpenLayers.Class(OpenLayers.Ajax.Base,{initialize:function(url,options){this.transport=OpenLayers.Ajax.getTransport();this.setOptions(options);this.request(url);},request:function(url){var parameters=this.options.parameters||'';if(parameters.length>0)parameters+='&_=';try{this.url=url;if(this.options.method=='get'&¶meters.length>0){this.url+=(this.url.match(/\?/)?'&':'?')+parameters;} -OpenLayers.Ajax.Responders.dispatch('onCreate',this,this.transport);this.transport.open(this.options.method,this.url,this.options.asynchronous);if(this.options.asynchronous){this.transport.onreadystatechange=OpenLayers.Function.bind(this.onStateChange,this);setTimeout(OpenLayers.Function.bind((function(){this.respondToReadyState(1)}),this),10);} -this.setRequestHeaders();var body=this.options.postBody?this.options.postBody:parameters;this.transport.send(this.options.method=='post'?body:null);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(e){this.dispatchException(e);}},setRequestHeaders:function(){var requestHeaders=['X-Requested-With','XMLHttpRequest','X-Prototype-Version','OpenLayers'];if(this.options.method=='post'&&!this.options.postBody){requestHeaders.push('Content-type','application/x-www-form-urlencoded');if(this.transport.overrideMimeType){requestHeaders.push('Connection','close');}} -if(this.options.requestHeaders){requestHeaders.push.apply(requestHeaders,this.options.requestHeaders);} -for(var i=0;i-1)?'&':'?')+params;}else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){params+='&_=';}} +try{var response=new OpenLayers.Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(response);} +OpenLayers.Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){window.setTimeout(OpenLayers.Function.bind(this.respondToReadyState,this,1),10);} +this.transport.onreadystatechange=OpenLayers.Function.bind(this.onStateChange,this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete)){this.respondToReadyState(this.transport.readyState);}},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*','OpenLayers':true};if(this.method=='post'){headers['Content-type']=this.options.contentType+ +(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){headers['Connection']='close';}} +if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function'){for(var i=0,length=extras.length;i=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0;}},respondToReadyState:function(readyState){var state=OpenLayers.Ajax.Request.Events[readyState];var response=new OpenLayers.Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||OpenLayers.Ajax.emptyFunction)(response);}catch(e){this.dispatchException(e);} +var contentType=response.getHeader('Content-type');} +try{(this.options['on'+state]||OpenLayers.Ajax.emptyFunction)(response);OpenLayers.Ajax.Responders.dispatch('on'+state,this,response);}catch(e){this.dispatchException(e);} +if(state=='Complete'){this.transport.onreadystatechange=OpenLayers.Ajax.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null;}},dispatchException:function(exception){var handler=this.options.onException;if(handler){handler(this,exception);OpenLayers.Ajax.Responders.dispatch('onException',this,exception);}else{var listener=false;var responders=OpenLayers.Ajax.Responders.responders;for(var i=0;i2&&!(!!(window.attachEvent&&!window.opera)))||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=transport.responseText==null?'':String(transport.responseText);} +if(readyState==4){var xml=transport.responseXML;this.responseXML=xml===undefined?null:xml;}},getStatus:OpenLayers.Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return'';}},getHeader:OpenLayers.Ajax.Request.prototype.getHeader,getResponseHeader:function(name){return this.transport.getResponseHeader(name);}});OpenLayers.Ajax.getElementsByTagNameNS=function(parentnode,nsuri,nsprefix,tagname){var elem=null;if(parentnode.getElementsByTagNameNS){elem=parentnode.getElementsByTagNameNS(nsuri,tagname);}else{elem=parentnode.getElementsByTagName(nsprefix+':'+tagname);} +return elem;};OpenLayers.Ajax.serializeXMLToString=function(xmldom){var serializer=new XMLSerializer();var data=serializer.serializeToString(xmldom);return data;};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,initialize:function(left,bottom,right,top){if(left!=null){this.left=parseFloat(left);} if(bottom!=null){this.bottom=parseFloat(bottom);} if(right!=null){this.right=parseFloat(right);} if(top!=null){this.top=parseFloat(top);}},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top);},equals:function(bounds){var equals=false;if(bounds!=null){equals=((this.left==bounds.left)&&(this.right==bounds.right)&&(this.top==bounds.top)&&(this.bottom==bounds.bottom));} @@ -207,7 +195,7 @@ return equals;},toString:function(){return("left-bottom=("+this.left+","+this.bo var mult=Math.pow(10,decimal);var bbox=Math.round(this.left*mult)/mult+","+ Math.round(this.bottom*mult)/mult+","+ Math.round(this.right*mult)/mult+","+ -Math.round(this.top*mult)/mult;return bbox;},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(){return new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2);},add:function(x,y){if((x==null)||(y==null)){var msg="You must pass both x and y values to the add function.";OpenLayers.Console.error(msg);return null;} +Math.round(this.top*mult)/mult;return bbox;},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(){return new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2);},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("boundsAddError");OpenLayers.Console.error(msg);return null;} return new OpenLayers.Bounds(this.left+x,this.bottom+y,this.right+x,this.top+y);},extend:function(object){var bounds=null;if(object){switch(object.CLASS_NAME){case"OpenLayers.LonLat":bounds=new OpenLayers.Bounds(object.lon,object.lat,object.lon,object.lat);break;case"OpenLayers.Geometry.Point":bounds=new OpenLayers.Bounds(object.x,object.y,object.x,object.y);break;case"OpenLayers.Bounds":bounds=object;break;} if(bounds){if((this.left==null)||(bounds.leftthis.bottom)&&(bounds.bottombounds.bottom)&&(this.bottomthis.bottom)&&(bounds.topbounds.bottom)&&(this.topthis.left)&&(bounds.rightbounds.left)&&(this.rightthis.left)&&(bounds.leftbounds.left)&&(this.left=this.left)&&(bounds.left<=this.right);inTop=(bounds.top>=this.bottom)&&(bounds.top<=this.top);inRight=(bounds.right>=this.left)&&(bounds.right<=this.right);inBottom=(bounds.bottom>=this.bottom)&&(bounds.bottom<=this.top);}else{inLeft=(bounds.left>this.left)&&(bounds.leftthis.bottom)&&(bounds.topthis.left)&&(bounds.rightthis.bottom)&&(bounds.bottom=maxExtent.right&&newBounds.right>maxExtent.right){newBounds=newBounds.add(-maxExtent.getWidth(),0);}} return newBounds;},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(str){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds);};OpenLayers.Bounds.fromArray=function(bbox){return new OpenLayers.Bounds(parseFloat(bbox[0]),parseFloat(bbox[1]),parseFloat(bbox[2]),parseFloat(bbox[3]));};OpenLayers.Bounds.fromSize=function(size){return new OpenLayers.Bounds(0,size.h,size.w,0);};OpenLayers.Bounds.oppositeQuadrant=function(quadrant){var opp="";opp+=(quadrant.charAt(0)=='t')?'b':'t';opp+=(quadrant.charAt(1)=='l')?'r':'l';return opp;};OpenLayers.Element={visible:function(element){return OpenLayers.Util.getElement(element).style.display!='none';},toggle:function(){for(var i=0;imaxExtent.right){newLonLat.lon-=maxExtent.getWidth();}} return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(parseFloat(pair[0]),parseFloat(pair[1]));};OpenLayers.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));} -return equals;},add:function(x,y){if((x==null)||(y==null)){var msg="You must pass both x and y values to the add function.";OpenLayers.Console.error(msg);return null;} +return equals;},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("pixelAddError");OpenLayers.Console.error(msg);return null;} return new OpenLayers.Pixel(this.x+x,this.y+y);},offset:function(px){var newPx=this.clone();if(px){newPx=this.add(px.x,px.y);} return newPx;},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0.0,h:0.0,initialize:function(w,h){this.w=parseFloat(w);this.h=parseFloat(h);},toString:function(){return("w="+this.w+",h="+this.h);},clone:function(){return new OpenLayers.Size(this.w,this.h);},equals:function(sz){var equals=false;if(sz!=null){equals=((this.w==sz.w&&this.h==sz.h)||(isNaN(this.w)&&isNaN(this.h)&&isNaN(sz.w)&&isNaN(sz.h)));} -return equals;},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},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(){if(window.console){var scripts=document.getElementsByTagName("script");for(var i=0;i0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}});OpenLayers.Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++)hexCode+=(shortHexCode.charAt(i)+ -shortHexCode.charAt(i));} -if(hexCode.indexOf('#')==0) -hexCode=hexCode.substring(1);var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new OpenLayers.Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));} -OpenLayers.Rico.Color.createColorFromBackground=function(elem){var actualColor=RicoUtil.getElementsComputedStyle(OpenLayers.Util.getElement(elem),"backgroundColor","background-color");if(actualColor=="transparent"&&elem.parentNode) -return OpenLayers.Rico.Color.createColorFromBackground(elem.parentNode);if(actualColor==null) -return new OpenLayers.Rico.Color(255,255,255);if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new OpenLayers.Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));} +if(this.autoSize){var realSize=OpenLayers.Util.getRenderedDimensions(this.contentHTML);var safeSize=this.getSafeContentSize(realSize);var newSize=null;if(safeSize.equals(realSize)){newSize=realSize;}else{var fixedSize=new OpenLayers.Size();fixedSize.w=(safeSize.w(mapSize.w-this.map.paddingForPopups.right)){newTL.x=mapSize.w-this.map.paddingForPopups.right-this.size.w;} +if(origTL.y(mapSize.h-this.map.paddingForPopups.bottom)){newTL.y=mapSize.h-this.map.paddingForPopups.bottom-this.size.h;} +var dx=origTL.x-newTL.x;var dy=origTL.y-newTL.y;this.map.pan(dx,dy);},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,true);this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,scope:this});},onmousedown:function(evt){this.mousedown=true;OpenLayers.Event.stop(evt,true);},onmousemove:function(evt){if(this.mousedown){OpenLayers.Event.stop(evt,true);}},onmouseup:function(evt){if(this.mousedown){this.mousedown=false;OpenLayers.Event.stop(evt,true);}},onclick:function(evt){OpenLayers.Event.stop(evt,true);},onmouseout:function(evt){this.mousedown=false;},ondblclick:function(evt){OpenLayers.Event.stop(evt,true);},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.Renderer=OpenLayers.Class({container:null,extent:null,size:null,resolution:null,map:null,initialize:function(containerID){this.container=OpenLayers.Util.getElement(containerID);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent){this.extent=extent.clone();this.resolution=null;},setSize:function(size){this.size=size.clone();this.resolution=null;},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution;},drawFeature:function(feature,style){if(style==null){style=feature.style;} +if(feature.geometry){this.drawGeometry(feature.geometry,style,feature.id);}},drawGeometry:function(geometry,style,featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(features instanceof Array)){features=[features];} +for(var i=0;ithis.duration){if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);this.playing=false;} +window.clearInterval(this.interval);this.interval=null;}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(red,green,blue){this.rgb={r:red,g:green,b:blue};},setRed:function(r){this.rgb.r=r;},setGreen:function(g){this.rgb.g=g;},setBlue:function(b){this.rgb.b=b;},setHue:function(h){var hsb=this.asHSB();hsb.h=h;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setSaturation:function(s){var hsb=this.asHSB();hsb.s=s;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setBrightness:function(b){var hsb=this.asHSB();hsb.b=b;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},darken:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.max(hsb.b-percent,0));},brighten:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.min(hsb.b+percent,1));},blend:function(other){this.rgb.r=Math.floor((this.rgb.r+other.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+other.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+other.rgb.b)/2);},isBright:function(){var hsb=this.asHSB();return this.asHSB().b>0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}});OpenLayers.Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++){hexCode+=(shortHexCode.charAt(i)+ +shortHexCode.charAt(i));}} +if(hexCode.indexOf('#')==0){hexCode=hexCode.substring(1);} +var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new OpenLayers.Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));};OpenLayers.Rico.Color.createColorFromBackground=function(elem){var actualColor=RicoUtil.getElementsComputedStyle(OpenLayers.Util.getElement(elem),"backgroundColor","background-color");if(actualColor=="transparent"&&elem.parentNode){return OpenLayers.Rico.Color.createColorFromBackground(elem.parentNode);} +if(actualColor==null){return new OpenLayers.Rico.Color(255,255,255);} +if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new OpenLayers.Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));} else if(actualColor.indexOf("#")==0){return OpenLayers.Rico.Color.createFromHex(actualColor);} -else -return new OpenLayers.Rico.Color(255,255,255);} -OpenLayers.Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;} +else{return new OpenLayers.Rico.Color(255,255,255);}};OpenLayers.Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;} else{var h=(hue-Math.floor(hue))*6.0;var f=h-Math.floor(h);var p=brightness*(1.0-saturation);var q=brightness*(1.0-saturation*f);var t=brightness*(1.0-(saturation*(1.0-f)));switch(parseInt(h)){case 0:red=(brightness*255.0+0.5);green=(t*255.0+0.5);blue=(p*255.0+0.5);break;case 1:red=(q*255.0+0.5);green=(brightness*255.0+0.5);blue=(p*255.0+0.5);break;case 2:red=(p*255.0+0.5);green=(brightness*255.0+0.5);blue=(t*255.0+0.5);break;case 3:red=(p*255.0+0.5);green=(q*255.0+0.5);blue=(brightness*255.0+0.5);break;case 4:red=(t*255.0+0.5);green=(p*255.0+0.5);blue=(brightness*255.0+0.5);break;case 5:red=(brightness*255.0+0.5);green=(p*255.0+0.5);blue=(q*255.0+0.5);break;}} -return{r:parseInt(red),g:parseInt(green),b:parseInt(blue)};} -OpenLayers.Rico.Color.RGBtoHSB=function(r,g,b){var hue;var saturation;var brightness;var cmax=(r>g)?r:g;if(b>cmax) -cmax=b;var cmin=(rg)?r:g;if(b>cmax){cmax=b;} +var cmin=(rBase Layer";this.baseLbl.style.marginTop="3px";this.baseLbl.style.marginLeft="3px";this.baseLbl.style.marginBottom="3px";this.baseLayersDiv=document.createElement("div");this.baseLayersDiv.style.paddingLeft="10px";this.dataLbl=document.createElement("div");this.dataLbl.innerHTML="Overlays";this.dataLbl.style.marginTop="3px";this.dataLbl.style.marginLeft="3px";this.dataLbl.style.marginBottom="3px";this.dataLayersDiv=document.createElement("div");this.dataLayersDiv.style.paddingLeft="10px";if(this.ascending){this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);}else{this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);} +for(var i=0;i0){this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),this.map.getZoom()-1);}},zoomBoxEnd:function(evt){if(this.mouseDragStart!=null){if(Math.abs(this.mouseDragStart.x-evt.xy.x)>5||Math.abs(this.mouseDragStart.y-evt.xy.y)>5){var start=this.map.getLonLatFromViewPortPx(this.mouseDragStart);var end=this.map.getLonLatFromViewPortPx(evt.xy);var top=Math.max(start.lat,end.lat);var bottom=Math.min(start.lat,end.lat);var left=Math.min(start.lon,end.lon);var right=Math.max(start.lon,end.lon);var bounds=new OpenLayers.Bounds(left,bottom,right,top);this.map.zoomToExtent(bounds);}else{var end=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(new OpenLayers.LonLat((end.lon),(end.lat)),this.map.getZoom()+1);} this.removeZoomBox();}},removeZoomBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},onWheelEvent:function(e){var inMap=false;var elem=OpenLayers.Event.element(e);while(elem!=null){if(this.map&&elem==this.map.div){inMap=true;break;} elem=elem.parentNode;} if(inMap){var delta=0;if(!e){e=window.event;} -if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} +if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} if(delta){e.xy=this.mousePosition;if(delta<0){this.defaultWheelDown(e);}else{this.defaultWheelUp(e);}} -OpenLayers.Event.stop(e);}},CLASS_NAME:"OpenLayers.Control.MouseDefaults"});OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{element:null,prefix:'',separator:', ',suffix:'',numdigits:5,granularity:10,lastXy:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.map){this.map.events.unregister('mousemove',this,this.redraw);} -OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.div.left="";this.div.top="";this.div.className=this.displayClass;this.element=this.div;} +OpenLayers.Event.stop(e);}},CLASS_NAME:"OpenLayers.Control.MouseDefaults"});OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{element:null,prefix:'',separator:', ',suffix:'',numdigits:5,granularity:10,lastXy:null,displayProjection:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.map){this.map.events.unregister('mousemove',this,this.redraw);} +OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.div.left="";this.div.top="";this.element=this.div;} this.redraw();return this.div;},redraw:function(evt){var lonLat;if(evt==null){lonLat=new OpenLayers.LonLat(0,0);}else{if(this.lastXy==null||Math.abs(evt.xy.x-this.lastXy.x)>this.granularity||Math.abs(evt.xy.y-this.lastXy.y)>this.granularity) {this.lastXy=evt.xy;return;} -lonLat=this.map.getLonLatFromPixel(evt.xy);this.lastXy=evt.xy;} -var digits=parseInt(this.numdigits);var newHtml=this.prefix+ +lonLat=this.map.getLonLatFromPixel(evt.xy);if(!lonLat){return;} +if(this.displayProjection){lonLat.transform(this.map.getProjectionObject(),this.displayProjection);} +this.lastXy=evt.xy;} +var newHtml=this.formatOutput(lonLat);if(newHtml!=this.element.innerHTML){this.element.innerHTML=newHtml;}},formatOutput:function(lonLat){var digits=parseInt(this.numdigits);var newHtml=this.prefix+ lonLat.lon.toFixed(digits)+ this.separator+ lonLat.lat.toFixed(digits)+ -this.suffix;if(newHtml!=this.element.innerHTML){this.element.innerHTML=newHtml;}},setMap:function(){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register('mousemove',this,this.redraw);},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);while(this.buttons.length){var btn=this.buttons.shift();btn.map=null;OpenLayers.Event.stopObservingElement(btn);} -this.buttons=null;this.position=null;},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_PanZoom_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;btn.slideFactor=this.slideFactor;this.buttons.push(btn);return btn;},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;switch(this.action){case"panup":this.map.pan(0,-50);break;case"pandown":this.map.pan(0,50);break;case"panleft":this.map.pan(-50,0);break;case"panright":this.map.pan(50,0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} -OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,defaultControl:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.controls=[];},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var i=this.controls.length-1;i>=0;i--){OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);this.controls[i].panel_div=null;}},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var i=0;i1){this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);} +if(this.previousStack.length>(this.limit+1)){this.previousStack.pop();} +if(this.nextStack.length>0){this.nextStack=[];this.onNextChange(null,0);}} +return true;},this);}},activate:function(){var activated=false;if(this.map){if(OpenLayers.Control.prototype.activate.apply(this)){if(this.listeners==null){this.setListeners();} +for(var type in this.listeners){this.map.events.register(type,this,this.listeners[type]);} +activated=true;if(this.previousStack.length==0){this.initStack();}}} +return activated;},initStack:function(){if(this.map.getCenter()){this.listeners.moveend();}},deactivate:function(){var deactivated=false;if(this.map){if(OpenLayers.Control.prototype.deactivate.apply(this)){for(var type in this.listeners){this.map.events.unregister(type,this,this.listeners[type]);} +if(this.clearOnDeactivate){this.clear();} +deactivated=true;}} +return deactivated;},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);while(this.buttons.length){var btn=this.buttons.shift();btn.map=null;OpenLayers.Event.stopObservingElement(btn);} +this.buttons=null;this.position=null;},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_PanZoom_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;btn.slideFactor=this.slideFactor;this.buttons.push(btn);return btn;},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +switch(this.action){case"panup":this.map.pan(0,-this.slideFactor);break;case"pandown":this.map.pan(0,this.slideFactor);break;case"panleft":this.map.pan(-this.slideFactor,0);break;case"panright":this.map.pan(this.slideFactor,0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} +OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,defaultControl:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.controls=[];},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var i=this.controls.length-1;i>=0;i--){if(this.controls[i].events){this.controls[i].events.un({"activate":this.redraw,"deactivate":this.redraw,scope:this});} +OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);this.controls[i].panel_div=null;}},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){for(var i=0;i=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);} -this.element.innerHTML="Scale = 1 : "+scale;},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){if(this.map){this.map.zoomToMaxExtent();}},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Event={observers:false,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(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} -if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))) -element=element.parentNode;return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} +href+='?'+OpenLayers.Util.getParameterString(params);this.element.href=href;},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,initialize:function(element,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!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 scale=this.map.getScale();if(!scale){return;} +if(scale>=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);} +this.element.innerHTML=OpenLayers.i18n("scale",{'scaleDenom':scale});},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.eTop){this.div.style.display="block";this.div.style.position="absolute";this.eTop=document.createElement("div");this.eTop.className=this.displayClass+"Top";var theLen=this.topInUnits.length;this.div.appendChild(this.eTop);if((this.topOutUnits=="")||(this.topInUnits=="")){this.eTop.style.visibility="hidden";}else{this.eTop.style.visibility="visible";} +this.eBottom=document.createElement("div");this.eBottom.className=this.displayClass+"Bottom";this.div.appendChild(this.eBottom);if((this.bottomOutUnits=="")||(this.bottomInUnits=="")){this.eBottom.style.visibility="hidden";}else{this.eBottom.style.visibility="visible";}} +this.map.events.register('moveend',this,this.update);this.update();return this.div;},getBarLen:function(maxLen){var digits=parseInt(Math.log(maxLen)/Math.log(10));var pow10=Math.pow(10,digits);var firstChar=parseInt(maxLen/pow10);var barLen;if(firstChar>5){barLen=5;}else if(firstChar>2){barLen=2;}else{barLen=1;} +return barLen*pow10;},update:function(){var res=this.map.getResolution();if(!res){return;} +var curMapUnits=this.map.units;var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var topUnits;var bottomUnits;if(maxSizeData>100000){topUnits=this.topOutUnits;bottomUnits=this.bottomOutUnits;}else{topUnits=this.topInUnits;bottomUnits=this.bottomInUnits;} +var topMax=maxSizeData/inches[topUnits];var bottomMax=maxSizeData/inches[bottomUnits];var topRounded=this.getBarLen(topMax);var bottomRounded=this.getBarLen(bottomMax);topMax=topRounded/inches[curMapUnits]*inches[topUnits];bottomMax=bottomRounded/inches[curMapUnits]*inches[bottomUnits];var topPx=topMax/res;var bottomPx=bottomMax/res;this.eTop.style.width=Math.round(topPx)+"px";this.eBottom.style.width=Math.round(bottomPx)+"px";this.eTop.innerHTML=topRounded+" "+topUnits;this.eBottom.innerHTML=bottomRounded+" "+bottomUnits;},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){if(this.map){this.map.zoomToMaxExtent();}},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Event={observers:false,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(event){return event.target||event.srcElement;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} +if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))){element=element.parentNode;} +return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} if(!this.observers){this.observers={};} if(!element._eventCacheID){var idPrefix="eventCacheID_";if(element.id){idPrefix=element.id+"_"+idPrefix;} element._eventCacheID=OpenLayers.Util.createUniqueID(idPrefix);} @@ -352,72 +401,67 @@ this.observers[cacheID].push({'element':element,'name':name,'observer':observer, var foundEntry=false;var elementObservers=OpenLayers.Event.observers[cacheID];if(elementObservers){var i=0;while(!foundEntry&&i0)){for(var i=0;i0)){var continueChain;for(var i=0;i0){this.root.removeChild(this.root.firstChild);}}},getNodeType:function(geometry){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;ibottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} -bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Control.MouseToolbar=OpenLayers.Class(OpenLayers.Control.MouseDefaults,{mode:null,buttons:null,direction:"vertical",buttonClicked:null,initialize:function(position,direction){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.position=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,OpenLayers.Control.MouseToolbar.Y);if(position){this.position=position;} +-(document.documentElement.clientTop||0));},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Format=OpenLayers.Class({externalProjection:null,internalProjection:null,initialize:function(options){OpenLayers.Util.extend(this,options);},read:function(data){alert(OpenLayers.i18n("readNotImplemented"));},write:function(object){alert(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Lang.en={'unhandledRequest':"Unhandled request return ${statusText}",'permalink':"Permalink",'overlays':"Overlays",'baseLayer':"Base Layer",'sameProjection':"The overview map only works when it is in the same projection as the main map",'readNotImplemented':"Read not implemented.",'writeNotImplemented':"Write not implemented.",'noFID':"Can't update a feature for which there is no FID.",'errorLoadingGML':"Error in loading GML file ${url}",'browserNotSupported':"Your browser does not support vector rendering. Currently supported renderers are:\n${renderers}",'componentShouldBe':"addFeatures : component should be an ${geomType}",'getFeatureError':"getFeatureFromEvent called on layer with no renderer. This usually means you "+"destroyed a layer, but not some handler which is associated with it.",'minZoomLevelError':"The minZoomLevel property is only intended for use "+"with the FixedZoomLevels-descendent layers. That this "+"wfs layer checks for minZoomLevel is a relic of the"+"past. We cannot, however, remove it without possibly "+"breaking OL based applications that may depend on it."+" Therefore we are deprecating it -- the minZoomLevel "+"check below will be removed at 3.0. Please instead "+"use min/max resolution setting as described here: "+"http://trac.openlayers.org/wiki/SettingZoomLevels",'commitSuccess':"WFS Transaction: SUCCESS ${response}",'commitFailed':"WFS Transaction: FAILED ${response}",'googleWarning':"The Google Layer was unable to load correctly.

    "+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

    "+"Most likely, this is because the Google Maps library "+"script was either not included, or does not contain the "+"correct API key for your site.

    "+"Developers: For help getting this working correctly, "+"
    click here",'getLayerWarning':"The ${layerType} Layer was unable to load correctly.

    "+"To get rid of this message, select a new BaseLayer "+"in the layer switcher in the upper-right corner.

    "+"Most likely, this is because the ${layerLib} library "+"script was either not correctly included.

    "+"Developers: For help getting this working correctly, "+"click here",'scale':"Scale = 1 : ${scaleDenom}",'layerAlreadyAdded':"You tried to add the layer: ${layerName} to the map, but it has already been added",'reprojectDeprecated':"You are using the 'reproject' option "+"on the ${layerName} layer. This option is deprecated: "+"its use was designed to support displaying data over commercial "+"basemaps, but that functionality should now be achieved by using "+"Spherical Mercator support. More information is available from "+"http://trac.openlayers.org/wiki/SphericalMercator.",'methodDeprecated':"This method has been deprecated and will be removed in 3.0. "+"Please use ${newMethod} instead.",'boundsAddError':"You must pass both x and y values to the add function.",'lonlatAddError':"You must pass both lon and lat values to the add function.",'pixelAddError':"You must pass both x and y values to the add function.",'unsupportedGeometryType':"Unsupported geometry type: ${geomType}",'pagePositionFailed':"OpenLayers.Util.pagePosition failed: element with id ${elemId} may be misplaced.",'end':''};OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,anchor:null,initialize:function(id,lonlat,size,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=new Array(id,lonlat,size,contentHTML,closeBox,closeBoxCallback);OpenLayers.Popup.prototype.initialize.apply(this,newArguments);this.anchor=(anchor!=null)?anchor:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)};},destroy:function(){this.anchor=null;this.relativePosition=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments);},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments);},moveTo:function(px){var oldRelativePosition=this.relativePosition;this.relativePosition=this.calculateRelativePosition(px);var newPx=this.calculateNewPx(px);var newArguments=new Array(newPx);OpenLayers.Popup.prototype.moveTo.apply(this,newArguments);if(this.relativePosition!=oldRelativePosition){this.updateRelativePosition();}},setSize:function(size){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(px);}},calculateRelativePosition:function(px){var lonlat=this.map.getLonLatFromLayerPx(px);var extent=this.map.getExtent();var quadrant=extent.determineQuadrant(lonlat);return OpenLayers.Bounds.oppositeQuadrant(quadrant);},updateRelativePosition:function(){},calculateNewPx:function(px){var newPx=px.offset(this.anchor.offset);var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-this.size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-this.size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},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(projection){if(projection&&projection.getCode){return this.getCode()==projection.getCode();}else{return false;}},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};} +OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);} +return point;};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,xmlns:null,minimumSymbolizer:{strokeLinecap:"round",strokeOpacity:1,fillOpacity:1,pointRadius:0},initialize:function(containerID){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot();this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){if(this.root){while(this.root.childNodes.length>0){this.root.removeChild(this.root.firstChild);}}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;ibottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} +var bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},startTransition:function(){},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));if(withinMaxExtent){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.imageSize||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();}}},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Control.MouseToolbar=OpenLayers.Class(OpenLayers.Control.MouseDefaults,{mode:null,buttons:null,direction:"vertical",buttonClicked:null,initialize:function(position,direction){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.position=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,OpenLayers.Control.MouseToolbar.Y);if(position){this.position=position;} if(direction){this.direction=direction;} this.measureDivs=[];},destroy:function(){for(var btnId in this.buttons){var btn=this.buttons[btnId];btn.map=null;btn.events.destroy();} -OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);OpenLayers.Control.MouseDefaults.prototype.draw.apply(this,arguments);this.buttons={};var sz=new OpenLayers.Size(28,28);var centered=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0);this._addButton("zoombox","drag-rectangle-off.png","drag-rectangle-on.png",centered,sz,"Shift->Drag to zoom to area");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this._addButton("pan","panning-hand-off.png","panning-hand-on.png",centered,sz,"Drag the map to pan.");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this.switchModeTo("pan");return this.div;},_addButton:function(id,img,activeImg,xy,sz,title){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var activeImgLocation=OpenLayers.Util.getImagesLocation()+activeImg;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MouseToolbar_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);btn.imgLocation=imgLocation;btn.activeImgLocation=activeImgLocation;btn.events=new OpenLayers.Events(this,btn,null,true);btn.events.register("mousedown",this,this.buttonDown);btn.events.register("mouseup",this,this.buttonUp);btn.events.register("dblclick",this,OpenLayers.Event.stop);btn.action=id;btn.title=title;btn.alt=title;btn.map=this.map;this.buttons[id]=btn;return btn;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.buttonClicked=evt.element.action;OpenLayers.Event.stop(evt);},buttonUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;if(this.buttonClicked!=null){if(this.buttonClicked==evt.element.action){this.switchModeTo(evt.element.action);} -OpenLayers.Event.stop(evt);this.buttonClicked=null;}},defaultDblClick:function(evt){this.switchModeTo("pan");this.performedDrag=false;var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.mouseDragStart=evt.xy.clone();this.performedDrag=false;this.startViaKeyboard=false;if(evt.shiftKey&&this.mode!="zoombox"){this.switchModeTo("zoombox");this.startViaKeyboard=true;}else if(evt.altKey&&this.mode!="measure"){this.switchModeTo("measure");}else if(!this.mode){this.switchModeTo("pan");} -switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);this.performedDrag=true;break;case"measure":var distance="";if(this.measureStart){measureEnd=this.map.getLonLatFromViewPortPx(this.mouseDragStart);distance=OpenLayers.Util.distVincenty(this.measureStart,measureEnd);distance=Math.round(distance*100)/100;distance=distance+"km";this.measureStartBox=this.measureBox;} +OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);OpenLayers.Control.MouseDefaults.prototype.draw.apply(this,arguments);this.buttons={};var sz=new OpenLayers.Size(28,28);var centered=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0);this._addButton("zoombox","drag-rectangle-off.png","drag-rectangle-on.png",centered,sz,"Shift->Drag to zoom to area");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this._addButton("pan","panning-hand-off.png","panning-hand-on.png",centered,sz,"Drag the map to pan.");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this.switchModeTo("pan");return this.div;},_addButton:function(id,img,activeImg,xy,sz,title){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var activeImgLocation=OpenLayers.Util.getImagesLocation()+activeImg;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MouseToolbar_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);btn.imgLocation=imgLocation;btn.activeImgLocation=activeImgLocation;btn.events=new OpenLayers.Events(this,btn,null,true);btn.events.on({"mousedown":this.buttonDown,"mouseup":this.buttonUp,"dblclick":OpenLayers.Event.stop,scope:this});btn.action=id;btn.title=title;btn.alt=title;btn.map=this.map;this.buttons[id]=btn;return btn;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +this.buttonClicked=evt.element.action;OpenLayers.Event.stop(evt);},buttonUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +if(this.buttonClicked!=null){if(this.buttonClicked==evt.element.action){this.switchModeTo(evt.element.action);} +OpenLayers.Event.stop(evt);this.buttonClicked=null;}},defaultDblClick:function(evt){this.switchModeTo("pan");this.performedDrag=false;var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +this.mouseDragStart=evt.xy.clone();this.performedDrag=false;this.startViaKeyboard=false;if(evt.shiftKey&&this.mode!="zoombox"){this.switchModeTo("zoombox");this.startViaKeyboard=true;}else if(evt.altKey&&this.mode!="measure"){this.switchModeTo("measure");}else if(!this.mode){this.switchModeTo("pan");} +switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.viewPortDiv.appendChild(this.zoomBox);this.performedDrag=true;break;case"measure":var distance="";if(this.measureStart){var measureEnd=this.map.getLonLatFromViewPortPx(this.mouseDragStart);distance=OpenLayers.Util.distVincenty(this.measureStart,measureEnd);distance=Math.round(distance*100)/100;distance=distance+"km";this.measureStartBox=this.measureBox;} this.measureStart=this.map.getLonLatFromViewPortPx(this.mouseDragStart);;this.measureBox=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),-2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBox.style.width="4px";this.measureBox.style.height="4px";this.measureBox.style.fontSize="1px";this.measureBox.style.backgroundColor="red";this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);if(distance){this.measureBoxDistance=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBoxDistance.innerHTML=distance;this.measureBoxDistance.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBoxDistance);this.measureDivs.push(this.measureBoxDistance);} this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);this.measureDivs.push(this.measureBox);break;default:this.map.div.style.cursor="move";break;} -document.onselectstart=function(){return false;} -OpenLayers.Event.stop(evt);},switchModeTo:function(mode){if(mode!=this.mode){if(this.mode&&this.buttons[this.mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode],null,null,null,this.buttons[this.mode].imgLocation);} +document.onselectstart=function(){return false;};OpenLayers.Event.stop(evt);},switchModeTo:function(mode){if(mode!=this.mode){if(this.mode&&this.buttons[this.mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode],null,null,null,this.buttons[this.mode].imgLocation);} if(this.mode=="measure"&&mode!="measure"){for(var i=0;i0)){if(this.map.baseLayer){var layer=this.map.baseLayer.clone();this.layers=[layer];}else{this.map.events.register("changebaselayer",this,this.baseLayerDraw);return 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=1000;this.extentRectangle.style.overflow='hidden';this.extentRectangle.style.backgroundImage='url('+ -OpenLayers.Util.getImagesLocation()+'blank.gif)';this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.mapDiv.appendChild(this.extentRectangle);this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);this.map.events.register('moveend',this,this.update);this.elementEvents=new OpenLayers.Events(this,this.element);this.elementEvents.register('mousedown',this,function(e){OpenLayers.Event.stop(e);});this.elementEvents.register('click',this,function(e){OpenLayers.Event.stop(e);});this.elementEvents.register('dblclick',this,function(e){OpenLayers.Event.stop(e);});this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,true);this.rectEvents.register('mouseout',this,this.rectMouseOut);this.rectEvents.register('mousedown',this,this.rectMouseDown);this.rectEvents.register('mousemove',this,this.rectMouseMove);this.rectEvents.register('mouseup',this,this.rectMouseUp);this.rectEvents.register('click',this,function(e){OpenLayers.Event.stop(e);});this.rectEvents.register('dblclick',this,this.rectDblClick);this.mapDivEvents=new OpenLayers.Events(this,this.mapDiv);this.mapDivEvents.register('click',this,this.mapDivClick);if(!this.outsideViewport){this.div.className=this.displayClass+'Container';var imgLocation=OpenLayers.Util.getImagesLocation();var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+'MaximizeButton',null,new OpenLayers.Size(18,18),img,'absolute');this.maximizeDiv.style.display='none';this.maximizeDiv.className=this.displayClass+'MaximizeButton';OpenLayers.Event.observe(this.maximizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv('OpenLayers_Control_minimizeDiv',null,new OpenLayers.Size(18,18),img,'absolute');this.minimizeDiv.style.display='none';this.minimizeDiv.className=this.displayClass+'MinimizeButton';OpenLayers.Event.observe(this.minimizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);var eventsToStop=['dblclick','mousedown'];for(var i=0;i=this.size.h-this.hComp)||(rectPxBounds.right>=this.size.w-this.wComp)){this.updateMapToRect();}else{return;}} -document.onselectstart=null;this.rectDragStart=null;}},rectMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.rectDragStart=evt.xy.clone();this.performedRectDrag=false;OpenLayers.Event.stop(evt);},rectMouseMove:function(evt){if(this.rectDragStart!=null){var deltaX=this.rectDragStart.x-evt.xy.x;var deltaY=this.rectDragStart.y-evt.xy.y;var rectPxBounds=this.getRectPxBounds();var rectTop=rectPxBounds.top;var rectLeft=rectPxBounds.left;var rectHeight=Math.abs(rectPxBounds.getHeight());var rectWidth=rectPxBounds.getWidth();var newTop=Math.max(0,(rectTop-deltaY));newTop=Math.min(newTop,this.ovmap.size.h-this.hComp-rectHeight);var newLeft=Math.max(0,(rectLeft-deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-this.wComp-rectWidth);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+rectHeight,newLeft+rectWidth,newTop));this.rectDragStart=evt.xy.clone();this.performedRectDrag=true;OpenLayers.Event.stop(evt);}},rectMouseUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;if(this.performedRectDrag){this.updateMapToRect();OpenLayers.Event.stop(evt);} -document.onselectstart=null;this.rectDragStart=null;},rectDblClick:function(evt){this.performedRectDrag=false;OpenLayers.Event.stop(evt);this.updateOverview();},mapDivClick:function(evt){var pxBounds=this.getRectPxBounds();var pxCenter=pxBounds.getCenterPixel();var deltaX=evt.xy.x-pxCenter.x;var deltaY=evt.xy.y-pxCenter.y;var top=pxBounds.top;var left=pxBounds.left;var height=Math.abs(pxBounds.getHeight());var width=pxBounds.getWidth();var newTop=Math.max(0,(top+deltaY));newTop=Math.min(newTop,this.ovmap.size.h-height);var newLeft=Math.max(0,(left+deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-width);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+height,newLeft+width,newTop));this.updateMapToRect();OpenLayers.Event.stop(evt);},maximizeControl:function(e){this.element.style.display='';this.showToggle(false);if(e!=null){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.element.style.display='none';this.showToggle(true);if(e!=null){OpenLayers.Event.stop(e);}},showToggle:function(minimize){this.maximizeDiv.style.display=minimize?'':'none';this.minimizeDiv.style.display=minimize?'none':'';},update:function(){if(this.ovmap==null){this.createMap();} -if(!this.isSuitableOverview()){this.updateOverview();} -this.updateRectToMap();},isSuitableOverview:function(){var mapExtent=this.map.getExtent();var maxExtent=this.map.maxExtent;var testExtent=new OpenLayers.Bounds(Math.max(mapExtent.left,maxExtent.left),Math.max(mapExtent.bottom,maxExtent.bottom),Math.min(mapExtent.right,maxExtent.right),Math.min(mapExtent.top,maxExtent.top));var resRatio=this.ovmap.getResolution()/this.map.getResolution();return((resRatio>this.minRatio)&&(resRatio<=this.maxRatio)&&(this.ovmap.getExtent().containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;} -this.ovmap.setCenter(this.map.center,this.ovmap.getZoomForResolution(targetRes));this.updateRectToMap();},createMap:function(){var options=OpenLayers.Util.extend({controls:[],maxResolution:'auto'},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,options);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-left-width'))+ -parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-right-width'));this.wComp=(this.wComp)?this.wComp:2;this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-top-width'))+ -parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-bottom-width'));this.hComp=(this.hComp)?this.hComp:2;},updateRectToMap:function(){if(this.map.units!='degrees'){if(this.ovmap.getProjection()&&(this.map.getProjection()!=this.ovmap.getProjection())){alert('The overview map only works when it is in the same projection as the main map');}} -var pxBounds=this.getRectBoundsFromMapBounds(this.map.getExtent());if(pxBounds){this.setRectPxBounds(pxBounds);}},updateMapToRect:function(){var pxBounds=this.getRectPxBounds();var lonLatBounds=this.getMapBoundsFromRectBounds(pxBounds);this.map.setCenter(lonLatBounds.getCenterLonLat(),this.map.zoom);},getRectPxBounds:function(){var top=parseInt(this.extentRectangle.style.top);var left=parseInt(this.extentRectangle.style.left);var height=parseInt(this.extentRectangle.style.height);var width=parseInt(this.extentRectangle.style.width);return new OpenLayers.Bounds(left,top+height,left+width,top);},setRectPxBounds:function(pxBounds){var top=Math.max(pxBounds.top,0);var left=Math.max(pxBounds.left,0);var bottom=Math.min(pxBounds.top+Math.abs(pxBounds.getHeight()),this.ovmap.size.h-this.hComp);var right=Math.min(pxBounds.left+pxBounds.getWidth(),this.ovmap.size.w-this.wComp);this.extentRectangle.style.top=parseInt(top)+'px';this.extentRectangle.style.left=parseInt(left)+'px';this.extentRectangle.style.height=parseInt(Math.max(bottom-top,0))+'px';this.extentRectangle.style.width=parseInt(Math.max(right-left,0))+'px';},getRectBoundsFromMapBounds:function(lonLatBounds){var leftBottomLonLat=new OpenLayers.LonLat(lonLatBounds.left,lonLatBounds.bottom);var rightTopLonLat=new OpenLayers.LonLat(lonLatBounds.right,lonLatBounds.top);var leftBottomPx=this.getOverviewPxFromLonLat(leftBottomLonLat);var rightTopPx=this.getOverviewPxFromLonLat(rightTopLonLat);var bounds=null;if(leftBottomPx&&rightTopPx){bounds=new OpenLayers.Bounds(leftBottomPx.x,leftBottomPx.y,rightTopPx.x,rightTopPx.y);} -return bounds;},getMapBoundsFromRectBounds:function(pxBounds){var leftBottomPx=new OpenLayers.Pixel(pxBounds.left,pxBounds.bottom);var rightTopPx=new OpenLayers.Pixel(pxBounds.right,pxBounds.top);var leftBottomLonLat=this.getLonLatFromOverviewPx(leftBottomPx);var rightTopLonLat=this.getLonLatFromOverviewPx(rightTopPx);return new OpenLayers.Bounds(leftBottomLonLat.lon,leftBottomLonLat.lat,rightTopLonLat.lon,rightTopLonLat.lat);},getLonLatFromOverviewPx:function(overviewMapPx){var size=this.ovmap.size;var res=this.ovmap.getResolution();var center=this.ovmap.getExtent().getCenterLonLat();var delta_x=overviewMapPx.x-(size.w/2);var delta_y=overviewMapPx.y-(size.h/2);return new OpenLayers.LonLat(center.lon+delta_x*res,center.lat-delta_y*res);},getOverviewPxFromLonLat:function(lonlat){var res=this.ovmap.getResolution();var extent=this.ovmap.getExtent();var px=null;if(extent){px=new OpenLayers.Pixel(Math.round(1/res*(lonlat.lon-extent.left)),Math.round(1/res*(extent.top-lonlat.lat)));} -return px;},CLASS_NAME:'OpenLayers.Control.OverviewMap'});OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoomBarDiv:null,divEvents:null,initialize:function(){OpenLayers.Control.PanZoom.prototype.initialize.apply(this,arguments);},destroy:function(){this.div.removeChild(this.slider);this.slider=null;this.sliderEvents.destroy();this.sliderEvents=null;this.div.removeChild(this.zoombarDiv);this.zoomBarDiv=null;this.divEvents.destroy();this.divEvents=null;this.map.events.unregister("zoomend",this,this.moveZoomBar);this.map.events.unregister("changebaselayer",this,this.redraw) -OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,arguments);this.map.events.register("changebaselayer",this,this.redraw);},redraw:function(){if(this.div!=null){this.div.innerHTML="";} -this.draw();},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position.clone();this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);centered=this._addZoomBar(centered.add(0,sz.h*4+5));this._addButton("zoomout","zoom-minus-mini.png",centered,sz);return this.div;},_addZoomBar:function(centered){var imgLocation=OpenLayers.Util.getImagesLocation();var id="OpenLayers_Control_PanZoomBar_Slider"+this.map.id;var zoomsToEnd=this.map.getNumZoomLevels()-1-this.map.getZoom();var slider=OpenLayers.Util.createAlphaImageDiv(id,centered.add(-1,zoomsToEnd*this.zoomStopHeight),new OpenLayers.Size(20,9),imgLocation+"slider.png","absolute");this.slider=slider;this.sliderEvents=new OpenLayers.Events(this,slider,null,true);this.sliderEvents.register("mousedown",this,this.zoomBarDown);this.sliderEvents.register("mousemove",this,this.zoomBarDrag);this.sliderEvents.register("mouseup",this,this.zoomBarUp);this.sliderEvents.register("dblclick",this,this.doubleClick);this.sliderEvents.register("click",this,this.doubleClick);sz=new OpenLayers.Size();sz.h=this.zoomStopHeight*this.map.getNumZoomLevels();sz.w=this.zoomStopWidth;var div=null -if(OpenLayers.Util.alphaHack()){var id="OpenLayers_Control_PanZoomBar"+this.map.id;div=OpenLayers.Util.createAlphaImageDiv(id,centered,new OpenLayers.Size(sz.w,this.zoomStopHeight),imgLocation+"zoombar.png","absolute",null,"crop");div.style.height=sz.h;}else{div=OpenLayers.Util.createDiv('OpenLayers_Control_PanZoomBar_Zoombar'+this.map.id,centered,sz,imgLocation+"zoombar.png");} -this.zoombarDiv=div;this.divEvents=new OpenLayers.Events(this,div,null,true);this.divEvents.register("mousedown",this,this.divClick);this.divEvents.register("mousemove",this,this.passEventToSlider);this.divEvents.register("dblclick",this,this.doubleClick);this.divEvents.register("click",this,this.doubleClick);this.div.appendChild(div);this.startTop=parseInt(div.style.top);this.div.appendChild(slider);this.map.events.register("zoomend",this,this.moveZoomBar);centered=centered.add(0,this.zoomStopHeight*this.map.getNumZoomLevels());return centered;},passEventToSlider:function(evt){this.sliderEvents.handleBrowserEvent(evt);},divClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;var y=evt.xy.y;var top=OpenLayers.Util.pagePosition(evt.object)[1];var levels=Math.floor((y-top)/this.zoomStopHeight);this.map.zoomTo((this.map.getNumZoomLevels()-1)-levels);OpenLayers.Event.stop(evt);},zoomBarDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt))return;this.map.events.register("mousemove",this,this.passEventToSlider);this.map.events.register("mouseup",this,this.passEventToSlider);this.mouseDragStart=evt.xy.clone();this.zoomStart=evt.xy.clone();this.div.style.cursor="move";this.zoombarDiv.offsets=null;OpenLayers.Event.stop(evt);},zoomBarDrag:function(evt){if(this.mouseDragStart!=null){var deltaY=this.mouseDragStart.y-evt.xy.y -var offsets=OpenLayers.Util.pagePosition(this.zoombarDiv);if((evt.clientY-offsets[1])>0&&(evt.clientY-offsets[1])0&&(evt.clientY-offsets[1])0){text=text.substring(index);} var node=OpenLayers.Util.Try(OpenLayers.Function.bind((function(){var xmldom;if(window.ActiveXObject&&!this.xmldom){xmldom=new ActiveXObject("Microsoft.XMLDOM");}else{xmldom=this.xmldom;} xmldom.loadXML(text);return xmldom;}),this),function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} -req.send(null);return req.responseXML;});return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();data=serializer.serializeToString(node);} -return data;},createElementNS:function(uri,name){var element;if(this.xmldom){element=this.xmldom.createNode(1,name,uri);}else{element=document.createElementNS(uri,name);} +req.send(null);return req.responseXML;});return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);} +doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}} +return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);} return element;},createTextNode:function(text){var node;if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0;i=0;--i){this.layers[i].destroy(false);} -this.layers=null;} -if(this.controls!=null){for(var i=this.controls.length-1;i>=0;--i){this.controls[i].destroy();} +this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,'unload',this.unloadDestroy);},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy){return false;} +OpenLayers.Event.stopObserving(window,'unload',this.unloadDestroy);this.unloadDestroy=null;if(this.updateSizeDestroy){OpenLayers.Event.stopObserving(window,'resize',this.updateSizeDestroy);}else{this.events.unregister("resize",this,this.updateSize);} +this.paddingForPopups=null;if(this.controls!=null){for(var i=this.controls.length-1;i>=0;--i){this.controls[i].destroy();} this.controls=null;} +if(this.layers!=null){for(var i=this.layers.length-1;i>=0;--i){this.layers[i].destroy(false);} +this.layers=null;} if(this.viewPortDiv){this.div.removeChild(this.viewPortDiv);} -this.viewPortDiv=null;this.events.destroy();this.events=null;},setOptions:function(options){this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);this.theme=OpenLayers._getScriptLocation()+'theme/default/style.css';OpenLayers.Util.extend(this,options);},getTileSize:function(){return this.tileSize;},getLayer:function(id){var foundLayer=null;for(var i=0;ithis.layers.length){idx=this.layers.length;} +OpenLayers.Util.removeItem(this.layers,layer);layer.removeMap(this);layer.map=null;if(this.baseLayer==layer){this.baseLayer=null;if(setNewBaseLayer){for(var i=0;ithis.layers.length){idx=this.layers.length;} if(base!=idx){this.layers.splice(base,1);this.layers.splice(idx,0,layer);for(var i=0;i=0;--i){this.removePopup(this.popups[i]);}} popup.map=this;this.popups.push(popup);var popupDiv=popup.draw();if(popupDiv){popupDiv.style.zIndex=this.Z_INDEX_BASE['Popup']+ this.popups.length;this.layerContainerDiv.appendChild(popupDiv);}},removePopup:function(popup){OpenLayers.Util.removeItem(this.popups,popup);if(popup.div){try{this.layerContainerDiv.removeChild(popup.div);} catch(e){}} popup.map=null;},getSize:function(){var size=null;if(this.size!=null){size=this.size.clone();} -return size;},updateSize:function(){this.events.element.offsets=null;var newSize=this.getCurrentSize();var oldSize=this.getSize();if(oldSize==null) -this.size=oldSize=newSize;if(!newSize.equals(oldSize)){this.size=newSize;for(var i=0;ithis.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.leftthis.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.leftthis.restrictedExtent.right){lonlat=lonlat.add(this.restrictedExtent.right- extent.right,0);} if(extent.getHeight()>this.restrictedExtent.getHeight()){lonlat=new OpenLayers.LonLat(lonlat.lon,maxCenter.lat);}else if(extent.bottomthis.restrictedExtent.top){lonlat=lonlat.add(0,this.restrictedExtent.top- extent.top);}}} -var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||!dragging){if(!dragging){this.events.triggerEvent("movestart");} +var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||!dragging){if(!this.dragging&&!noEvent){this.events.triggerEvent("movestart");} if(centerChanged){if((!zoomChanged)&&(this.center)){this.centerLayerContainer(lonlat);} this.center=lonlat.clone();} if((zoomChanged)||(this.layerContainerOrigin==null)){this.layerContainerOrigin=this.center.clone();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";} -if(zoomChanged){this.zoom=zoom;this.viewRequestID++;} -var bounds=this.getExtent();this.baseLayer.moveTo(bounds,zoomChanged,dragging);bounds=this.baseLayer.getExtent();for(var i=0;i=0)&&(zoomLevel=0)&&(zoomLevel=-this.MAX_PIXEL&&x<=this.MAX_PIXEL&&y>=-this.MAX_PIXEL&&y<=this.MAX_PIXEL);},setExtent:function(extent){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();if(!this.localResolution||resolution!=this.localResolution){this.left=-extent.left/resolution;this.top=extent.top/resolution;} var left=0;var top=0;if(this.localResolution&&resolution==this.localResolution){left=(this.left)-(-extent.left/resolution);top=(this.top)-(extent.top/resolution);} this.localResolution=resolution;var extentString=left+" "+top+" "+ -extent.getWidth()/resolution+" "+extent.getHeight()/resolution;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);},setSize:function(size){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(geometry){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType="circle";break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;} -return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;if(node._geometryClass=="OpenLayers.Geometry.Point"){if(style.externalGraphic){var id=node.getAttributeNS(null,"id");var x=parseFloat(node.getAttributeNS(null,"cx"));var y=parseFloat(node.getAttributeNS(null,"cy"));var _featureId=node._featureId;var _geometryClass=node._geometryClass;var _style=node._style;this.root.removeChild(node);var node=this.createNode("image",id);node._featureId=_featureId;node._geometryClass=_geometryClass;node._style=_style;this.root.appendChild(node);if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");} -var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",(x+xOffset).toFixed());node.setAttributeNS(null,"y",(-y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS("http://www.w3.org/1999/xlink","href",style.externalGraphic);node.setAttributeNS(null,"transform","scale(1,-1)");node.setAttributeNS(null,"style","opacity: "+opacity);}else{node.setAttributeNS(null,"r",style.pointRadius);}} +extent.getWidth()/resolution+" "+extent.getHeight()/resolution;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);},setSize:function(size){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(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType=style.externalGraphic?"image":"circle";break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;} +return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;var r=parseFloat(node.getAttributeNS(null,"r"));if(node._geometryClass=="OpenLayers.Geometry.Point"&&r){if(style.externalGraphic){var x=parseFloat(node.getAttributeNS(null,"cx"));var y=parseFloat(node.getAttributeNS(null,"cy"));if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");} +var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",(x+xOffset).toFixed());node.setAttributeNS(null,"y",(y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS("http://www.w3.org/1999/xlink","href",style.externalGraphic);node.setAttributeNS(null,"style","opacity: "+opacity);}else{node.setAttributeNS(null,"r",style.pointRadius);}} if(options.isFilled){node.setAttributeNS(null,"fill",style.fillColor);node.setAttributeNS(null,"fill-opacity",style.fillOpacity);}else{node.setAttributeNS(null,"fill","none");} if(options.isStroked){node.setAttributeNS(null,"stroke",style.strokeColor);node.setAttributeNS(null,"stroke-opacity",style.strokeOpacity);node.setAttributeNS(null,"stroke-width",style.strokeWidth);node.setAttributeNS(null,"stroke-linecap",style.strokeLinecap);}else{node.setAttributeNS(null,"stroke","none");} if(style.pointerEvents){node.setAttributeNS(null,"pointer-events",style.pointerEvents);} -if(style.cursor){node.setAttributeNS(null,"cursor",style.cursor);}},createNode:function(type,id){var node=document.createElementNS(this.xmlns,type);if(id){node.setAttributeNS(null,"id",id);} -return node;},nodeTypeCompare:function(node,type){return(type==node.nodeName);},createRenderRoot:function(){var id=this.container.id+"_svgRoot";var rendererRoot=this.nodeFactory(id,"svg");return rendererRoot;},createRoot:function(){var id=this.container.id+"_root";var root=this.nodeFactory(id,"g");root.setAttributeNS(null,"transform","scale(1, -1)");return root;},drawPoint:function(node,geometry){this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(geometry.y/resolution-this.top);var draw=true;if(x<-this.maxPixel||x>this.maxPixel){draw=false;} -if(y<-this.maxPixel||y>this.maxPixel){draw=false;} -if(draw){node.setAttributeNS(null,"cx",x);node.setAttributeNS(null,"cy",y);node.setAttributeNS(null,"r",radius);}else{this.root.removeChild(node);}},drawLineString:function(node,geometry){node.setAttributeNS(null,"points",this.getComponentsString(geometry.components));},drawLinearRing:function(node,geometry){node.setAttributeNS(null,"points",this.getComponentsString(geometry.components));},drawPolygon:function(node,geometry){var d="";var draw=true;for(var j=0;jthis.maxPixel){draw=false;} -if(y<-this.maxPixel||y>this.maxPixel){draw=false;} -if(draw){node.setAttributeNS(null,"x",x);node.setAttributeNS(null,"y",y);node.setAttributeNS(null,"width",geometry.width);node.setAttributeNS(null,"height",geometry.height);}else{node.setAttributeNS(null,"x","");node.setAttributeNS(null,"y","");node.setAttributeNS(null,"width",0);node.setAttributeNS(null,"height",0);}},drawCurve:function(node,geometry){var d=null;var draw=true;for(var i=0;ithis.maxPixel){return false;} -if(y<-this.maxPixel||y>this.maxPixel){return false;} -var string=x+","+y;return string;},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",initialize:function(containerID){if(!this.supported()){return;} -document.namespaces.add("v","urn:schemas-microsoft-com:vml");var style=document.createStyleSheet();style.addRule('v\\:*',"behavior: url(#default#VML); "+"position: relative; display: inline-block;");OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.apply(this,arguments);},supported:function(){var supported=document.namespaces;return supported;},setExtent:function(extent){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var org=extent.left/resolution+" "+ +return strings.join(",");},getShortString:function(point){var resolution=this.getResolution();var x=(point.x/resolution+this.left);var y=(this.top-point.y/resolution);if(this.inValidRange(x,y)){return x+","+y;}else{return false;}},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",initialize:function(containerID){if(!this.supported()){return;} +if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);var style=document.createStyleSheet();style.addRule('olv\\:*',"behavior: url(#default#VML); "+"position: absolute; display: inline-block;");} +OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},destroy:function(){OpenLayers.Renderer.Elements.prototype.destroy.apply(this,arguments);},supported:function(){return!!(document.namespaces);},setExtent:function(extent){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var org=extent.left/resolution+" "+ extent.top/resolution;this.root.setAttribute("coordorigin",org);var size=extent.getWidth()/resolution+" "+ --extent.getHeight()/resolution;this.root.setAttribute("coordsize",size);},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.style.width=this.size.w;this.rendererRoot.style.height=this.size.h;this.root.style.width="100%";this.root.style.height="100%";},getNodeType:function(geometry){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType="v:oval";break;case"OpenLayers.Geometry.Rectangle":nodeType="v:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="v:shape";break;default:break;} -return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;if(node._geometryClass=="OpenLayers.Geometry.Point"){if(style.externalGraphic){var id=node.id;var _featureId=node._featureId;var _geometryClass=node._geometryClass;var _style=node._style;this.root.removeChild(node);var node=this.createNode("v:rect",id);var fill=this.createNode("v:fill",id+"_image");node.appendChild(fill);node._featureId=_featureId;node._geometryClass=_geometryClass;node._style=_style;this.root.appendChild(node);fill.src=style.externalGraphic;fill.type="frame";node.style.flip="y";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";} -var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=((geometry.x/resolution)+xOffset).toFixed();node.style.top=((geometry.y/resolution)-(yOffset+height)).toFixed();node.style.width=width;node.style.height=height;style.fillColor="none";style.strokeColor="none";}else{this.drawCircle(node,geometry,style.pointRadius);}} -var fillColor=(options.isFilled)?style.fillColor:"none";node.setAttribute("fillcolor",fillColor);var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('v:fill',node.id+"_fill");node.appendChild(fill);} -if(node._geometryClass=="OpenLayers.Geometry.Point"&&style.externalGraphic&&style.graphicOpacity){fill.setAttribute("opacity",style.graphicOpacity);}else if(style.fillOpacity){fill.setAttribute("opacity",style.fillOpacity);}} -var strokeColor=(options.isStroked)?style.strokeColor:"none";node.setAttribute("strokecolor",strokeColor);node.setAttribute("strokeweight",style.strokeWidth);var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){if(stroke){node.removeChild(stroke);}}else{if(!stroke){stroke=this.createNode('v:stroke',node.id+"_stroke");node.appendChild(stroke);} +-extent.getHeight()/resolution;this.root.setAttribute("coordsize",size);},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.style.width=this.size.w;this.rendererRoot.style.height=this.size.h;this.root.style.width=this.size.w;this.root.style.height=this.size.h;},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":nodeType=style.externalGraphic?"olv:rect":"olv:oval";break;case"OpenLayers.Geometry.Rectangle":nodeType="olv:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="olv:shape";break;default:break;} +return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;if(node._geometryClass=="OpenLayers.Geometry.Point"){if(style.externalGraphic){var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=((geometry.x/resolution)+xOffset).toFixed();node.style.top=((geometry.y/resolution)-(yOffset+height)).toFixed();node.style.width=width;node.style.height=height;style.fillColor="none";options.isStroked=false;}else{this.drawCircle(node,geometry,style.pointRadius);}} +if(options.isFilled){node.setAttribute("fillcolor",style.fillColor);}else{node.setAttribute("filled","false");} +var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('olv:fill',node.id+"_fill");} +fill.setAttribute("opacity",style.fillOpacity);if(node._geometryClass=="OpenLayers.Geometry.Point"&&style.externalGraphic){if(style.graphicOpacity){fill.setAttribute("opacity",style.graphicOpacity);} +fill.setAttribute("src",style.externalGraphic);fill.setAttribute("type","frame");node.style.flip="y";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";}} +if(fill.parentNode!=node){node.appendChild(fill);}} +if(options.isStroked){node.setAttribute("strokecolor",style.strokeColor);node.setAttribute("strokeweight",style.strokeWidth+"px");}else{node.setAttribute("stroked","false");} +var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){if(stroke){node.removeChild(stroke);}}else{if(!stroke){stroke=this.createNode('olv:stroke',node.id+"_stroke");node.appendChild(stroke);} stroke.setAttribute("opacity",style.strokeOpacity);stroke.setAttribute("endcap",!style.strokeLinecap||style.strokeLinecap=='butt'?'flat':style.strokeLinecap);} -if(style.cursor){node.style.cursor=style.cursor;}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution).toFixed(),(bbox.bottom/resolution).toFixed(),(bbox.right/resolution).toFixed(),(bbox.top/resolution).toFixed());node.style.left=scaledBox.left;node.style.top=scaledBox.top;node.style.width=scaledBox.getWidth();node.style.height=scaledBox.getHeight();node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},createNode:function(type,id){var node=document.createElement(type);if(id){node.setAttribute('id',id);} -return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} +if(style.cursor!=null){node.style.cursor=style.cursor;} +return node;},postDraw:function(node){var fillColor=node._style.fillColor;var strokeColor=node._style.strokeColor;if(fillColor=="none"&&node.getAttribute("fillcolor")!=fillColor){node.setAttribute("fillcolor",fillColor);} +if(strokeColor=="none"&&node.getAttribute("strokecolor")!=strokeColor){node.setAttribute("strokecolor",strokeColor);}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution).toFixed(),(bbox.bottom/resolution).toFixed(),(bbox.right/resolution).toFixed(),(bbox.top/resolution).toFixed());node.style.left=scaledBox.left;node.style.top=scaledBox.top;node.style.width=scaledBox.getWidth();node.style.height=scaledBox.getHeight();node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},createNode:function(type,id){var node=document.createElement(type);if(id){node.setAttribute('id',id);} +node.setAttribute('unselectable','on',0);node.onselectstart=function(){return(false);};return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} var nodeName=node.nodeName;splitIndex=nodeName.indexOf(":");if(splitIndex!=-1){nodeName=nodeName.substr(splitIndex+1);} -return(subType==nodeName);},createRenderRoot:function(){var id=this.container.id+"_vmlRoot";var rendererRoot=this.nodeFactory(id,"div");return rendererRoot;},createRoot:function(){var id=this.container.id+"_root";var root=this.nodeFactory(id,"v:group");return root;},drawPoint:function(node,geometry){this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){if(!isNaN(geometry.x)&&!isNaN(geometry.y)){var resolution=this.getResolution();node.style.left=(geometry.x/resolution).toFixed()-radius;node.style.top=(geometry.y/resolution).toFixed()-radius;var diameter=radius*2;node.style.width=diameter;node.style.height=diameter;}},drawLineString:function(node,geometry){this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path="m";for(var i=0;i0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:OpenLayers.Popup.AnchoredBubble,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}} +return this.renderTile();},renderTile:function(){if(this.imgDiv==null){this.initImgDiv();} +this.imgDiv.viewRequestID=this.layer.map.viewRequestID;this.url=this.layer.getURL(this.bounds);OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize();if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;} +return true;},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){var offset=this.layer.imageOffset;var size=this.layer.getImageSize();if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} +this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} +this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} +var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} +var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();} +if(ratio!=this.lastRatio){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);} +OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}} +this.lastRatio=ratio;},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.Util.getBrowserName()=="safari"||OpenLayers.Util.getBrowserName()=="opera");OpenLayers.Tile.WFS=OpenLayers.Class(OpenLayers.Tile,{features:null,url:null,request:null,initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=url;this.features=[];},destroy:function(){OpenLayers.Tile.prototype.destroy.apply(this,arguments);this.destroyAllFeatures();this.features=null;this.url=null;if(this.request){this.request.abort();this.request=null;}},clear:function(){this.destroyAllFeatures();},draw:function(){if(OpenLayers.Tile.prototype.draw.apply(this,arguments)){if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} +this.loadFeaturesForRegion(this.requestSuccess);}},loadFeaturesForRegion:function(success,failure){if(this.request){this.request.abort();} +this.request=OpenLayers.loadURL(this.url,null,this,success);},requestSuccess:function(request){if(this.features){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=OpenLayers.Format.XML.prototype.read(request.responseText);} +if(this.layer.vectorMode){this.layer.addFeatures(this.layer.formatObject.read(doc));}else{var resultFeatures=OpenLayers.Ajax.getElementsByTagNameNS(doc,"http://www.opengis.net/gml","gml","featureMember");this.addResults(resultFeatures);}} +if(this.events){this.events.triggerEvent("loadend");} +this.request=null;},addResults:function(results){for(var i=0;i0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:new OpenLayers.Size(180,90),layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,handlers:null,initialize:function(options){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[options]);},destroy:function(){if(!this.mapDiv){return;} +this.handlers.click.destroy();this.mapDiv.removeChild(this.extentRectangle);this.extentRectangle=null;this.rectEvents.destroy();this.rectEvents=null;this.ovmap.destroy();this.ovmap=null;this.element.removeChild(this.mapDiv);this.mapDiv=null;this.div.removeChild(this.element);this.element=null;if(this.maximizeDiv){OpenLayers.Event.stopObservingElement(this.maximizeDiv);this.div.removeChild(this.maximizeDiv);this.maximizeDiv=null;} +if(this.minimizeDiv){OpenLayers.Event.stopObservingElement(this.minimizeDiv);this.div.removeChild(this.minimizeDiv);this.minimizeDiv=null;} +this.map.events.un({"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(!(this.layers.length>0)){if(this.map.baseLayer){var layer=this.map.baseLayer.clone();this.layers=[layer];}else{this.map.events.register("changebaselayer",this,this.baseLayerDraw);return 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=1000;this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.mapDiv.appendChild(this.extentRectangle);this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);if(!this.outsideViewport){this.div.className+=" "+this.displayClass+'Container';var imgLocation=OpenLayers.Util.getImagesLocation();var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+'MaximizeButton',null,new OpenLayers.Size(18,18),img,'absolute');this.maximizeDiv.style.display='none';this.maximizeDiv.className=this.displayClass+'MaximizeButton';OpenLayers.Event.observe(this.maximizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv('OpenLayers_Control_minimizeDiv',null,new OpenLayers.Size(18,18),img,'absolute');this.minimizeDiv.style.display='none';this.minimizeDiv.className=this.displayClass+'MinimizeButton';OpenLayers.Event.observe(this.minimizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);var eventsToStop=['dblclick','mousedown'];for(var i=0;ithis.minRatio)&&(resRatio<=this.maxRatio)&&(this.ovmap.getExtent().containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;} +this.ovmap.setCenter(this.map.center,this.ovmap.getZoomForResolution(targetRes));this.updateRectToMap();},createMap:function(){var options=OpenLayers.Util.extend({controls:[],maxResolution:'auto',fallThrough:false},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,options);OpenLayers.Event.stopObserving(window,'unload',this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-left-width'))+ +parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-right-width'));this.wComp=(this.wComp)?this.wComp:2;this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-top-width'))+ +parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-bottom-width'));this.hComp=(this.hComp)?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":true,"double":false,"stopSingle":true,"stopDouble":true,"pixelTolerance":1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,true);this.rectEvents.register("mouseover",this,function(e){if(!this.handlers.drag.active&&!this.map.dragging){this.handlers.drag.activate();}});this.rectEvents.register("mouseout",this,function(e){if(!this.handlers.drag.dragging){this.handlers.drag.deactivate();}});},updateRectToMap:function(){if(this.map.units!='degrees'){if(this.ovmap.getProjection()&&(this.map.getProjection()!=this.ovmap.getProjection())){alert(OpenLayers.i18n("sameProjection"));}} +var pxBounds=this.getRectBoundsFromMapBounds(this.map.getExtent());if(pxBounds){this.setRectPxBounds(pxBounds);}},updateMapToRect:function(){var lonLatBounds=this.getMapBoundsFromRectBounds(this.rectPxBounds);this.map.panTo(lonLatBounds.getCenterLonLat());},setRectPxBounds:function(pxBounds){var top=Math.max(pxBounds.top,0);var left=Math.max(pxBounds.left,0);var bottom=Math.min(pxBounds.top+Math.abs(pxBounds.getHeight()),this.ovmap.size.h-this.hComp);var right=Math.min(pxBounds.left+pxBounds.getWidth(),this.ovmap.size.w-this.wComp);var width=Math.max(right-left,0);var height=Math.max(bottom-top,0);if(width0){this.read_wmc_OnlineResource(legend,links[0]);} +style.legend=legend;},write:function(context,options){var root=this.createElementDefaultNS("ViewContext");this.setAttributes(root,{version:this.VERSION,id:(options&&typeof options.id=="string")?options.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(root,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);root.appendChild(this.write_wmc_General(context));root.appendChild(this.write_wmc_LayerList(context));return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},createElementDefaultNS:function(name,childValue,attributes){var node=this.createElementNS(this.namespaces[this.defaultPrefix],name);if(childValue){node.appendChild(this.createTextNode(childValue));} +if(attributes){this.setAttributes(node,attributes);} +return node;},setAttributes:function(node,obj){var value;for(var name in obj){value=obj[name].toString();if(value.match(/[A-Z]/)){this.setAttributeNS(node,null,name,value);}else{node.setAttribute(name,value);}}},write_wmc_General:function(context){var node=this.createElementDefaultNS("General");if(context.size){node.appendChild(this.createElementDefaultNS("Window",null,{width:context.size.w,height:context.size.h}));} +var bounds=context.bounds;node.appendChild(this.createElementDefaultNS("BoundingBox",null,{minx:bounds.left.toPrecision(10),miny:bounds.bottom.toPrecision(10),maxx:bounds.right.toPrecision(10),maxy:bounds.top.toPrecision(10),SRS:context.projection}));node.appendChild(this.createElementDefaultNS("Title",context.title));node.appendChild(this.write_ol_MapExtension(context));return node;},write_ol_MapExtension:function(context){var node=this.createElementDefaultNS("Extension");var bounds=context.maxExtent;if(bounds){var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(10),miny:bounds.bottom.toPrecision(10),maxx:bounds.right.toPrecision(10),maxy:bounds.top.toPrecision(10)});node.appendChild(maxExtent);} +return node;},write_wmc_LayerList:function(context){var list=this.createElementDefaultNS("LayerList");var layer;for(var i=0;ithis.pixelTolerance){passes=false;}} +return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback('click',[evt]);}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;deactivated=true;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&OpenLayers.Event.isLeftClick(evt)){this.started=true;this.start=evt.xy;this.last=evt.xy;this.map.div.style.cursor="move";this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=(document.onselectstart)?document.onselectstart:function(){return true;};document.onselectstart=function(){return false;};} +propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} +return propagate;},mousemove:function(evt){if(this.started){if(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y){this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=function(){return false;};} this.last=evt.xy;}} -return true;},mouseup:function(evt){if(this.started){this.started=false;this.dragging=false;this.map.div.style.cursor="";this.up(evt);this.callback("up",[evt.xy]);this.callback("done",[evt.xy]);document.onselectstart=this.oldOnselectstart;} -return true;},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.div)){this.started=false;this.dragging=false;this.map.div.style.cursor="";this.out(evt);this.callback("out",[]);if(document.onselectstart){document.onselectstart=this.oldOnselectstart;} -this.callback("done",[evt.xy])} +return true;},mouseup:function(evt){if(this.started){var dragged=(this.start!=this.last);this.started=false;this.dragging=false;this.map.div.style.cursor="";this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);} +document.onselectstart=this.oldOnselectstart;} +return true;},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.div)){var dragged=(this.start!=this.last);this.started=false;this.dragging=false;this.map.div.style.cursor="";this.out(evt);this.callback("out",[]);if(dragged){this.callback("done",[evt.xy]);} +if(document.onselectstart){document.onselectstart=this.oldOnselectstart;}} return true;},click:function(evt){return(this.start==this.last);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;activated=true;} return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;} -return deactivated;},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{geometryTypes:null,layerIndex:null,feature:null,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},click:function(evt){var selected=this.select('click',evt);return!selected;},mousedown:function(evt){var selected=this.select('down',evt);return!selected;},mousemove:function(evt){this.select('move',evt);return true;},mouseup:function(evt){var selected=this.select('up',evt);return!selected;},dblclick:function(evt){var selected=this.select('dblclick',evt);return!selected;},select:function(type,evt){var feature=this.layer.getFeatureFromEvent(evt);var selected=false;if(feature){if(this.geometryTypes==null||(OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1)){if(!this.feature){this.callback('over',[feature]);}else if(this.feature!=feature){this.callback('out',[this.feature]);this.callback('over',[feature]);} -this.feature=feature;this.callback(type,[feature]);selected=true;}else{if(this.feature&&(this.feature!=feature)){this.callback('out',[this.feature]);this.feature=null;} -selected=false;}}else{if(this.feature){this.callback('out',[this.feature]);this.feature=null;} -selected=false;} -return selected;},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.layerIndex=this.layer.div.style.zIndex;this.layer.div.style.zIndex=this.map.Z_INDEX_BASE['Popup']-1;return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.layer&&this.layer.div){this.layer.div.style.zIndex=this.layerIndex;} -return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keypress","keyup"],eventListener:null,initialize:function(control,callbacks,options){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)){for(var i=0;i-1;},handle:function(evt){var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature){var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){this.triggerCallback(type,'out',[this.lastFeature]);this.triggerCallback(type,'in',[this.feature]);}else if(!previouslyIn||click){this.triggerCallback(type,'in',[this.feature]);} +this.lastFeature=this.feature;handled=true;}else{if(previouslyIn&&inNew||(click&&this.lastFeature)){this.triggerCallback(type,'out',[this.lastFeature]);} +this.feature=null;}}else{if(previouslyIn||(click&&this.lastFeature)){this.triggerCallback(type,'out',[this.lastFeature]);}} +return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&mode=='out'&&this.up&&this.down){var dpx=Math.sqrt(Math.pow(this.up.x-this.down.x,2)+ +Math.pow(this.up.y-this.down.y,2));if(dpx<=this.clickoutTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.layerIndex=this.layer.div.style.zIndex;this.layer.div.style.zIndex=this.map.Z_INDEX_BASE['Popup']-1;activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.layer&&this.layer.div){this.layer.div.style.zIndex=this.layerIndex;} +this.feature=null;this.lastFeature=null;this.down=null;this.up=null;deactivated=true;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:false,px:null,timerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},mousemove:function(evt){if(this.passesTolerance(evt.xy)){this.clearTimer();this.callback('move',[evt]);this.px=evt.xy;evt=OpenLayers.Util.extend({},evt);this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);} +return!this.stopMove;},mouseout:function(evt){if(OpenLayers.Util.mouseLeft(evt,this.map.div)){this.clearTimer();this.callback('move',[evt]);} +return true;},passesTolerance:function(px){var passes=true;if(this.pixelTolerance&&this.px){var dpx=Math.sqrt(Math.pow(this.px.x-px.x,2)+ +Math.pow(this.px.y-px.y,2));if(dpx=this.minResolution)&&(resolution<=this.maxResolution));} -return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changelayer");}}},initResolutions:function(){var props=new Array('projection','units','scales','resolutions','maxScale','minScale','maxResolution','minResolution','minExtent','maxExtent','numZoomLevels','maxZoomLevel');var confProps={};for(var i=0;i=this.minResolution)&&(resolution<=this.maxResolution));} +return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this});}}},initResolutions:function(){var props=new Array('projection','units','scales','resolutions','maxScale','minScale','maxResolution','minResolution','minExtent','maxExtent','numZoomLevels','maxZoomLevel');var confProps={};for(var i=0;i1){base=Math.pow((confProps.maxResolution/confProps.minResolution),(1/(confProps.numZoomLevels-1)));} +for(var i=0;iminDiff){break;} +this.minScale=this.scales[0];this.maxScale=this.scales[this.scales.length-1];this.numZoomLevels=confProps.numZoomLevels;},getResolution:function(){var zoom=this.map.getZoom();return this.getResolutionForZoom(zoom);},getExtent:function(){return this.map.calculateBounds();},getZoomForExtent:function(extent,closest){var viewSize=this.map.getSize();var idealResolution=Math.max(extent.getWidth()/viewSize.w,extent.getHeight()/viewSize.h);return this.getZoomForResolution(idealResolution,closest);},getDataExtent:function(){},getResolutionForZoom:function(zoom){zoom=Math.max(0,Math.min(zoom,this.resolutions.length-1));var resolution;if(this.map.fractionalZoom){var low=Math.floor(zoom);var high=Math.ceil(zoom);resolution=this.resolutions[high]+ +((zoom-low)*(this.resolutions[low]-this.resolutions[high]));}else{resolution=this.resolutions[Math.round(zoom)];} +return resolution;},getZoomForResolution:function(resolution,closest){var zoom;if(this.map.fractionalZoom){var lowZoom=0;var highZoom=this.resolutions.length-1;var highRes=this.resolutions[lowZoom];var lowRes=this.resolutions[highZoom];var res;for(var i=0;i=resolution){highRes=res;lowZoom=i;} +if(res<=resolution){lowRes=res;highZoom=i;break;}} +var dRes=highRes-lowRes;if(dRes>0){zoom=lowZoom+((resolution-lowRes)/dRes);}else{zoom=lowZoom;}}else{var diff;var minDiff=Number.POSITIVE_INFINITY;for(var i=0;iminDiff){break;} minDiff=diff;}else{if(this.resolutions[i]5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();} -this.removeBox();this.map.div.style.cursor="";this.callback("done",[result]);},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',persist:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:new Object();},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options={displayInLayerSwitcher:false};this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} +this.removeBox();this.map.div.style.cursor="";this.callback("done",[result]);},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null;},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',persist:false,irregular:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:new Object();},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var options={displayInLayerSwitcher:false};this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;} return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)){if(this.dragging){this.cancel();} -this.map.removeLayer(this.layer,false);this.layer.destroy();if(this.feature){this.feature.destroy();} -deactivated=true;} -return deactivated;},down:function(evt){this.fixedRadius=!!(this.radius);var maploc=this.map.getLonLatFromPixel(evt.xy);this.origin=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(!this.fixedRadius){this.radius=this.map.getResolution();} +if(this.layer.map!=null){this.layer.destroy(false);if(this.feature){this.feature.destroy();}} +this.layer=null;this.feature=null;deactivated=true;} +return deactivated;},down:function(evt){this.fixedRadius=!!(this.radius);var maploc=this.map.getLonLatFromPixel(evt.xy);this.origin=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(!this.fixedRadius||this.irregular){this.radius=this.map.getResolution();} if(this.persist){this.clear();} -this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.layer.addFeatures([this.feature]);this.layer.drawFeature(this.feature,this.style);},move:function(evt){var maploc=this.map.getLonLatFromPixel(evt.xy);var point=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(this.fixedRadius){this.origin=point;}else{this.calculateAngle(point,evt);this.radius=Math.max(this.map.getResolution()/2,point.distanceTo(this.origin));} -this.modifyGeometry();this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(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 angle,dx,dy,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();} +this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.layer.addFeatures([this.feature],{silent:true});this.layer.drawFeature(this.feature,this.style);},move:function(evt){var maploc=this.map.getLonLatFromPixel(evt.xy);var point=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(this.irregular){var ry=Math.sqrt(2)*Math.abs(point.y-this.origin.y)/2;this.radius=Math.max(this.map.getResolution()/2,ry);}else if(this.fixedRadius){this.origin=point;}else{this.calculateAngle(point,evt);this.radius=Math.max(this.map.getResolution()/2,point.distanceTo(this.origin));} +this.modifyGeometry();if(this.irregular){var dx=point.x-this.origin.x;var dy=point.y-this.origin.y;var ratio;if(dy==0){ratio=dx/(this.radius*Math.sqrt(2));}else{ratio=dx/dy;} +this.feature.geometry.resize(1,this.origin,ratio);this.feature.geometry.move(dx/2,dy/2);} +this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(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 angle,dx,dy,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();ring=this.feature.geometry.components[0];} for(var i=0;i0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{var markerImg=marker.draw(px);if(!marker.drawn){this.div.appendChild(markerImg);marker.drawn=true;}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0;i0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{var markerImg=marker.draw(px);if(!marker.drawn){this.div.appendChild(markerImg);marker.drawn=true;}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0;i-1){this.unselect(feature);}else{this.select(feature);}}else{if(OpenLayers.Util.indexOf(this.layer.selectedFeatures,feature)>-1){this.unselect(feature);}else{if(this.layer.selectedFeatures){for(var i=0;i-1)){this.select(feature);}},outFeature:function(feature){if(!this.hover){return;} -this.unselect(feature);},select:function(feature){if(feature.originalStyle==null){feature.originalStyle=feature.style;} -this.layer.selectedFeatures.push(feature);feature.style=this.selectStyle;this.layer.drawFeature(feature);this.onSelect(feature);},unselect:function(feature){if(feature.originalStyle!=null){feature.style=feature.originalStyle;} -this.layer.drawFeature(feature);OpenLayers.Util.removeItem(this.layer.selectedFeatures,feature);this.onUnselect(feature);},setMap:function(map){this.handler.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);this.map.zoomToExtent(bounds);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){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,[options]);},read:function(wkt){var features,type,str;var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);}} +this.units="m";this.projection="EPSG:900913";},forwardMercator:function(lon,lat){var x=lon*20037508.34/180;var y=Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);y=y*20037508.34/180;return new OpenLayers.LonLat(x,y);},inverseMercator:function(x,y){var lon=(x/20037508.34)*180;var lat=(y/20037508.34)*180;lat=180/Math.PI*(2*Math.atan(Math.exp(lat*Math.PI/180))-Math.PI/2);return new OpenLayers.LonLat(lon,lat);},projectForward:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.forwardMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;},projectInverse:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;}};OpenLayers.Projection.addTransform("EPSG:4326","EPSG:900913",OpenLayers.Layer.SphericalMercator.projectForward);OpenLayers.Projection.addTransform("EPSG:900913","EPSG:4326",OpenLayers.Layer.SphericalMercator.projectInverse);OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,featureAdded:function(){},handlerOptions:null,initialize:function(layer,handler,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature},this.callbacks);this.layer=layer;this.handler=new handler(this,this.callbacks,this.handlerOptions);},drawFeature:function(geometry){var feature=new OpenLayers.Feature.Vector(geometry);this.layer.addFeatures([feature]);this.featureAdded(feature);},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,onSelect:function(){},onUnselect:function(){},geometryTypes:null,layer:null,callbacks:null,selectStyle:null,renderIntent:"select",handler:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;this.callbacks=OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.callbacks);var handlerOptions={geometryTypes:this.geometryTypes};this.handler=new OpenLayers.Handler.Feature(this,layer,this.callbacks,handlerOptions);},unselectAll:function(options){var feature;for(var i=this.layer.selectedFeatures.length-1;i>=0;--i){feature=this.layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(this.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});} +this.select(feature);}}},multipleSelect:function(){return this.multiple||this.handler.evt[this.multipleKey];},toggleSelect:function(){return this.toggle||this.handler.evt[this.toggleKey];},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){if(this.hover&&(OpenLayers.Util.indexOf(this.layer.selectedFeatures,feature)==-1)){this.select(feature);}},outFeature:function(feature){if(this.hover){this.unselect(feature);}},select:function(feature){this.layer.selectedFeatures.push(feature);var selectStyle=this.selectStyle||this.renderIntent;this.layer.drawFeature(feature,selectStyle);this.layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect(feature);},unselect:function(feature){this.layer.drawFeature(feature,"default");OpenLayers.Util.removeItem(this.layer.selectedFeatures,feature);this.layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect(feature);},setMap:function(map){this.handler.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){if(!this.out){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{var pixWidth=Math.abs(position.right-position.left);var pixHeight=Math.abs(position.top-position.bottom);var zoomFactor=Math.min((this.map.size.h/pixHeight),(this.map.size.w/pixWidth));var extent=this.map.getExtent();var center=this.map.getLonLatFromPixel(position.getCenterPixel());var xmin=center.lon-(extent.getWidth()/2)*zoomFactor;var xmax=center.lon+(extent.getWidth()/2)*zoomFactor;var ymin=center.lat-(extent.getHeight()/2)*zoomFactor;var ymax=center.lat+(extent.getHeight()/2)*zoomFactor;var bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);} +this.map.zoomToExtent(bounds);}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()-1);}}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){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,[options]);},read:function(wkt){var features,type,str;var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);} +if(this.internalProjection&&this.externalProjection){if(features&&features.CLASS_NAME=="OpenLayers.Feature.Vector"){features.geometry.transform(this.externalProjection,this.internalProjection);}else if(features&&typeof features=="object"){for(var i=0;i0){pieces.push(',');} geometry=collection[i].geometry;type=geometry.CLASS_NAME.split('.')[2].toLowerCase();if(!this.extract[type]){return null;} +if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} data=this.extract[type].apply(this,[geometry]);pieces.push(type.toUpperCase()+'('+data+')');} if(isCollection){pieces.push(')');} return pieces.join('');},extract:{'point':function(point){return point.x+' '+point.y;},'multipoint':function(multipoint){var array=[];for(var i=0;i0){var location=point[0].firstChild.nodeValue.split(" ");if(location.length!=2){var location=point[0].firstChild.nodeValue.split(",");}}else if(lat.length>0&&lon.length>0){var location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];}else{continue;} -location=new OpenLayers.LonLat(parseFloat(location[1]),parseFloat(location[0]));var title="Untitled";try{title=OpenLayers.Util.getNodes(itemlist[i],"title")[0].firstChild.nodeValue;} -catch(e){title="Untitled";} -var descr_nodes=null;try{descr_nodes=itemlist[i].getElementsByTagNameNS("*","description");} -catch(e){descr_nodes=itemlist[i].getElementsByTagName("description");} -if(descr_nodes.length==0){try{descr_nodes=itemlist[i].getElementsByTagNameNS("*","summary");} -catch(e){descr_nodes=itemlist[i].getElementsByTagName("summary");}} -var description="No description.";try{description=descr_nodes[0].firstChild.nodeValue;} -catch(e){description="No description.";} -try{var link=OpenLayers.Util.getNodes(itemlist[i],"link")[0].firstChild.nodeValue;} -catch(e){try{var link=OpenLayers.Util.getNodes(itemlist[i],"link")[0].getAttribute("href");} -catch(e){}} -data.icon=this.icon==null?OpenLayers.Marker.defaultIcon():this.icon.clone();data.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if((title!=null)&&(description!=null)){contentHTML='
    [x]
    ';contentHTML+='
    ';if(link)contentHTML+='';contentHTML+=title;if(link)contentHTML+='';contentHTML+='
    ';contentHTML+='
    ';contentHTML+=description;contentHTML+='
    ';data['popupContentHTML']=contentHTML;} +var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +var format=new OpenLayers.Format.GeoRSS(options);var features=format.read(doc);for(var i=0;i';} +contentHTML+=title;if(link){contentHTML+='';} +contentHTML+='';contentHTML+='
    ';contentHTML+=description;contentHTML+='
    ';data['popupContentHTML']=contentHTML;} var feature=new OpenLayers.Feature(this,location,data);this.features.push(feature);var marker=feature.createMarker();marker.events.register('click',feature,this.markerClick);this.addMarker(marker);} -this.events.triggerEvent("loadend");},markerClick:function(evt){sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0;i0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:19,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515,0.00000268220901489257],type:null,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);this.addContainerPxFunction();if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{this.mapObject=new GMap2(this.div);var poweredBy=this.div.lastChild;this.div.removeChild(poweredBy);this.pane.appendChild(poweredBy);poweredBy.className="olLayerGooglePoweredBy gmnoprint";poweredBy.style.left="";poweredBy.style.bottom="";var termsOfUse=this.div.lastChild;this.div.removeChild(termsOfUse);this.pane.appendChild(termsOfUse);termsOfUse.className="olLayerGoogleCopyright";termsOfUse.style.right="";termsOfUse.style.bottom="";}catch(e){}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);if(this.type!=null){this.map.events.register("moveend",this,this.setMapType);}},setMapType:function(){if(this.mapObject.getCenter()!=null){this.mapObject.setMapType(this.type);this.map.events.unregister("moveend",this,this.setMapType);}},onMapResize:function(){this.mapObject.checkResize();},getOLBoundsFromMapObjectBounds:function(moBounds){var olBounds=null;if(moBounds!=null){var sw=moBounds.getSouthWest();var ne=moBounds.getNorthEast();if(this.sphericalMercator){sw=this.forwardMercator(sw.lng(),sw.lat());ne=this.forwardMercator(ne.lng(),ne.lat());}else{sw=new OpenLayers.LonLat(sw.lng(),sw.lat());ne=new OpenLayers.LonLat(ne.lng(),ne.lat());} +OpenLayers.Event.stop(evt);},clearFeatures:function(){if(this.features!=null){while(this.features.length>0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:19,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515,0.00000268220901489257],type:null,sphericalMercator:false,dragObject:null,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);this.addContainerPxFunction();if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{this.mapObject=new GMap2(this.div);if(typeof this.mapObject.getDragObject=="function"){this.dragObject=this.mapObject.getDragObject();}else{this.dragPanMapObject=null;} +var poweredBy=this.div.lastChild;this.div.removeChild(poweredBy);this.pane.appendChild(poweredBy);poweredBy.className="olLayerGooglePoweredBy gmnoprint";poweredBy.style.left="";poweredBy.style.bottom="";var termsOfUse=this.div.lastChild;this.div.removeChild(termsOfUse);this.pane.appendChild(termsOfUse);termsOfUse.className="olLayerGoogleCopyright";termsOfUse.style.right="";termsOfUse.style.bottom="";}catch(e){OpenLayers.Console.error(e);}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);if(this.type!=null){this.map.events.register("moveend",this,this.setMapType);}},setMapType:function(){if(this.mapObject.getCenter()!=null){if(OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)==-1){this.mapObject.addMapType(this.type);} +this.mapObject.setMapType(this.type);this.map.events.unregister("moveend",this,this.setMapType);}},onMapResize:function(){this.mapObject.checkResize();},getOLBoundsFromMapObjectBounds:function(moBounds){var olBounds=null;if(moBounds!=null){var sw=moBounds.getSouthWest();var ne=moBounds.getNorthEast();if(this.sphericalMercator){sw=this.forwardMercator(sw.lng(),sw.lat());ne=this.forwardMercator(ne.lng(),ne.lat());}else{sw=new OpenLayers.LonLat(sw.lng(),sw.lat());ne=new OpenLayers.LonLat(ne.lng(),ne.lat());} olBounds=new OpenLayers.Bounds(sw.lon,sw.lat,ne.lon,ne.lat);} return olBounds;},getMapObjectBoundsFromOLBounds:function(olBounds){var moBounds=null;if(olBounds!=null){var sw=this.sphericalMercator?this.inverseMercator(olBounds.bottom,olBounds.left):new OpenLayers.LonLat(olBounds.bottom,olBounds.left);var ne=this.sphericalMercator?this.inverseMercator(olBounds.top,olBounds.right):new OpenLayers.LonLat(olBounds.top,olBounds.right);moBounds=new GLatLngBounds(new GLatLng(sw.lat,sw.lon),new GLatLng(ne.lat,ne.lon));} -return moBounds;},addContainerPxFunction:function(){if((typeof GMap2!="undefined")&&!GMap2.prototype.fromLatLngToContainerPixel){GMap2.prototype.fromLatLngToContainerPixel=function(gLatLng){var gPoint=this.fromLatLngToDivPixel(gLatLng);var div=this.getContainer().firstChild.firstChild;gPoint.x+=div.offsetLeft;gPoint.y+=div.offsetTop;return gPoint;};}},getWarningHTML:function(){var html="";html+="The Google Layer was unable to load correctly.
    ";html+="
    ";html+="To get rid of this message, select a new BaseLayer " -html+="in the layer switcher in the upper-right corner.
    ";html+="
    ";html+="Most likely, this is because the Google Maps library";html+=" script was either not included, or does not contain the";html+=" correct API key for your site.
    ";html+="
    ";html+="Developers: For help getting this working correctly, ";html+="=bounds.bottom-tilelat*this.buffer)||rowidx=0)&&(testCell=0)){tile=this.grid[testRow][testCell];} if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}} -for(var i=0;i-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{break;}};if(this.buffer==0){for(var r=0,rl=this.grid.length;rrows){var row=this.grid.pop();for(var i=0,l=row.length;icolumns){for(var i=0,l=this.grid.length;i-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{break;}};},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0;irows){var row=this.grid.pop();for(var i=0,l=row.length;icolumns){for(var i=0,l=this.grid.length;i'+title+'

    '+description+'

    ';} -data['overflow']=overflow||"auto";var feature=new OpenLayers.Feature(this,location,data);this.features.push(feature);var marker=feature.createMarker();if((title!=null)&&(description!=null)){marker.events.register('click',feature,this.markerClick);} -this.addMarker(marker);}}}} +maxExtent.bottom)/tileMapHeight));return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Layer.MultiMap=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[9,1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();this.RESOLUTIONS.unshift(10);}},loadMapObject:function(){try{this.mapObject=new MultimapViewer(this.div);}catch(e){}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':"MM",'layerLib':"MultiMap"});},setMapObjectCenter:function(center,zoom){this.mapObject.goToPosition(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCurrentPosition();},getMapObjectZoom:function(){return this.mapObject.getZoomFactor();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){moPixel.x=moPixel.x-(this.map.getSize().w/2);moPixel.y=moPixel.y-(this.map.getSize().h/2);return this.mapObject.getMapPositionAt(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.geoPosToContainerPixels(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lon:moLonLat.lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lat:moLonLat.lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var mmLatLon;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);mmLatLon=new MMLatLon(lonlat.lat,lonlat.lon);}else{mmLatLon=new MMLatLon(lat,lon);} +return mmLatLon;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new MMPoint(x,y);},CLASS_NAME:"OpenLayers.Layer.MultiMap"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(name,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=new Array();},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null;},loadText:function(){if(!this.loaded){if(this.location!=null){var onFail=function(e){this.events.triggerEvent("loadend");};this.events.triggerEvent("loadstart");OpenLayers.loadURL(this.location,null,this,this.parseData,onFail);this.loaded=true;}}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.events.triggerEvent("loadstart");this.loadText();}},parseData:function(ajaxRequest){var text=ajaxRequest.responseText;var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +var parser=new OpenLayers.Format.Text(options);features=parser.read(text);for(var i=0;i'+feature.attributes.title+''+'

    '+feature.attributes.description+'

    ';} +data['overflow']=feature.attributes.overflow||"auto";var markerFeature=new OpenLayers.Feature(this,location,data);this.features.push(markerFeature);var marker=markerFeature.createMarker();if((feature.attributes.title!=null)&&(feature.attributes.description!=null)){marker.events.register('click',markerFeature,this.markerClick);} +this.addMarker(marker);} this.events.triggerEvent("loadend");},markerClick:function(evt){var sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0;i0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:false,isFixed:false,isVector:true,features:null,selectedFeatures:null,reportError:true,style:null,renderers:['SVG','VML'],renderer:null,geometryType:null,drawn:false,initialize:function(name,options){var defaultStyle=OpenLayers.Feature.Vector.style['default'];this.style=OpenLayers.Util.extend({},defaultStyle);OpenLayers.Layer.prototype.initialize.apply(this,arguments);if(!this.renderer||!this.renderer.supported()){this.assignRenderer();} -if(!this.renderer||!this.renderer.supported()){this.renderer=null;this.displayError();} -this.features=[];this.selectedFeatures=[];},destroy:function(){OpenLayers.Layer.prototype.destroy.apply(this,arguments);this.destroyFeatures();this.features=null;this.selectedFeatures=null;if(this.renderer){this.renderer.destroy();} -this.renderer=null;this.geometryType=null;this.drawn=null;},assignRenderer:function(){for(var i=0;i=0;i--){var feature=features[i];this.features=OpenLayers.Util.removeItem(this.features,feature);if(feature.geometry){this.renderer.eraseGeometry(feature.geometry);} -if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}}},destroyFeatures:function(){this.selectedFeatures=[];for(var i=this.features.length-1;i>=0;i--){this.features[i].destroy();}},drawFeature:function(feature,style){if(style==null){if(feature.style){style=feature.style;}else{style=this.style;}} -this.renderer.drawFeature(feature,style);},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");return null;} -var featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},getFeatureById:function(featureId){var feature=null;for(var i=0;i0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Layer.VirtualEarth=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){var veDiv=OpenLayers.Util.createDiv(this.name);var sz=this.map.getSize();veDiv.style.width=sz.w;veDiv.style.height=sz.h;this.div.appendChild(veDiv);try{this.mapObject=new VEMap(this.name);}catch(e){} +if(this.mapObject!=null){try{this.mapObject.LoadMap(null,null,this.type,true);this.mapObject.AttachEvent("onmousedown",function(){return true;});}catch(e){} +this.mapObject.HideDashboard();} +if(!this.mapObject||!this.mapObject.vemapcontrol||!this.mapObject.vemapcontrol.PanMap||(typeof this.mapObject.vemapcontrol.PanMap!="function")){this.dragPanMapObject=null;}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'VE','layerLib':'VirtualEarth'});},setMapObjectCenter:function(center,zoom){this.mapObject.SetCenterAndZoom(center,zoom);},getMapObjectCenter:function(){return this.mapObject.GetCenter();},dragPanMapObject:function(dX,dY){this.mapObject.vemapcontrol.PanMap(dX,-dY);},getMapObjectZoom:function(){return this.mapObject.GetZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.PixelToLatLong(moPixel.x,moPixel.y);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.LatLongToPixel(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lon:moLonLat.Longitude;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lat:moLonLat.Latitude;},getMapObjectLonLatFromLonLat:function(lon,lat){var veLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);veLatLong=new VELatLong(lonlat.lat,lonlat.lon);}else{veLatLong=new VELatLong(lat,lon);} +return veLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new Msn.VE.Pixel(x,y);},CLASS_NAME:"OpenLayers.Layer.VirtualEarth"});OpenLayers.Layer.Yahoo=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:15,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject=new YMap(this.div,this.type,size);this.mapObject.disableKeyControls();this.mapObject.disableDragMap();if(!this.mapObject.moveByXY||(typeof this.mapObject.moveByXY!="function")){this.dragPanMapObject=null;}}catch(e){}},onMapResize:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject.resizeTo(size);}catch(e){}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);this.map.events.register("moveend",this,this.fixYahooEventPane);},fixYahooEventPane:function(){var yahooEventPane=OpenLayers.Util.getElement("ygddfdiv");if(yahooEventPane!=null){if(yahooEventPane.parentNode!=null){yahooEventPane.parentNode.removeChild(yahooEventPane);} +this.map.events.unregister("moveend",this,this.fixYahooEventPane);}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'Yahoo','layerLib':'Yahoo'});},getOLZoomFromMapObjectZoom:function(moZoom){var zoom=null;if(moZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getOLZoomFromMapObjectZoom.apply(this,[moZoom]);zoom=18-zoom;} return zoom;},getMapObjectZoomFromOLZoom:function(olZoom){var zoom=null;if(olZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getMapObjectZoomFromOLZoom.apply(this,[olZoom]);zoom=18-zoom;} -return zoom;},setMapObjectCenter:function(center,zoom){this.mapObject.drawZoomAndCenter(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCenterLatLon();},getMapObjectZoom:function(){return this.mapObject.getZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.convertXYLatLon(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.convertLatLonXY(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lon:moLonLat.Lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lat:moLonLat.Lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var yLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);yLatLong=new YGeoPoint(lonlat.lat,lonlat.lon);}else{yLatLong=new YGeoPoint(lat,lon);} -return yLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new YCoordPoint(x,y);},getMapObjectSizeFromOLSize:function(olSize){return new YSize(olSize.w,olSize.h);},CLASS_NAME:"OpenLayers.Layer.Yahoo"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,keyboardHandler:null,deleteCodes:null,virtualStyle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(layer,options){this.layer=layer;this.vertices=[];this.virtualVertices=[];this.styleVirtual=OpenLayers.Util.extend({},this.layer.style);this.styleVirtual.fillOpacity=0.3;this.styleVirtual.strokeOpacity=0.3;this.deleteCodes=[46,100];OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!(this.deleteCodes instanceof Array)){this.deleteCodes=[this.deleteCodes];} -var control=this;var selectOptions={geometryTypes:this.geometryTypes,onSelect:function(feature){control.selectFeature.apply(control,[feature]);},onUnselect:function(feature){control.unselectFeature.apply(control,[feature]);}};this.selectControl=new OpenLayers.Control.SelectFeature(layer,selectOptions);var dragOptions={geometryTypes:["OpenLayers.Geometry.Point"],snappingOptions:this.snappingOptions,onStart:function(feature,pixel){control.dragStart.apply(control,[feature,pixel]);},onDrag:function(feature){control.dragVertex.apply(control,[feature]);},onComplete:function(feature){control.dragComplete.apply(control,[feature]);}};this.dragControl=new OpenLayers.Control.DragFeature(layer,dragOptions);var keyboardOptions={keypress:this.handleKeypress};this.keyboardHandler=new OpenLayers.Handler.Keyboard(this,keyboardOptions);},destroy:function(){this.layer=null;this.selectControl.destroy();this.dragControl.destroy();this.keyboardHandler.destroy();OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return(this.selectControl.activate()&&this.keyboardHandler.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){var deactivated=false;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices);this.layer.removeFeatures(this.virtualVertices);this.vertices=[];this.dragControl.deactivate();if(this.feature){this.selectControl.unselect.apply(this.selectControl,[this.feature]);} -this.selectControl.deactivate();this.keyboardHandler.deactivate();deactivated=true;} -return deactivated;},selectFeature:function(feature){this.feature=feature;this.resetVertices();this.dragControl.activate();this.onModificationStart(this.feature);},unselectFeature:function(feature){this.layer.removeFeatures(this.vertices);this.layer.removeFeatures(this.virtualVertices);this.vertices=[];this.virtualVertices=[];this.feature=null;this.dragControl.deactivate();this.onModificationEnd(feature);},dragStart:function(feature,pixel){if(feature!=this.feature&&OpenLayers.Util.indexOf(this.vertices,feature)==-1&&OpenLayers.Util.indexOf(this.virtualVertices,feature)==-1){if(this.feature){this.selectControl.clickFeature.apply(this.selectControl,[this.feature]);} -if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)!=-1){this.selectControl.clickFeature.apply(this.selectControl,[feature]);this.dragControl.overFeature.apply(this.dragControl,[feature]);this.dragControl.lastPixel=pixel;this.dragControl.dragHandler.started=true;this.dragControl.dragHandler.start=pixel;this.dragControl.dragHandler.last=pixel;}}},dragVertex:function(vertex){if(this.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){if(this.feature!=vertex){this.feature=vertex;}}else{if(OpenLayers.Util.indexOf(this.virtualVertices,vertex)!=-1){vertex.geometry.parent.addComponent(vertex.geometry,vertex._index);delete vertex._index;OpenLayers.Util.removeItem(this.virtualVertices,vertex);this.layer.removeFeatures(vertex);}} -this.layer.drawFeature(this.feature,this.selectControl.selectStyle);this.layer.removeFeatures(this.virtualVertices);this.layer.drawFeature(vertex);},dragComplete:function(vertex){this.resetVertices();this.onModification(this.feature);},resetVertices:function(){if(this.vertices.length>0){this.layer.removeFeatures(this.vertices);this.vertices=[];} +return zoom;},setMapObjectCenter:function(center,zoom){this.mapObject.drawZoomAndCenter(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCenterLatLon();},dragPanMapObject:function(dX,dY){this.mapObject.moveByXY({'x':-dX,'y':dY});},getMapObjectZoom:function(){return this.mapObject.getZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.convertXYLatLon(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.convertLatLonXY(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lon:moLonLat.Lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lat:moLonLat.Lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var yLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);yLatLong=new YGeoPoint(lonlat.lat,lonlat.lon);}else{yLatLong=new YGeoPoint(lat,lon);} +return yLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new YCoordPoint(x,y);},getMapObjectSizeFromOLSize:function(olSize){return new YSize(olSize.w,olSize.h);},CLASS_NAME:"OpenLayers.Layer.Yahoo"});OpenLayers.Style=OpenLayers.Class({name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,propertyStyles:null,initialize:function(style,options){this.rules=[];this.setDefaultStyle(style||OpenLayers.Feature.Vector.style["default"]);OpenLayers.Util.extend(this,options);},destroy:function(){for(var i=0;i0){appliedRules=true;for(var i=0;i0&&appliedRules==false){style.display="none";}else{style.display="";} +return style;},applySymbolizer:function(rule,style,feature){var symbolizerPrefix=feature.geometry?this.getSymbolizerPrefix(feature.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];var symbolizer=rule.symbolizer[symbolizerPrefix]||rule.symbolizer;return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=this.context||feature.attributes||feature.data;for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature);} +return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0;i0){this.layer.destroyFeatures(this.virtualVertices);this.virtualVertices=[];} +this.layer.drawFeature(this.feature,this.selectControl.renderIntent);} +this.layer.drawFeature(vertex);},dragComplete:function(vertex){this.resetVertices();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature});},resetVertices:function(){if(this.dragControl.feature){this.dragControl.outFeature(this.dragControl.feature);} +if(this.vertices.length>0){this.layer.removeFeatures(this.vertices);this.vertices=[];} if(this.virtualVertices.length>0){this.layer.removeFeatures(this.virtualVertices);this.virtualVertices=[];} -if(this.feature&&this.feature.geometry.CLASS_NAME!="OpenLayers.Geometry.Point"){this.collectVertices(this.feature.geometry);this.layer.addFeatures(this.vertices);this.layer.addFeatures(this.virtualVertices);}},handleKeypress:function(code){if(this.feature&&OpenLayers.Util.indexOf(this.deleteCodes,code)!=-1){var vertex=this.dragControl.feature;if(vertex&&OpenLayers.Util.indexOf(this.vertices,vertex)!=-1){vertex.geometry.parent.removeComponent(vertex.geometry);this.layer.drawFeature(this.feature,this.selectControl.selectStyle);this.resetVertices();this.onModification(this.feature);}}},collectVertices:function(){this.vertices=[];this.virtualVirtices=[];var control=this;function collectComponentVertices(geometry){var i,vertex,component;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){vertex=new OpenLayers.Feature.Vector(geometry);control.vertices.push(vertex);}else{for(i=0;i=bounds.bottom-tilelat*this.buffer||rowidx=0&&along1<=1&&along2>=0&&along2<=1){if(!point){intersection=true;}else{var x=seg1.x1+(along1*x12_11);var y=seg1.y1+(along1*y12_11);intersection=new OpenLayers.Geometry.Point(x,y);}}} +return intersection;};OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,units:null,resolution:OpenLayers.DOTS_PER_INCH,DEFAULT_PARAMS:{i:'jpeg',map:''},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=(params?params:{});if(params){OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);}},getURL:function(bounds){bounds=this.adjustBounds(bounds);var mapRes=this.map.getResolution();var scale=Math.round((this.map.getScale()*10000))/10000;var pX=Math.round(bounds.left/mapRes);var pY=-Math.round(bounds.top/mapRes);return this.getFullRequestString({t:pY,l:pX,s:scale});},addTile:function(bounds,position){var url=this.getURL(bounds);return new OpenLayers.Tile.Image(this,position,bounds,url,this.tileSize);},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=tilecol*tilelon;var offsetlat=bounds.top;var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-(tilerowremain+1)*this.tileSize.h;var tileoffsetlat=tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.options);} obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();} -obj.grid=[];return obj;},getTileBounds:function(viewPortPx){var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=tileMapWidth*Math.floor(mapPoint.lon/tileMapWidth);var tileBottom=tileMapHeight*Math.floor(mapPoint.lat/tileMapHeight);return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);if(arguments.length>0){OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);} -if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.params.transparent!="true")&&(this.params.transparent!=true));}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.options);} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var extent=[bounds.left,bounds.bottom,bounds.right,bounds.top];var imageSize=this.getImageSize();var url=this.getFullRequestString({mapext:extent,imgext:extent,map_size:[imageSize.w,imageSize.h],imgx:imageSize.w/2,imgy:imageSize.h/2,imgxy:[imageSize.w,imageSize.h]});return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];} -var requestString=url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} +obj.grid=[];return obj;},getTileBounds:function(viewPortPx){var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=tileMapWidth*Math.floor(mapPoint.lon/tileMapWidth);var tileBottom=tileMapHeight*Math.floor(mapPoint.lat/tileMapHeight);return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,singleTile:false,TILE_PARAMS:{operation:'GETTILEIMAGE',version:'1.2.0'},SINGLE_TILE_PARAMS:{operation:'GETMAPIMAGE',format:'PNG',locale:'en',clip:'1',version:'1.0.0'},defaultSize:new OpenLayers.Size(300,300),initialize:function(name,url,params,options){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.transparent!="true")&&(this.transparent!=true));} +if(this.singleTile){OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS);}else{OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS);this.setTileSize(this.defaultSize);}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.options);} +obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){var url;var center=bounds.getCenterLonLat();var mapSize=this.map.getCurrentSize();if(this.singleTile){var params={};params.setdisplaydpi=OpenLayers.DOTS_PER_INCH;params.setdisplayheight=mapSize.h*this.ratio;params.setdisplaywidth=mapSize.w*this.ratio;params.setviewcenterx=center.lon;params.setviewcentery=center.lat;params.setviewscale=this.map.getScale();if(!this.isBaseLayer){this.params.operation="GETDYNAMICMAPOVERLAYIMAGE";var getVisParams={};getVisParams.operation="GETVISIBLEMAPEXTENT";getVisParams.version="1.0.0";getVisParams.session=this.params.session;getVisParams.mapName=this.params.mapName;getVisParams.format='text/xml';getVisParams=OpenLayers.Util.extend(getVisParams,params);new OpenLayers.Ajax.Request(this.url,{parameters:getVisParams,method:'get',asynchronous:false});} +url=this.getFullRequestString(params);}else{var currentRes=this.map.getResolution();var colidx=Math.floor((bounds.left-this.maxExtent.left)/currentRes);colidx=Math.round(colidx/this.tileSize.w);var rowidx=Math.floor((this.maxExtent.top-bounds.top)/currentRes);rowidx=Math.round(rowidx/this.tileSize.h);url=this.getFullRequestString({tilecol:colidx,tilerow:rowidx,scaleindex:this.resolutions.length-this.map.zoom-1});} +return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];} +var requestString=url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getArgs(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} var paramsString=OpenLayers.Util.getParameterString(allParams);paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}} +return requestString;},calculateGridLayout:function(bounds,extent,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-extent.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=extent.left+tilecol*tilelon;var offsetlat=extent.top-bounds.top+tilelat;var tilerow=Math.floor(offsetlat/tilelat)-this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=tilerowremain*this.tileSize.h;var tileoffsetlat=extent.top-tilelat*tilerow;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);if(arguments.length>0){OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);} +if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.params.transparent!="true")&&(this.params.transparent!=true));}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.options);} +obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var extent=[bounds.left,bounds.bottom,bounds.right,bounds.top];var imageSize=this.getImageSize();var url=this.getFullRequestString({mapext:extent,imgext:extent,map_size:[imageSize.w,imageSize.h],imgx:imageSize.w/2,imgy:imageSize.h/2,imgxy:[imageSize.w,imageSize.h]});return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(url instanceof Array){url=this.selectUrl(paramsString,url);} +var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} +paramsString=OpenLayers.Util.getParameterString(allParams);var requestString=url;paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}} return requestString;},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",isBaseLayer:true,tileOrigin:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,url,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TMS(this.name,this.url,this.options);} obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((bounds.bottom-this.tileOrigin.lat)/(res*this.tileSize.h));var z=this.map.getZoom();var path=this.serviceVersion+"/"+this.layername+"/"+z+"/"+x+"/"+y+"."+this.type;var url=this.url;if(url instanceof Array){url=this.selectUrl(path,url);} -return url+path;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize);},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,tileOrigin:null,format:'image/png',initialize:function(name,url,layername,options){options=OpenLayers.Util.extend({maxResolution:180/256},options);this.layername=layername;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[name,url,{},options]);this.extension=this.format.split('/')[1].toLowerCase();this.extension=(this.extension=='jpeg')?'jpg':this.extension;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TileCache(this.name,this.url,this.options);} -obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var res=this.map.getResolution();var bbox=this.maxExtent;var size=this.tileSize;var tileX=Math.floor((bounds.left-bbox.left)/(res*size.w));var tileY=Math.floor((bounds.bottom-bbox.bottom)/(res*size.h));var tileZ=this.map.zoom;function zeroPad(number,length){number=String(number);var zeros=[];for(var i=0;i=OpenLayers.Style.createLiteral(this.minScaleDenominator,context);} +if(applies&&this.maxScaleDenominator){applies=scale=this.lowerBoundary;result=result&&context[this.property]<=this.upperBoundary;return result;case OpenLayers.Filter.Comparison.LIKE:var regexp=new RegExp(this.value,"gi");return regexp.test(context[this.property]);}},value2regex:function(wildCard,singleChar,escapeChar){if(wildCard=="."){var msg="'.' is an unsupported wildCard character for "+"OpenLayers.Filter.Comparison";OpenLayers.Console.error(msg);return null;} +wildCard=wildCard?wildCard:"*";singleChar=singleChar?singleChar:".";escapeChar=escapeChar?escapeChar:"!";this.value=this.value.replace(new RegExp("\\"+escapeChar,"g"),"\\");this.value=this.value.replace(new RegExp("\\"+singleChar,"g"),".");this.value=this.value.replace(new RegExp("\\"+wildCard,"g"),".*");this.value=this.value.replace(new RegExp("\\\\.\\*","g"),"\\"+wildCard);this.value=this.value.replace(new RegExp("\\\\\\.","g"),"\\"+singleChar);return this.value;},regex2value:function(){var value=this.value;value=value.replace(/!/g,"!!");value=value.replace(/(\\)?\\\./g,function($0,$1){return $1?$0:"!.";});value=value.replace(/(\\)?\\\*/g,function($0,$1){return $1?$0:"!*";});value=value.replace(/\\\\/g,"\\");value=value.replace(/\.\*/g,"*");return value;},binaryCompare:function(context,property,value){switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:return context[property]==value;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:return context[property]!=value;case OpenLayers.Filter.Comparison.LESS_THAN:return context[property]value;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:return context[property]<=value;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:return context[property]>=value;}},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.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,initialize:function(options){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){for(var i=0;i0){this.setBounds(this.components[0].getBounds());for(var i=1;i-1)){if(index!=null&&(index=0;--i){this.removeComponent(components[i]);}},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();},getLength:function(){var length=0.0;for(var i=0;i0)){area+=Math.abs(this.components[0].getArea());for(var i=1;i=0;i--){var feature=features[i];this.features=OpenLayers.Util.removeItem(this.features,feature);if(feature.geometry){this.renderer.eraseGeometry(feature.geometry);} +if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}}},destroyFeatures:function(features){var all=(features==undefined);if(all){features=this.features;this.selectedFeatures=[];} +this.eraseFeatures(features);var feature;for(var i=features.length-1;i>=0;i--){feature=features[i];if(!all){OpenLayers.Util.removeItem(this.selectedFeatures,feature);} +feature.destroy();}},drawFeature:function(feature,style){if(typeof style!="object"){var renderIntent=typeof style=="string"?style:feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}} +this.renderer.drawFeature(feature,style);},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;} +var featureId=this.renderer.getFeatureIdFromEvent(evt);return this.getFeatureById(featureId);},getFeatureById:function(featureId){var feature=null;for(var i=0;i0)){area+=Math.abs(this.components[0].getArea());for(var i=1;i0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i1)){for(var i=1;i2)){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}},CLASS_NAME:"OpenLayers.Geometry.LineString"});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:true,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)};OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +return true;},mouseup:function(evt){if(this.drawing){this.finalize();return false;}else{return true;}},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Layer.GML=OpenLayers.Class(OpenLayers.Layer.Vector,{loaded:false,format:null,formatOptions:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);this.url=url;},setVisibility:function(visibility,noEvent){OpenLayers.Layer.Vector.prototype.setVisibility.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadGML();}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.events.triggerEvent("loadstart");this.loadGML();}},loadGML:function(){if(!this.loaded){var results=OpenLayers.loadURL(this.url,null,this,this.requestSuccess,this.requestFailure);this.loaded=true;}},setUrl:function(url){this.url=url;this.destroyFeatures();this.loaded=false;this.events.triggerEvent("loadstart");this.loadGML();},requestSuccess:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;} +var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +var gml=this.format?new this.format(options):new OpenLayers.Format.GML(options);this.addFeatures(gml.read(doc));this.events.triggerEvent("loadend");},requestFailure:function(request){alert(OpenLayers.i18n("errorLoadingGML",{'url':this.url}));this.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Layer.GML"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},addNodes:function(pointFeatures){if(pointFeatures.length<2){OpenLayers.Console.error("At least two point features have to be added to create"+"a line from");return;} +var lines=new Array(pointFeatures.length-1);var pointFeature,startPoint,endPoint;for(var i=0;i0){var attributes=(this.dataFrom!=null)?(pointFeatures[i+this.dataFrom].data||pointFeatures[i+this.dataFrom].attributes):null;var line=new OpenLayers.Geometry.LineString([startPoint,endPoint]);lines[i-1]=new OpenLayers.Feature.Vector(line,attributes);} +startPoint=endPoint;} +this.addFeatures(lines);},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.dataFrom={'SOURCE_NODE':-1,'TARGET_NODE':0};OpenLayers.Layer.WFS=OpenLayers.Class(OpenLayers.Layer.Vector,OpenLayers.Layer.Markers,{isBaseLayer:false,tile:null,ratio:2,DEFAULT_PARAMS:{service:"WFS",version:"1.0.0",request:"GetFeature"},featureClass:null,format:null,formatObject:null,formatOptions:null,vectorMode:true,encodeBBOX:false,extractAttributes:false,initialize:function(name,url,params,options){if(options==undefined){options={};} +if(options.featureClass||!OpenLayers.Layer.Vector||!OpenLayers.Feature.Vector){this.vectorMode=false;} +OpenLayers.Util.extend(options,{'reportError':false});var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);if(!this.renderer||!this.vectorMode){this.vectorMode=false;if(!options.featureClass){options.featureClass=OpenLayers.Feature.WFS;} +OpenLayers.Layer.Markers.prototype.initialize.apply(this,newArguments);} +if(this.params&&this.params.typename&&!this.options.typename){this.options.typename=this.params.typename;} +if(!this.options.geometry_column){this.options.geometry_column="the_geom";} +this.params=params;OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));this.url=url;},destroy:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.destroy.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);} +if(this.tile){this.tile.destroy();} +this.tile=null;this.ratio=null;this.featureClass=null;this.format=null;if(this.formatObject&&this.formatObject.destroy){this.formatObject.destroy();} +this.formatObject=null;this.formatOptions=null;this.vectorMode=null;this.encodeBBOX=null;this.extractAttributes=null;},setMap:function(map){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);var options={'extractAttributes':this.extractAttributes};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();} +this.formatObject=this.format?new this.format(options):new OpenLayers.Format.GML(options);}else{OpenLayers.Layer.Markers.prototype.setMap.apply(this,arguments);}},moveTo:function(bounds,zoomChanged,dragging){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);} +if(dragging){return false;} +if(zoomChanged){if(this.vectorMode){this.renderer.clear();}} +if(this.options.minZoomLevel){OpenLayers.Console.warn(OpenLayers.i18n('minZoomLevelError'));if(this.map.getZoom()0){rule.filter=new OpenLayers.Filter.FeatureId({fids:obj.fids});}else if(obj.filters.length>0){rule.filter=obj.filters[0];}},"FeatureId":function(node,obj){var fid=node.getAttribute("fid");if(fid){obj.fids.push(fid);}},"And":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});this.readChildNodes(node,filter);obj.filters.push(filter);},"Or":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(node,filter);obj.filters.push(filter);},"Not":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsNotEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLessThan":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsGreaterThan":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLessThanOrEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsGreaterThanOrEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsBetween":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLike":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(node,filter);var wildCard=node.getAttribute("wildCard");var singleChar=node.getAttribute("singleChar");var esc=node.getAttribute("escape");filter.value2regex(wildCard,singleChar,esc);obj.filters.push(filter);},"Literal":function(node,obj){obj.value=this.getChildValue(node);},"PropertyName":function(node,filter){filter.property=this.getChildValue(node);},"LowerBoundary":function(node,filter){filter.lowerBoundary=this.readOgcExpression(node);},"UpperBoundary":function(node,filter){filter.upperBoundary=this.readOgcExpression(node);}}},readOgcExpression:function(node){var obj={};this.readChildNodes(node,obj);var value=obj.value;if(!value){value=this.getChildValue(node);} +return value;},cssMap:{"stroke":"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","fill":"fillColor","fill-opacity":"fillOpacity"},getCssProperty:function(sym){var css=null;for(var prop in this.cssMap){if(this.cssMap[prop]==sym){css=prop;break;}} +return css;},getGraphicFormat:function(href){var format,regex;for(var key in this.graphicFormats){if(this.graphicFormats[key].test(href)){format=key;break;}} +return format||this.defautlGraphicFormat;},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\.jpe?g$/i,"image/gif":/\.gif$/i,"image/png":/\.png$/i},write:function(sld){return this.writers.sld.StyledLayerDescriptor.apply(this,[sld]);},writers:{"sld":{"StyledLayerDescriptor":function(sld){var root=this.createElementNSPlus("StyledLayerDescriptor",{attributes:{"version":this.VERSION,"xsi:schemaLocation":this.schemaLocation}});if(sld.name){this.writeNode(root,"Name",sld.name);} +if(sld.title){this.writeNode(root,"Title",sld.title);} +if(sld.description){this.writeNode(root,"Abstract",sld.description);} +for(var name in sld.namedLayers){this.writeNode(root,"NamedLayer",sld.namedLayers[name]);} +return root;},"Name":function(name){return this.createElementNSPlus("Name",{value:name});},"Title":function(title){return this.createElementNSPlus("Title",{value:title});},"Abstract":function(description){return this.createElementNSPlus("Abstract",{value:description});},"NamedLayer":function(layer){var node=this.createElementNSPlus("NamedLayer");this.writeNode(node,"Name",layer.name);if(layer.namedStyles){for(var i=0;i":"PropertyIsGreaterThan","<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike"},getNamespacePrefix:function(uri){var prefix=null;if(uri==null){prefix=this.namespaces[this.defaultPrefix];}else{var gotPrefix=false;for(prefix in this.namespaces){if(this.namespaces[prefix]==uri){gotPrefix=true;break;}} +if(!gotPrefix){prefix=null;}} +return prefix;},readChildNodes:function(node,obj){var children=node.childNodes;var child,group,reader,prefix,local;for(var i=0;i0){prefix=name.substring(0,split);local=name.substring(split+1);}else{prefix=this.getNamespacePrefix(parent.namespaceURI);local=name;} +var child=this.writers[prefix][local].apply(this,[obj]);parent.appendChild(child);return child;},createElementNSPlus:function(name,options){options=options||{};var loc=name.indexOf(":");var uri=options.uri||this.namespaces[options.prefix];if(!uri){loc=name.indexOf(":");uri=this.namespaces[name.substring(0,loc)];} +if(!uri){uri=this.namespaces[this.defaultPrefix];} +var node=this.createElementNS(uri,name);if(options.attributes){this.setAttributes(node,options.attributes);} +if(options.value){node.appendChild(this.createTextNode(options.value));} +return node;},setAttributes:function(node,obj){var value,loc,alias,uri;for(var name in obj){value=obj[name].toString();uri=this.namespaces[name.substring(0,name.indexOf(":"))]||null;this.setAttributeNS(node,uri,name,value);}},CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.MultiPoint.prototype.initialize.apply(this,arguments);},getLength:function(){var length=0.0;if(this.components&&(this.components.length>1)){for(var i=1;i2)){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}},intersects:function(geometry){var intersect=false;var type=geometry.CLASS_NAME;if(type=="OpenLayers.Geometry.LineString"||type=="OpenLayers.Geometry.LinearRing"||type=="OpenLayers.Geometry.Point"){var segs1=this.getSortedSegments();var segs2;if(type=="OpenLayers.Geometry.Point"){segs2=[{x1:geometry.x,y1:geometry.y,x2:geometry.x,y2:geometry.y}];}else{segs2=geometry.getSortedSegments();} +var seg1,seg1x1,seg1x2,seg1y1,seg1y2,seg2,seg2y1,seg2y2;outer:for(var i=0;iseg1x2){break;} +if(seg2.x2Math.max(seg1y1,seg1y2)){continue;} +if(Math.max(seg2y1,seg2y2)0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);}else{OpenLayers.Console.error("Unsupported geometry type: "+ -type);} +return features;},parseFeature:function(node){var order=["MultiPolygon","Polygon","MultiLineString","LineString","MultiPoint","Point","Envelope"];var type,nodeList,geometry,parser;for(var i=0;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} break;}} var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} var feature=new OpenLayers.Feature.Vector(geometry,attributes);var childNode=node.firstChild;var fid;while(childNode){if(childNode.nodeType==1){fid=childNode.getAttribute("fid")||childNode.getAttribute("id");if(fid){break;}} childNode=childNode.nextSibling;} -feature.fid=fid;return feature;},parseGeometry:{point:function(node){var nodeList;var coords=[];var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"pos");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} +feature.fid=fid;return feature;},parseGeometry:{point:function(node){var nodeList,coordString;var coords=[];var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"pos");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");}} if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coord");if(nodeList.length>0){var xList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"X");var yList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"Y");if(xList.length>0&&yList.length>0){coords=[xList[0].firstChild.nodeValue,yList[0].firstChild.nodeValue];}}} if(coords.length==2){coords[2]=null;} -return new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);},multipoint:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"Point");var components=[];if(nodeList.length>0){var point;for(var i=0;i0){coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);var dim=parseInt(nodeList[0].getAttribute("dimension"));var j,x,y,z;for(var i=0;i0){var point;for(var i=0;i0){coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);var dim=parseInt(nodeList[0].getAttribute("dimension"));var j,x,y,z;for(var i=0;i0){coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);for(var i=0;i0){var line;for(var i=0;i0){var ring;for(var i=0;i0){var polygon;for(var i=0;i0){var coords=[];if(lpoint.length>0){coordString=lpoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} +if(coords.length==2){coords[2]=null;} +if(this.xy){var lowerPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var lowerPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} +var upoint=this.getElementsByTagNameNS(node,this.gmlns,"upperCorner");if(upoint.length>0){var coords=[];if(upoint.length>0){coordString=upoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);} +if(coords.length==2){coords[2]=null;} +if(this.xy){var upperPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var upperPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}} +if(lowerPoint&&upperPoint){components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));var ring=new OpenLayers.Geometry.LinearRing(components);envelope=new OpenLayers.Geometry.Polygon([ring]);} +return envelope;}},parseAttributes:function(node){var attributes={};var childNode=node.firstChild;var children,i,child,grandchildren,grandchild,name,value;while(childNode){if(childNode.nodeType==1){children=childNode.childNodes;for(i=0;i0||(lat.length>0&&lon.length>0)){if(point.length>0){var location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s+/);if(location.length!=2){var location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s*,\s*/);}}else{var location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];} -var geometry=new OpenLayers.Geometry.Point(parseFloat(location[1]),parseFloat(location[0]));}else if(line.length>0){var coords=OpenLayers.String.trim(line[0].firstChild.nodeValue).split(/\s+/);var components=[];for(var i=0;i0){var coords=OpenLayers.String.trim(polygon[0].firstChild.nodeValue).split(/\s+/);var components=[];for(var i=0;i0||(lat.length>0&&lon.length>0)){var location;if(point.length>0){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s+/);if(location.length!=2){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s*,\s*/);}}else{location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];} +var geometry=new OpenLayers.Geometry.Point(parseFloat(location[1]),parseFloat(location[0]));}else if(line.length>0){var coords=OpenLayers.String.trim(line[0].firstChild.nodeValue).split(/\s+/);var components=[];var point;for(var i=0;i0){var coords=OpenLayers.String.trim(polygon[0].firstChild.nodeValue).split(/\s+/);var components=[];var point;for(var i=0;i0){if(!this.gmlParser){this.gmlParser=new OpenLayers.Format.GML({'xy':this.xy});} +var feature=this.gmlParser.parseFeature(where[0]);geometry=feature.geometry;} +if(geometry&&this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);} return geometry;},createFeatureFromItem:function(item){var geometry=this.createGeometryFromItem(item);var title=this.getChildValue(item,"*","title",this.featureTitle);var description=this.getChildValue(item,"*","description",this.getChildValue(item,"*","content",this.featureDescription));var link=this.getChildValue(item,"*","link");if(!link){try{link=this.getElementsByTagNameNS(item,"*","link")[0].getAttribute("href");}catch(e){link=null;}} var id=this.getChildValue(item,"*","id",null);var data={"title":title,"description":description,"link":link};var feature=new OpenLayers.Feature.Vector(geometry,data);feature.fid=id;return feature;},getChildValue:function(node,nsuri,name,def){var value;try{value=this.getElementsByTagNameNS(node,nsuri,name)[0].firstChild.nodeValue;}catch(e){value=(def==undefined)?"":def;} return value;},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);} @@ -995,41 +1254,111 @@ return OpenLayers.Format.XML.prototype.write.apply(this,[georss]);},createFeatur for(var attr in feature.attributes){if(attr=="link"||attr=="title"||attr=="description"){continue;} var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr;if(attr.search(":")!=-1){nodename=attr.split(":")[1];} var attrContainer=this.createElementNS(this.featureNS,"feature:"+nodename);attrContainer.appendChild(attrText);featureNode.appendChild(attrContainer);} -featureNode.appendChild(geometryNode);return featureNode;},buildGeometryNode:function(geometry){var node;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){node=this.createElementNS(this.georssns,'georss:polygon');node.appendChild(this.buildCoordinatesNode(geometry.components[0]));} +featureNode.appendChild(geometryNode);return featureNode;},buildGeometryNode:function(geometry){if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);} +var node;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){node=this.createElementNS(this.georssns,'georss:polygon');node.appendChild(this.buildCoordinatesNode(geometry.components[0]));} else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){node=this.createElementNS(this.georssns,'georss:line');node.appendChild(this.buildCoordinatesNode(geometry));} else if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){node=this.createElementNS(this.georssns,'georss:point');node.appendChild(this.buildCoordinatesNode(geometry));}else{throw"Couldn't parse "+geometry.CLASS_NAME;} return node;},buildCoordinatesNode:function(geometry){var points=null;if(geometry.components){points=geometry.components;} var path;if(points){var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);}else{OpenLayers.Console.error("Unsupported geometry type: "+ -type);} +return this.createTextNode(path);},CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date(),extractAttributes:true,extractStyles:false,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(options){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)};OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){this.features=[];this.styles={};this.fetched={};var options={depth:this.maxDepth,styleBaseUrl:this.styleBaseUrl};return this.parseData(data,options);},parseData:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +var types=["Link","NetworkLink","Style","StyleMap","Placemark"];for(var i=0;i=this.maxDepth){return false;} +var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0;i0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} break;}} var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} -var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id");if(fid!=null){feature.fid=fid;} -return feature;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} +var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id")||node.getAttribute("name");if(fid!=null){feature.fid=fid;} +return feature;},getStyle:function(styleUrl,options){var styleBaseUrl=OpenLayers.Util.removeTail(styleUrl);var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;newOptions.styleBaseUrl=styleBaseUrl;if(!this.styles[styleUrl]&&!OpenLayers.String.startsWith(styleUrl,"#")&&newOptions.depth<=this.maxDepth&&!this.fetched[styleBaseUrl]){var data=this.fetchLink(styleBaseUrl);if(data){this.parseData(data,newOptions);}} +var style=this.styles[styleUrl];return style;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} var point=null;if(coords.length>1){if(coords.length==2){coords[2]=null;} point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad coordinate string: "+coordString;} -return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i1){if(coords.length==2){coords[2]=null;} +return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=this.concatChildValues(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i1){if(coords.length==2){coords[2]=null;} points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad LineString point coordinates: "+ pointList[i];}} if(numPoints){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}else{throw"Bad LineString coordinates: "+coordString;}} return line;},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"LinearRing");var numRings=nodeList.length;var components=new Array(numRings);if(numRings>0){var ring;for(var i=0;i4){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}},move:function(x,y){for(var i=0;i2)){var sum=0.0;for(var i=0;i=0;i--){var nodes=this.createFeatureNodes(features[i]);for(var j=0;j4){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}},move:function(x,y){for(var i=0;i2)){var sum=0.0;for(var i=0;i=x1&&px<=x2)||x1>=x2&&(px<=x1&&px>=x2)){crosses=-1;break;}} +continue;} +cx=approx(getX(py,x1,y1,x2,y2),digs);if(cx==px){if(y1=y1&&py<=y2)||y1>y2&&(py<=y1&&py>=y2)){crosses=-1;break;}} +if(cx<=px){continue;} +if(x1!=x2&&(cxMath.max(x1,x2))){continue;} +if(y1=y1&&pyy2&&(py=y2)){++crosses;}} +var contained=(crosses==-1)?1:!!(crosses&1);return contained;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){intersect=geometry.intersects(this);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){intersect=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[geometry]);}else{for(var i=0;ibmP+{ z8=fxT^nBIU?+>5;c=qzk<7f96^e*$8T;?~uENp&7)bfg`)n!quD`Hlc#jGv?Npb7T z5;m8BNYduAlsu4mLePHK3b)AGKc z>vvYy?~Ja`8C~BqdcMbXy-w@-o;M0SZs2#)(C>ti{{_>K3ud9`%tFqahh1=qzu=N^ z(KYdcYr!BJ0Fg_9;)jvY-3rJ@d_b z;g|p1FaMce!3+O_m%+ua)0*F9w!O`4eV5h#CadjzZr8iq&UblTZ>lH1shjq;e)_w{ z8SffrzH6KFdg79A^EdrixaIreZQqw{`|CMFrPsOqym&D7&!hjSaZsFY+6^S6WB|jz|Trx{Mnn_1s z(GvD44549L9x7aLo?~ylhNYlD*^7bAh~uKBLckGOm;R=dk17q5h291JB`GLjy9F{oMb+*G{n z$vj&$l*#1B#1xKc48bu6R^EK+G(&`W$q9!^nnL`#vm$DCCS2l?64B-|GYb9`ySxy zvq@9KKm!JYX?ox=L>NpBQreR_GnJ7zLhe)LG9#9_$rV=FZpc?Uj=o+b?5R3fYip}O zAP@?LB9TZe77q*z3=R%TB$A<_q2b}-(b3Vdv9XDX38_>%IXNkl$>egmLZL9#-g-%u zkxKOOgKd1t3spLEqjB3}VK9wBmCbOyh|E_8)u|rdSase^LtTSaiMm~Paf!-Sl($D=)9jf!S?48>DBG<=>%Z&QS9k7?)fL%Q}nPIw&lsQVVjURrdr z;f)E2dbYf`Px?r(pwSlP&EI$Uj87-Zn-bL;7UhKQ9NBX<|4#E=e0IrBwu6ii_518} zN7Bm%te{3 ze6x)STaR8iYBLa+=1mm0lZF8A71A&E>6EPZySs;SA&|JA3#c7$REyASZTp;D5 zF@;Y7Dm-nG5}yK8_@{2vVov3Lp91?q6^w<7h>Fjj^**EormKp-Cr488o2G$2TgNuH84opnmmG=;b2-tm3QZTegN_l@be|54~irN5|b1o2D$vX7MfOSc$& z=H~s!uK&Ef`DsEw8jCL~`%|avuS$IHiSf|(W>+D=C8gs^HbUypT@4>afQ5Jf4W{Sd zPChX4H}5dz#6m3g@w>aBG9oG;=Z{y(e4PSo_mq0-D03@i&lr!YVB&rT03nEDCW&>19BB)2lSz76wZo-6X zruu?#zn5zt&u{*T3f(aSD^GlD!d(NFoyGJ$5cK6aA2)CJlHR!5mEvWBLCG?a$wK3} zi~HW(FV5{9y>QS=z_O(~bNH6y$?_fakUX`3_5L&_;u5!i;CU@8{xK1{Fj<|)e*=~Q zKykPOxtil&h2LyTx8?v@=tFW|*=sG&BM8|w&5kShR{(Wq>ABAS3Gxr(mZ@mxpa&xs zgQ9S4Ml&mD)x`5S8`_eni8d3uy&V+S!XhZVy0s8Jfx^)94P_wOCt`#ll9}<>wkM47 zW47x{YBH$Zt2P{39TO4sFsL}-dMZ#ok+GP795(JiAA1)*vgp77SKUn>wz=R|Q7s6x%3x#x*o%$PS~E#Kvah7uL@tc9DrG$p%eE zrT3dVZqBjVz=<+a2e>~^Dkq` zikHW(0V50o)F%g%O+h``UNez5=Ht=Vf>|Q?N^(R-SjH{|PUR%Actv z;gRI*%RLFKT}zX~wU}Rx3|G?07xz7IfppQggrO^*87%{ACv)7Og3_&{v={7zEqy~p zz0rO#sYMk7Xin1RcqGl8!BueQo=U*%->_?2?r{M5iqdEco{U1ar_kn=S9i^G1mpjv%bjRhf9f#lv>ZWb}R;=a405aV_Ik430$v(00Af zgN;E+g$VA^u$Ft(O%<7LM!BI@ZTjJqdn^6PwB$!68F)Lrdd(W#KvVCKCuk3nmNm?r31M7pSbPYcG2Yb^G4*&oF literal 0 HcmV?d00001 diff --git a/public/openlayers/theme/default/framedCloud.css b/public/openlayers/theme/default/framedCloud.css new file mode 100644 index 000000000..a67f36775 --- /dev/null +++ b/public/openlayers/theme/default/framedCloud.css @@ -0,0 +1,5 @@ + +.olFramedCloudPopupContent { + padding: 5px; + overflow: auto; +} \ No newline at end of file diff --git a/public/openlayers/theme/default/style.css b/public/openlayers/theme/default/style.css index 958535b09..8eab0e35b 100644 --- a/public/openlayers/theme/default/style.css +++ b/public/openlayers/theme/default/style.css @@ -1,4 +1,4 @@ -div.olMapViewport { +div.olLayerDiv { -moz-user-select: none } @@ -22,12 +22,31 @@ div.olMapViewport { bottom: 3em; display: block; position: absolute; + font-size: smaller; } +.olControlScaleLine { + left: 10px; + bottom: 15px; + font-size: xx-small; +} +.olControlScaleLineBottom { + border: solid 2px black; + border-bottom: none; + margin-top:-2px; + text-align: center; +} +.olControlScaleLineTop { + border: solid 2px black; + border-top: none; + text-align: center; +} + .olControlPermalink { right: 3px; bottom: 1.5em; display: block; position: absolute; + font-size: smaller; } div.olControlMousePosition { @@ -62,9 +81,19 @@ div.olControlMousePosition { } .olControlOverviewMapExtentRectangle { - cursor: move; + overflow: hidden; + background-image: url("img/blank.gif"); + cursor: move; border: 2px dotted red; } +.olControlOverviewMapRectReplacement { + overflow: hidden; + cursor: move; + background-image: url("img/overview_replacement.gif"); + background-repeat: no-repeat; + background-position: center; +} + .olLayerGeoRSSDescription { float:left; width:100%; @@ -75,7 +104,7 @@ div.olControlMousePosition { float:right; color:gray; font-size:1.2em; - margin-right:6px; + margin-right:6px; font-family:sans-serif; } .olLayerGeoRSSTitle { @@ -84,6 +113,7 @@ div.olControlMousePosition { .olPopupContent { padding:5px; + overflow: auto; } .olControlNavToolbar { width:0px; @@ -98,6 +128,31 @@ div.olControlMousePosition { position: relative; } +.olControlNavigationHistoryPreviousItemActive { + background-image: url("img/view_previous_on.png"); + background-repeat: no-repeat; + width: 24px; + height: 24px; +} +.olControlNavigationHistoryPreviousItemInactive { + background-image: url("img/view_previous_off.png"); + background-repeat: no-repeat; + width: 24px; + height: 24px; +} +.olControlNavigationHistoryNextItemActive { + background-image: url("img/view_next_on.png"); + background-repeat: no-repeat; + width: 24px; + height: 24px; +} +.olControlNavigationHistoryNextItemInactive { + background-image: url("img/view_next_off.png"); + background-repeat: no-repeat; + width: 24px; + height: 24px; +} + .olControlNavToolbar .olControlNavigationItemActive { background-image: url("img/panning-hand-on.png"); background-repeat: no-repeat; @@ -128,34 +183,64 @@ div.olControlMousePosition { margin: 5px; } .olControlEditingToolbar .olControlNavigationItemActive { - background-image: url("img/pan_on.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -103px -23px; } .olControlEditingToolbar .olControlNavigationItemInactive { - background-image: url("img/pan_off.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -103px -0px; } .olControlEditingToolbar .olControlDrawFeaturePointItemActive { - background-image: url("img/draw_point_on.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -77px -23px; } .olControlEditingToolbar .olControlDrawFeaturePointItemInactive { - background-image: url("img/draw_point_off.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -77px -0px; } .olControlEditingToolbar .olControlDrawFeaturePathItemInactive { - background-image: url("img/draw_line_off.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -51px 0px; } .olControlEditingToolbar .olControlDrawFeaturePathItemActive { - background-image: url("img/draw_line_on.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -51px -23px; } .olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive { - background-image: url("img/draw_polygon_off.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -26px 0px; } .olControlEditingToolbar .olControlDrawFeaturePolygonItemActive { - background-image: url("img/draw_polygon_on.png"); + background-image: url("img/editing_tool_bar.png"); background-repeat: no-repeat; + background-position: -26px -23px ; +} + +.olHandlerBoxZoomBox { + border: 2px solid red; + position: absolute; + background-color: white; + opacity: 0.50; + font-size: 1px; + filter: alpha(opacity=50); +} + +/* + * Due to current limitations in the OpenLayers code, you can only + * replace this image with another image which is 17px x 17px. + */ +.olPopupCloseBox { + background: url("img/close.gif") no-repeat; + cursor: pointer; +} + +.olControlNoSelect { + -moz-user-select: none; } From 2b35dadd5f5039d44810c722d3e0dbc5557862c1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 16 Apr 2008 08:04:44 +0000 Subject: [PATCH 17/93] Add a scale control to the map. Closes #51. --- public/javascripts/map.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 23763714c..4a23d8590 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -5,19 +5,21 @@ var popup; OpenLayers._getScriptLocation = function () { return "/openlayers/"; } - + function createMap(divName) { map = new OpenLayers.Map(divName, { controls: [ - new OpenLayers.Control.ArgParser(), + new OpenLayers.Control.ArgParser(), new OpenLayers.Control.Attribution(), new OpenLayers.Control.LayerSwitcher(), - new OpenLayers.Control.Navigation(), - new OpenLayers.Control.PanZoomBar() - ] + new OpenLayers.Control.Navigation(), + new OpenLayers.Control.PanZoomBar(), + new OpenLayers.Control.ScaleLine() + ], + units: "m" }); - var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { + var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { displayOutsideMaxExtent: true, wrapDateLine: true }); @@ -29,14 +31,14 @@ function createMap(divName) { }); map.addLayer(osmarender); - var maplint = new OpenLayers.Layer.OSM.Maplint("Maplint", { + var maplint = new OpenLayers.Layer.OSM.Maplint("Maplint", { displayOutsideMaxExtent: true, wrapDateLine: true }); map.addLayer(maplint); var numZoomLevels = Math.max(mapnik.numZoomLevels, osmarender.numZoomLevels); - markers = new OpenLayers.Layer.Markers("Markers", { + markers = new OpenLayers.Layer.Markers("Markers", { displayInLayerSwitcher: false, numZoomLevels: numZoomLevels, maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508), From 25885677e277cc5def58fdd31e83fb474a9565a3 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 16 Apr 2008 08:49:55 +0000 Subject: [PATCH 18/93] Use OL 2.6 auto sizing for popups instead of doing it ourselves. --- public/javascripts/map.js | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 4a23d8590..9a834593d 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -74,11 +74,10 @@ function addMarkerToMap(position, icon, description) { function openMapPopup(marker, description) { closeMapPopup(); - popup = new OpenLayers.Popup.AnchoredBubble("popup", marker.lonlat, - sizeMapPopup(description), - "

    " + description + "

    ", - marker.icon, true); + popup = new OpenLayers.Popup.AnchoredBubble("popup", marker.lonlat, null, + description, marker.icon, true); popup.setBackgroundColor("#E3FFC5"); + popup.autoSize = true; map.addPopup(popup); return popup; @@ -91,27 +90,6 @@ function closeMapPopup() { } } -function sizeMapPopup(text) { - var box = document.createElement("div"); - - box.innerHTML = text; - box.style.visibility = "hidden"; - box.style.position = "absolute"; - box.style.top = "0px"; - box.style.left = "0px"; - box.style.width = "200px"; - box.style.height = "auto"; - - document.body.appendChild(box); - - var width = box.offsetWidth; - var height = box.offsetHeight; - - document.body.removeChild(box); - - return new OpenLayers.Size(width + 30, height + 24); -} - function removeMarkerFromMap(marker){ markers.removeMarker(marker); } From 430fa39118ca5980f4671df795482e31d84aa6f1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 16 Apr 2008 17:17:39 +0000 Subject: [PATCH 19/93] Add missing OpenLayers 2.6 images. --- public/openlayers/theme/default/img/blank.gif | Bin 0 -> 42 bytes public/openlayers/theme/default/img/close.gif | Bin 0 -> 1078 bytes .../theme/default/img/editing_tool_bar.png | Bin 0 -> 3901 bytes .../theme/default/img/overview_replacement.gif | Bin 0 -> 79 bytes .../theme/default/img/view_next_off.png | Bin 0 -> 1644 bytes .../theme/default/img/view_next_on.png | Bin 0 -> 1686 bytes .../theme/default/img/view_previous_off.png | Bin 0 -> 1553 bytes .../theme/default/img/view_previous_on.png | Bin 0 -> 1592 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/openlayers/theme/default/img/blank.gif create mode 100644 public/openlayers/theme/default/img/close.gif create mode 100644 public/openlayers/theme/default/img/editing_tool_bar.png create mode 100644 public/openlayers/theme/default/img/overview_replacement.gif create mode 100644 public/openlayers/theme/default/img/view_next_off.png create mode 100644 public/openlayers/theme/default/img/view_next_on.png create mode 100644 public/openlayers/theme/default/img/view_previous_off.png create mode 100644 public/openlayers/theme/default/img/view_previous_on.png diff --git a/public/openlayers/theme/default/img/blank.gif b/public/openlayers/theme/default/img/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bcc753a12e9854923af4b9b5b9a4b76f1bc53a6 GIT binary patch literal 42 ocmZ?wbhEHbWMp7uXkY+=|Ns9h{$ybUF?B!$NXCJQ(S^Yp0J?7nHvj+t literal 0 HcmV?d00001 diff --git a/public/openlayers/theme/default/img/close.gif b/public/openlayers/theme/default/img/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8958de9b429ae00f56bb282c4b133ecbaf334bd GIT binary patch literal 1078 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 literal 0 HcmV?d00001 diff --git a/public/openlayers/theme/default/img/view_previous_off.png b/public/openlayers/theme/default/img/view_previous_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c230f749e1887d70d1928398b5d03e0105a3d8 GIT binary patch literal 1553 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 Date: Wed, 16 Apr 2008 17:18:45 +0000 Subject: [PATCH 20/93] Get rid of our reprojection code and use OpenLayers reprojection instead. --- app/views/diary_entry/new.rhtml | 7 +++--- app/views/site/index.rhtml | 18 +++++++--------- app/views/user/_friend_map.rhtml | 11 +++++----- public/javascripts/map.js | 37 ++++++++++++++++---------------- 4 files changed, 34 insertions(+), 39 deletions(-) diff --git a/app/views/diary_entry/new.rhtml b/app/views/diary_entry/new.rhtml index 9f86c2ab4..b46bb4d9f 100644 --- a/app/views/diary_entry/new.rhtml +++ b/app/views/diary_entry/new.rhtml @@ -41,12 +41,12 @@ var marker; function init(){ - var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>)); + var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); var zoom = <%= zoom %>; var map = createMap("map"); - map.setCenter(centre, zoom); + setMapCenter(centre, zoom); map.events.register("click", map, setLocation); } @@ -54,8 +54,7 @@ function setLocation( e ) { closeMapPopup(); - var merc = map.getLonLatFromViewPortPx(e.xy); - var lonlat = mercatorToLonLat(merc); + var lonlat = getEventPosition(e); document.getElementById('latitude').value = lonlat.lat; document.getElementById('longitude').value = lonlat.lon; diff --git a/app/views/site/index.rhtml b/app/views/site/index.rhtml index edd755ddb..35ce1e2fd 100644 --- a/app/views/site/index.rhtml +++ b/app/views/site/index.rhtml @@ -87,20 +87,18 @@ by the OpenStreetMap project and it's contributors. map = createMap("map"); <% if bbox %> - var min = lonLatToMercator(new OpenLayers.LonLat(<%= minlon %>, <%= minlat %>)); - var max = lonLatToMercator(new OpenLayers.LonLat(<%= maxlon %>, <%= maxlat %>)); - var bbox = new OpenLayers.Bounds(min.lon, min.lat, max.lon, max.lat); + var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>); - map.zoomToExtent(bbox); + setMapExtent(bbox); <% else %> - var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>)); + var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); var zoom = <%= zoom %>; <% if params['scale'] and params['scale'].length > 0 then %> zoom = scaleToZoom(<%= params['scale'].to_f() %>); <% end %> - map.setCenter(centre, zoom); + setMapCenter(centre, zoom); <% end %> <% if layers %> @@ -108,7 +106,7 @@ by the OpenStreetMap project and it's contributors. <% end %> <% if marker %> - marker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>))); + marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)); <% end %> map.events.register("zoomend", map, updateKey); @@ -121,11 +119,11 @@ by the OpenStreetMap project and it's contributors. } function getPosition() { - return mercatorToLonLat(map.getCenter()); + return getMapCenter(); } function setPosition(lat, lon, zoom) { - var centre = lonLatToMercator(new OpenLayers.LonLat(lon, lat)); + var centre = new OpenLayers.LonLat(lon, lat); map.setCenter(centre, zoom); @@ -136,7 +134,7 @@ by the OpenStreetMap project and it's contributors. } function updateLocation() { - var lonlat = mercatorToLonLat(map.getCenter()); + var lonlat = getMapCenter(); var zoom = map.getZoom(); var layers = getMapLayers(); diff --git a/app/views/user/_friend_map.rhtml b/app/views/user/_friend_map.rhtml index 05589ac09..fd86ab10c 100644 --- a/app/views/user/_friend_map.rhtml +++ b/app/views/user/_friend_map.rhtml @@ -33,7 +33,7 @@ var marker; function init(){ - var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>)); + var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); var zoom = <%= zoom %>; <% if params['scale'] and params['scale'].length > 0 then %> @@ -42,10 +42,10 @@ var map = createMap("map"); - map.setCenter(centre, zoom); + setMapCenter(centre, zoom); <% if marker %> - marker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)), null, "Your location"); + marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>), null, "Your location"); <% end %> var near_icon = OpenLayers.Marker.defaultIcon(); @@ -53,7 +53,7 @@ var i = nearest.length; while( i-- ) { var description = 'Nearby mapper:
    '+nearest[i].display_name+'' - var nearmarker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(nearest[i].home_lon, nearest[i].home_lat)), near_icon.clone(), description); + var nearmarker = addMarkerToMap(new OpenLayers.LonLat(nearest[i].home_lon, nearest[i].home_lat), near_icon.clone(), description); } map.events.register("click", map, setHome); @@ -63,8 +63,7 @@ closeMapPopup(); if (document.getElementById('updatehome').checked) { - var merc = map.getLonLatFromViewPortPx(e.xy); - var lonlat = mercatorToLonLat(merc); + var lonlat = getEventPosition(e); document.getElementById('homerow').className = ''; document.getElementById('home_lat').value = lonlat.lat; diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 9a834593d..d8765fe1a 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -1,3 +1,4 @@ +var epsg4326 = new OpenLayers.Projection("EPSG:4326"); var map; var markers; var popup; @@ -60,7 +61,7 @@ function getArrowIcon() { } function addMarkerToMap(position, icon, description) { - var marker = new OpenLayers.Marker(position, icon); + var marker = new OpenLayers.Marker(position.clone().transform(epsg4326, map.getProjectionObject()), icon); markers.addMarker(marker); @@ -94,6 +95,22 @@ function removeMarkerFromMap(marker){ markers.removeMarker(marker); } +function getMapCenter(center, zoom) { + return map.getCenter().clone().transform(map.getProjectionObject(), epsg4326); +} + +function setMapCenter(center, zoom) { + map.setCenter(center.clone().transform(epsg4326, map.getProjectionObject()), zoom); +} + +function setMapExtent(extent) { + map.zoomToExtent(extent.clone().transform(epsg4326, map.getProjectionObject())); +} + +function getEventPosition(event) { + return map.getLonLatFromViewPortPx(e.xy).clone().transform(epsg4326, map.getProjectionObject()); +} + function getMapLayers() { var layers = ""; @@ -123,24 +140,6 @@ function setMapLayers(layers) { } } -function mercatorToLonLat(merc) { - var lon = (merc.lon / 20037508.34) * 180; - var lat = (merc.lat / 20037508.34) * 180; - - lat = 180/Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2); - - return new OpenLayers.LonLat(lon, lat); -} - -function lonLatToMercator(ll) { - var lon = ll.lon * 20037508.34 / 180; - var lat = Math.log(Math.tan((90 + ll.lat) * Math.PI / 360)) / (Math.PI / 180); - - lat = lat * 20037508.34 / 180; - - return new OpenLayers.LonLat(lon, lat); -} - function scaleToZoom(scale) { return Math.log(360.0/(scale * 512.0)) / Math.log(2.0); } From f4fa8ed40e608105bac8fa06da3695c688327b51 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 16 Apr 2008 17:59:05 +0000 Subject: [PATCH 21/93] Fix setPosition(). --- app/views/site/index.rhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/site/index.rhtml b/app/views/site/index.rhtml index 35ce1e2fd..46bc3bdd7 100644 --- a/app/views/site/index.rhtml +++ b/app/views/site/index.rhtml @@ -125,7 +125,7 @@ by the OpenStreetMap project and it's contributors. function setPosition(lat, lon, zoom) { var centre = new OpenLayers.LonLat(lon, lat); - map.setCenter(centre, zoom); + setMapCenter(centre, zoom); if (marker) removeMarkerFromMap(marker); From 599c48227a94339f7e58bddc3fb0d0215baa58c4 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 16 Apr 2008 23:45:16 +0000 Subject: [PATCH 22/93] Ajaxify the export tab. --- app/controllers/export_controller.rb | 1 - app/views/export/_start.rhtml | 18 ++- app/views/layouts/site.rhtml | 8 +- app/views/site/_key.rhtml | 2 +- app/views/site/_sidebar.rhtml | 18 ++- app/views/site/export.rhtml | 162 --------------------------- public/javascripts/map.js | 13 ++- public/javascripts/site.js | 12 ++ 8 files changed, 58 insertions(+), 176 deletions(-) delete mode 100644 app/views/site/export.rhtml diff --git a/app/controllers/export_controller.rb b/app/controllers/export_controller.rb index a5766e99c..b1d992e6d 100644 --- a/app/controllers/export_controller.rb +++ b/app/controllers/export_controller.rb @@ -3,7 +3,6 @@ class ExportController < ApplicationController render :update do |page| page.replace_html :sidebar_title, 'Export' page.replace_html :sidebar_content, :partial => 'start' - page.call "openSidebar" end end diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 749928c12..11fc61809 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -60,10 +60,11 @@ diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 07c6b32d1..9858d4576 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -124,12 +124,15 @@ function getMapLayers() { function setMapLayers(layers) { for (var i=0; i < layers.length; i++) { var layer = map.layers[i]; - var c = layers.charAt(i); - if (c == "B") { - map.setBaseLayer(layer); - } else if ( (c == "T") || (c == "F") ) { - layer.setVisibility(c == "T"); + if (layer) { + var c = layers.charAt(i); + + if (c == "B") { + map.setBaseLayer(layer); + } else if ( (c == "T") || (c == "F") ) { + layer.setVisibility(c == "T"); + } } } } diff --git a/public/javascripts/site.js b/public/javascripts/site.js index 6fb68e65a..a7651fa45 100644 --- a/public/javascripts/site.js +++ b/public/javascripts/site.js @@ -29,6 +29,18 @@ function updatelinks(lon,lat,zoom,layers) { node.href = setArgs(node.href, args); } + node = document.getElementById("exportanchor"); + if (node) { + var args = getArgs(node.href); + args["lat"] = lat; + args["lon"] = lon; + args["zoom"] = zoom; + if (layers) { + args["layers"] = layers; + } + node.href = setArgs(node.href, args); + } + node = document.getElementById("editanchor"); if (node) { if (zoom >= 11) { From 52a6df0548124a0dbb7fe8b5afa3ef5271327cf1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 17 Apr 2008 17:38:48 +0000 Subject: [PATCH 23/93] Simplify URLs a bit. --- config/routes.rb | 11 +++++++++-- public/javascripts/site.js | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 519142411..0a0396251 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -57,11 +57,18 @@ ActionController::Routing::Routes.draw do |map| # web site map.connect '/', :controller => 'site', :action => 'index' + map.connect '/edit', :controller => 'site', :action => 'edit' + map.connect '/export', :controller => 'site', :action => 'export' + map.connect '/login', :controller => 'user', :action => 'login' + map.connect '/logout', :controller => 'user', :action => 'logout' + map.connect '/user/new', :controller => 'user', :action => 'new' map.connect '/user/save', :controller => 'user', :action => 'save' map.connect '/user/confirm', :controller => 'user', :action => 'confirm' map.connect '/user/go_public', :controller => 'user', :action => 'go_public' - map.connect '/user/reset_password', :controller => 'user', :action => 'reset_password' - map.connect '/user/upload_image', :controller => 'user', :action => 'upload_image' + map.connect '/user/reset-password', :controller => 'user', :action => 'reset_password' + map.connect '/user/upload-image', :controller => 'user', :action => 'upload_image' + map.connect '/user/forgot-password', :controller => 'user', :action => 'lost_password' + map.connect '/index.html', :controller => 'site', :action => 'index' map.connect '/edit.html', :controller => 'site', :action => 'edit' map.connect '/export.html', :controller => 'site', :action => 'export' diff --git a/public/javascripts/site.js b/public/javascripts/site.js index a7651fa45..95c0b938e 100644 --- a/public/javascripts/site.js +++ b/public/javascripts/site.js @@ -48,7 +48,7 @@ function updatelinks(lon,lat,zoom,layers) { args.lat = lat; args.lon = lon; args.zoom = zoom; - node.href = setArgs("/edit.html", args); + node.href = setArgs("/edit", args); node.style.fontStyle = 'normal'; } else { node.href = 'javascript:alert("zoom in to edit map");'; From 45a77397f3f6b97d671999c45abe4ad818955d65 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 17 Apr 2008 17:47:15 +0000 Subject: [PATCH 24/93] Make the /export URL work. --- app/controllers/site_controller.rb | 5 ++++- app/views/site/index.rhtml | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 767220c79..172d5da9c 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -2,6 +2,10 @@ class SiteController < ApplicationController before_filter :authorize_web before_filter :require_user, :only => [:edit] + def export + render :action => 'index' + end + def goto_way way = Way.find(params[:id]) @@ -12,5 +16,4 @@ class SiteController < ApplicationController redirect_to :back end end - end diff --git a/app/views/site/index.rhtml b/app/views/site/index.rhtml index 46bc3bdd7..94b24debf 100644 --- a/app/views/site/index.rhtml +++ b/app/views/site/index.rhtml @@ -180,5 +180,9 @@ by the OpenStreetMap project and it's contributors. window.onload = handleResize; window.onresize = handleResize; + + <% if params['action'] == 'export' %> + <%= remote_function :url => { :controller => 'export', :action => 'start' } %> + <% end %> // --> From b4791598eab87d948ec0a92d170b09fe50aa55ea Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 17 Apr 2008 17:47:35 +0000 Subject: [PATCH 25/93] Remove unused method. --- app/controllers/site_controller.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 172d5da9c..4b22e46fd 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -5,15 +5,4 @@ class SiteController < ApplicationController def export render :action => 'index' end - - def goto_way - way = Way.find(params[:id]) - - begin - node = way.way_nodes.first.node - redirect_to :controller => 'site', :action => 'index', :lat => node.latitude, :lon => node.longitude, :zoom => 6 - rescue - redirect_to :back - end - end end From 083cb994d7abcbc9f3902dca8f158992b5ed33b1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 17 Apr 2008 23:05:57 +0000 Subject: [PATCH 26/93] Fill in license details. --- app/views/export/_start.rhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 11fc61809..481b41c3d 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -30,7 +30,7 @@

    Licence

    -

    OSM license agreement blah blah blah...

    +

    OpenStreetMap data is licensed under the Creative Commons Attribution-ShareAlike 2.0 license.

    From b7d8360a27fb80e91fdc8ecaa34523193723d130 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 17 Apr 2008 23:10:35 +0000 Subject: [PATCH 27/93] Default export format based on selected base layer. --- app/views/export/_start.rhtml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 481b41c3d..66f79f6e6 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -85,12 +85,20 @@ map.events.register("moveend", map, mapMoved); - $("viewanchor").className = ""; - $("exportanchor").className = "active"; - openSidebar({ onclose: stopExport }); updateRegion(map.getExtent()); + + if (map.baseLayer.name == "Mapnik") { + $("format_mapnik").checked = true; + } else if (map.baseLayer.name == "Osmarender") { + $("format_osmarender").checked = true; + } + + formatChanged(); + + $("viewanchor").className = ""; + $("exportanchor").className = "active"; } function stopExport() { From 016e43e596029695c309f51c0d7eb08eefd69ab3 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 17 Apr 2008 23:30:30 +0000 Subject: [PATCH 28/93] Move user diaries link to the tab bar as it changes what is displayed in the main frame, and everything else which does that is on the tab bar. --- app/views/layouts/site.rhtml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/layouts/site.rhtml b/app/views/layouts/site.rhtml index c5ecfbd7c..073b76388 100644 --- a/app/views/layouts/site.rhtml +++ b/app/views/layouts/site.rhtml @@ -42,11 +42,13 @@ editclass = 'active' if params['controller'] == 'site' and params['action'] == 'edit' exportclass = 'active' if params['controller'] == 'site' and params['action'] == 'export' traceclass = 'active' if params['controller'] == 'trace' + diaryclass = 'active' if params['controller'] == 'diary_entry' %>
  • <%= link_to 'View', {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => 'view maps', :class => viewclass} %>
  • <%= link_to 'Edit', {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => 'edit maps', :class => editclass} %>
  • <%= link_to_remote 'Export', {:url => {:controller => 'export', :action => 'start'}}, {:id => 'exportanchor', :title => 'export map data', :class => exportclass, :href => url_for(:controller => 'site', :action => 'export')} %>
  • -
  • <%= link_to 'GPS traces', {:controller => 'trace', :action => 'list'}, {:id => 'traceanchor', :title => 'manage traces', :class => traceclass} %>
  • +
  • <%= link_to 'GPS Traces', {:controller => 'trace', :action => 'list'}, {:id => 'traceanchor', :title => 'manage traces', :class => traceclass} %>
  • +
  • <%= link_to 'User Diaries', {:controller => 'diary_entry', :action => 'list'}, {:id => 'diaryanchor', :title => 'view user diaries', :class => diaryclass} %>
  • @@ -84,7 +86,6 @@
    Help & Wiki
    - <%= link_to "Users' diaries", {:controller => 'diary_entry', :action => 'list', :display_name => nil} %>
    News blog
    Shop
    <%= yield :left_menu %> From 836f46f9f7cbe3bcddd7a0194985bbf800ea16dd Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 18 Apr 2008 17:32:47 +0000 Subject: [PATCH 29/93] Fix broken close tag that was breaking Opera. --- app/views/export/_start.rhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 66f79f6e6..7359c39be 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -31,7 +31,7 @@

    OpenStreetMap data is licensed under the Creative Commons Attribution-ShareAlike 2.0 license.

    -
    From 2f925b919718961b682e84dcca4fd53fed13b2c1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 18 Apr 2008 17:33:09 +0000 Subject: [PATCH 30/93] Remove spurious comma that was breaking Safari. --- app/views/export/_start.rhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 7359c39be..3e6beaf55 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -65,7 +65,7 @@ function startExport() { vectors = new OpenLayers.Layer.Vector("Vector Layer", { - displayInLayerSwitcher: false, + displayInLayerSwitcher: false }); map.addLayer(vectors); From 8815700a773665fe861c1bdc5543948de1148829 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 18 Apr 2008 22:12:50 +0000 Subject: [PATCH 31/93] Rework AJAX stuff to work on IE. --- app/controllers/export_controller.rb | 4 - app/views/export/_start.rhtml | 192 --------------------------- app/views/export/start.rjs | 191 ++++++++++++++++++++++++++ 3 files changed, 191 insertions(+), 196 deletions(-) create mode 100644 app/views/export/start.rjs diff --git a/app/controllers/export_controller.rb b/app/controllers/export_controller.rb index b1d992e6d..a773d4b72 100644 --- a/app/controllers/export_controller.rb +++ b/app/controllers/export_controller.rb @@ -1,9 +1,5 @@ class ExportController < ApplicationController def start - render :update do |page| - page.replace_html :sidebar_title, 'Export' - page.replace_html :sidebar_content, :partial => 'start' - end end def finish diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 3e6beaf55..501274b46 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -57,195 +57,3 @@
    <% end %> - - diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs new file mode 100644 index 000000000..4323cf7f4 --- /dev/null +++ b/app/views/export/start.rjs @@ -0,0 +1,191 @@ +page.replace_html :sidebar_title, 'Export' +page.replace_html :sidebar_content, :partial => 'start' +page << < 0.25) { + $("format_osm").disabled = true; + $("format_osm").checked = false; + + formatChanged(); + } else { + $("format_osm").disabled = false; + } + + var max_zoom = maxOsmarenderZoom(); + var max_scale = maxMapnikScale(); + + $("max_scale").innerHTML = roundScale(max_scale); + + for (var o = 0; o < $("osmarender_zoom").options.length; o++) { + var option = $("osmarender_zoom").options[o]; + + if (option.value > max_zoom) { + option.disabled = true; + } else { + option.disabled = false; + } + } + + if ($("osmarender_zoom").options.selectedIndex + 4 > max_zoom) { + $("osmarender_zoom").options.selectedIndex = max_zoom - 4; + } + } + + function maxMapnikScale() { + var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value); + var epsg4326 = new OpenLayers.Projection("EPSG:4326"); + var epsg900913 = new OpenLayers.Projection("EPSG:900913"); + + bounds.transform(epsg4326, epsg900913); + + return Math.floor(Math.sqrt(bounds.getWidth() * bounds.getHeight() / 0.3136)); + } + + function maxOsmarenderZoom() { + var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value); + var xzoom = Math.LOG2E * Math.log(2000 * 1.40625 / bounds.getWidth()); + var ymin = bounds.bottom * Math.PI / 180; + var ymax = bounds.top * Math.PI / 180; + var yzoom = Math.LOG2E * (Math.log(2000 * 2 * Math.PI) - Math.log(Math.log((Math.tan(ymax) + 1 / Math.cos(ymax)) / (Math.tan(ymin) + 1 / Math.cos(ymin))))) + + return Math.floor(Math.min(xzoom, yzoom)); + } + + function roundScale(scale) { + var precision = 5 * Math.pow(10, Math.floor(Math.LOG10E * Math.log(scale)) - 2); + + return precision * Math.ceil(scale / precision); + } + + function validateScale() { + if ($("mapnik_scale").value < maxMapnikScale()) { + $("export_commit").disabled = true; + } else { + $("export_commit").disabled = false; + } + } + + $("mapnik_scale").onchange = validateScale; + + startExport(); +EOJ From cb75e0bdd0630f261d3caaa1ae3442ef3259a271 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 18 Apr 2008 22:56:52 +0000 Subject: [PATCH 32/93] Add export helper. --- app/helpers/export_helper.rb | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/helpers/export_helper.rb diff --git a/app/helpers/export_helper.rb b/app/helpers/export_helper.rb new file mode 100644 index 000000000..34acf5f1a --- /dev/null +++ b/app/helpers/export_helper.rb @@ -0,0 +1,2 @@ +module ExportHelper +end From 075b760c91ffdeb436f5bcea78420df69fc70759 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 10:14:52 +0000 Subject: [PATCH 33/93] Only add a border to text input fields. --- public/stylesheets/site.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/site.css b/public/stylesheets/site.css index dee3e8504..c7f1b0085 100644 --- a/public/stylesheets/site.css +++ b/public/stylesheets/site.css @@ -525,7 +525,7 @@ hides rule from IE5-Mac \*/ list-style: square; } -input { +input[type="text"] { border: 1px solid black; } From 7fa1041340e3f1ad1074bfd8376b39535b862a69 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 10:40:37 +0000 Subject: [PATCH 34/93] Display the size of the image mapnik will produce. --- app/views/export/_start.rhtml | 3 ++- app/views/export/start.rjs | 32 +++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 501274b46..969b8efc7 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -39,7 +39,8 @@

    Format <%= select_tag("mapnik_format", options_for_select([["PNG", "png"], ["JPEG", "jpeg"], ["SVG", "svg"], ["PDF", "pdf"], ["Postscript", "ps"]], "png")) %>

    -

    Scale 1 : <%= text_field_tag("mapnik_scale", nil, :size => 8) %> (max 1 : )

    +

    Scale 1 : <%= text_field_tag("mapnik_scale", nil, :size => 8) %> (max 1 : )

    +

    Image Size x

    diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 4323cf7f4..5e4a2b91c 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -61,6 +61,8 @@ page << < Date: Sat, 19 Apr 2008 10:45:28 +0000 Subject: [PATCH 35/93] Validate the mapnik scale on a zoom change. --- app/views/export/start.rjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 5e4a2b91c..1a157afca 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -140,7 +140,7 @@ page << < Date: Sat, 19 Apr 2008 10:48:48 +0000 Subject: [PATCH 36/93] Don't call formatChanged() when disabling XML output as it has side effects. --- app/views/export/start.rjs | 3 +-- config/database.yml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 1a157afca..2796d92fe 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -129,8 +129,7 @@ page << < 0.25) { $("format_osm").disabled = true; $("format_osm").checked = false; - - formatChanged(); + $("export_osm").style.display = "none"; } else { $("format_osm").disabled = false; } diff --git a/config/database.yml b/config/database.yml index b884f3b93..5d7a0313e 100644 --- a/config/database.yml +++ b/config/database.yml @@ -32,5 +32,5 @@ production: database: openstreetmap username: openstreetmap password: openstreetmap - host: db.openstreetmap.org + host: localhost From d4010ff589d6e9b8da11efe7bb5e176e401b939b Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 10:49:54 +0000 Subject: [PATCH 37/93] Revert accidental commit. --- config/database.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/database.yml b/config/database.yml index 5d7a0313e..b884f3b93 100644 --- a/config/database.yml +++ b/config/database.yml @@ -32,5 +32,5 @@ production: database: openstreetmap username: openstreetmap password: openstreetmap - host: localhost + host: db.openstreetmap.org From ddb003f0f2217f421180b0ca78f149c3f4e6b28a Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 13:29:10 +0000 Subject: [PATCH 38/93] Headers is an array not a function... --- app/controllers/api_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 3ef5e753a..223edc6aa 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -79,7 +79,7 @@ class ApiController < ApplicationController exit! end - response.headers("Content-Disposition") = "attachment; filename=\"map.osm\"" + response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\"" render :text => doc.to_s, :content_type => "text/xml" end From b331823b5d897087f573917e04b9c3d7a3319a19 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 13:29:24 +0000 Subject: [PATCH 39/93] Make export tab work from non-view pages. --- app/views/layouts/site.rhtml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/views/layouts/site.rhtml b/app/views/layouts/site.rhtml index 073b76388..db7fce0a6 100644 --- a/app/views/layouts/site.rhtml +++ b/app/views/layouts/site.rhtml @@ -46,7 +46,11 @@ %>
  • <%= link_to 'View', {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => 'view maps', :class => viewclass} %>
  • <%= link_to 'Edit', {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => 'edit maps', :class => editclass} %>
  • + <% if params['controller'] == 'site' and (params['action'] == 'index' or params['action'] == 'export') %>
  • <%= link_to_remote 'Export', {:url => {:controller => 'export', :action => 'start'}}, {:id => 'exportanchor', :title => 'export map data', :class => exportclass, :href => url_for(:controller => 'site', :action => 'export')} %>
  • + <% else %> +
  • <%= link_to 'Export', {:controller => 'site', :action => 'export'}, {:id => 'exportanchor', :title => 'export map data', :class => exportclass} %>
  • + <% end %>
  • <%= link_to 'GPS Traces', {:controller => 'trace', :action => 'list'}, {:id => 'traceanchor', :title => 'manage traces', :class => traceclass} %>
  • <%= link_to 'User Diaries', {:controller => 'diary_entry', :action => 'list'}, {:id => 'diaryanchor', :title => 'view user diaries', :class => diaryclass} %>
  • From cb3992f5a10d821d5015a896771cd34ca068572e Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 13:35:02 +0000 Subject: [PATCH 40/93] Mark map responses as attachments. --- app/controllers/api_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 223edc6aa..26cb93a48 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -190,6 +190,8 @@ class ApiController < ApplicationController doc.root << relation.to_xml_node(user_display_name_cache) end + response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\"" + render :text => doc.to_s, :content_type => "text/xml" #exit when we have too many requests From 66fcecab91a9625555e1052eb65a266ed318bbf7 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 13:52:31 +0000 Subject: [PATCH 41/93] Make openSidebar() work with no argument. --- app/views/site/_sidebar.rhtml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/site/_sidebar.rhtml b/app/views/site/_sidebar.rhtml index d81363590..ad2845ff4 100644 --- a/app/views/site/_sidebar.rhtml +++ b/app/views/site/_sidebar.rhtml @@ -14,6 +14,8 @@ var onclose; function openSidebar(options) { + options = options || {}; + if (onclose) { onclose(); onclose = null; From 97a4e25f909cf80c9e97edece6ce7c9b209d323c Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 14:00:11 +0000 Subject: [PATCH 42/93] Add numZoomLevels to the map. --- public/javascripts/map.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 51cd9f6a5..631999a0a 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -17,8 +17,9 @@ function createMap(divName) { new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.ScaleLine() ], + units: "m", maxResolution: 156543, - units: "m" + numZoomLevels: 20 }); var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { From ff10be48554c63e2681dba4ece718d4be84b4a12 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 14:27:57 +0000 Subject: [PATCH 43/93] Use the right variable for the event. --- public/javascripts/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 631999a0a..b222af23c 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -110,7 +110,7 @@ function setMapExtent(extent) { } function getEventPosition(event) { - return map.getLonLatFromViewPortPx(e.xy).clone().transform(epsg4326, map.getProjectionObject()); + return map.getLonLatFromViewPortPx(event.xy).clone().transform(epsg4326, map.getProjectionObject()); } function getMapLayers() { From 9b04cebf3cb9190cb46996b100a4dc3659638210 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 14:29:18 +0000 Subject: [PATCH 44/93] Use the right variable for the marker position. --- app/views/user/_friend_map.rhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/user/_friend_map.rhtml b/app/views/user/_friend_map.rhtml index fd86ab10c..9bdb39aae 100644 --- a/app/views/user/_friend_map.rhtml +++ b/app/views/user/_friend_map.rhtml @@ -73,7 +73,7 @@ removeMarkerFromMap(marker); } - marker = addMarkerToMap(merc, null, "Your location"); + marker = addMarkerToMap(lonlat, null, "Your location"); } } From ab62a4b45317a52333918d59d9ec8e3181cd4474 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 14:32:40 +0000 Subject: [PATCH 45/93] Do the transform the right way round. --- public/javascripts/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/map.js b/public/javascripts/map.js index b222af23c..b3d964b5b 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -110,7 +110,7 @@ function setMapExtent(extent) { } function getEventPosition(event) { - return map.getLonLatFromViewPortPx(event.xy).clone().transform(epsg4326, map.getProjectionObject()); + return map.getLonLatFromViewPortPx(event.xy).clone().transform(map.getProjectionObject(), epsg4326); } function getMapLayers() { From 7a9e92386e7511061d2c2254919db167ad28bfa3 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sat, 19 Apr 2008 16:58:03 +0000 Subject: [PATCH 46/93] Rework export to not rely on ctrl+drag to select an area. --- app/views/export/_start.rhtml | 2 +- app/views/export/start.rjs | 186 +++++++++++++++++++--------------- 2 files changed, 107 insertions(+), 81 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 969b8efc7..4da754496 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -10,7 +10,7 @@
    <%= text_field_tag('minlat', nil, :size => 10, :class => "export_bound") %>

    - Drag a box with control held down to select an area to export + Manually select a different area

    diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 2796d92fe..c0fced025 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -12,23 +12,20 @@ page << < 0.25) { + $("format_osm").disabled = true; + $("format_osm").checked = false; + $("export_osm").style.display = "none"; + } else { + $("format_osm").disabled = false; + } + + var max_zoom = maxOsmarenderZoom(); + var max_scale = maxMapnikScale(); + + $("mapnik_max_scale").innerHTML = roundScale(max_scale); + + mapnikScaleChanged(); + + for (var o = 0; o < $("osmarender_zoom").options.length; o++) { + var option = $("osmarender_zoom").options[o]; + + if (option.value > max_zoom) { + option.disabled = true; + } else { + option.disabled = false; + } + } + + if ($("osmarender_zoom").options.selectedIndex + 4 > max_zoom) { + $("osmarender_zoom").options.selectedIndex = max_zoom - 4; + } + } + function formatChanged() { if ($("format_osm").checked) { $("export_osm").style.display = "inline"; @@ -81,81 +182,6 @@ page << < 0.25) { - $("format_osm").disabled = true; - $("format_osm").checked = false; - $("export_osm").style.display = "none"; - } else { - $("format_osm").disabled = false; - } - - var max_zoom = maxOsmarenderZoom(); - var max_scale = maxMapnikScale(); - - $("mapnik_max_scale").innerHTML = roundScale(max_scale); - - mapnikScaleChanged(); - - for (var o = 0; o < $("osmarender_zoom").options.length; o++) { - var option = $("osmarender_zoom").options[o]; - - if (option.value > max_zoom) { - option.disabled = true; - } else { - option.disabled = false; - } - } - - if ($("osmarender_zoom").options.selectedIndex + 4 > max_zoom) { - $("osmarender_zoom").options.selectedIndex = max_zoom - 4; - } - } - function maxMapnikScale() { var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value); var epsg4326 = new OpenLayers.Projection("EPSG:4326"); From 3052bd7bedc504728e6258a7dec01fd4f8df0e5f Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 20 Apr 2008 08:24:04 +0000 Subject: [PATCH 47/93] Suppress the PanZoomBar control from printed output. --- public/stylesheets/print.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css index 924ba8164..3acf6b3fb 100644 --- a/public/stylesheets/print.css +++ b/public/stylesheets/print.css @@ -18,7 +18,7 @@ display: none; } -.olControlPanZoom { +.olControlPanZoomBar { display: none; } From 48918f19dc0214a1e9bf731fe72d34a2c68383db Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 20 Apr 2008 08:38:47 +0000 Subject: [PATCH 48/93] Close down export properly when the sidebar is closed. --- app/views/export/start.rjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index c0fced025..7a323b05b 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -43,8 +43,8 @@ page << < Date: Sun, 20 Apr 2008 10:31:03 +0000 Subject: [PATCH 49/93] Make sure the export button is enabled if we switch away from mapnik export, and that the mapnik image size is updated correctly. --- app/views/export/start.rjs | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 7a323b05b..3f1d73d68 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -64,6 +64,7 @@ page << < Date: Mon, 21 Apr 2008 08:14:15 +0000 Subject: [PATCH 50/93] Tweak export startup to stop silly image sizes being reported. --- app/views/export/start.rjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 3f1d73d68..2d3ec06ec 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -25,8 +25,6 @@ page << < Date: Tue, 22 Apr 2008 21:32:26 +0000 Subject: [PATCH 51/93] Potlatch 0.8b --- app/views/site/edit.rhtml | 28 +++++++++++++--------------- config/potlatch/autocomplete.txt | 2 +- config/potlatch/presets.txt | 5 +++-- public/potlatch/potlatch.swf | Bin 117824 -> 120575 bytes 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/app/views/site/edit.rhtml b/app/views/site/edit.rhtml index c72a3ab1d..ac54cb5e5 100644 --- a/app/views/site/edit.rhtml +++ b/app/views/site/edit.rhtml @@ -24,29 +24,27 @@ <% session[:token] = @user.tokens.create.token unless session[:token] %> <% if params['mlon'] and params['mlat'] %> -<% lon = h(params['mlon']) %> -<% lat = h(params['mlat']) %> -<% zoom = h(params['zoom'] || '14') %> + <% lon = h(params['mlon']) %> + <% lat = h(params['mlat']) %> + <% zoom = h(params['zoom'] || '14') %> <% elsif @user and params['lon'].nil? and params['lat'].nil? and params['gpx'].nil? %> -<% lon = @user.home_lon %> -<% lat = @user.home_lat %> -<% zoom = '14' %> -<% elsif params['gpx'].nil? %> -<% lon = h(params['lon'] || '-0.1') %> -<% lat = h(params['lat'] || '51.5') %> -<% zoom = h(params['zoom'] || '14') %> + <% lon = @user.home_lon %> + <% lat = @user.home_lat %> + <% zoom = '14' %> <% else %> -<% lon = nil %> -<% lat = nil %> -<% zoom = '14' %> + <% lon = h(params['lon'] || 'null') %> + <% lat = h(params['lat'] || 'null') %> + <% zoom = h(params['zoom'] || '14') %> <% end %> -
    You need a Flash player to use Potlatch, the +
    + You need a Flash player to use Potlatch, the OpenStreetMap Flash editor. You can download Flash Player from Adobe.com. Several other options are also available for editing OpenStreetMap.
    + <%= javascript_include_tag 'swfobject.js' %> From f747951714dc84b513950ba8e846eeb9471faa71 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Tue, 29 Apr 2008 10:34:20 +0000 Subject: [PATCH 71/93] preset typo --- config/potlatch/autocomplete.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/potlatch/autocomplete.txt b/config/potlatch/autocomplete.txt index dfe4997ca..7417f839b 100755 --- a/config/potlatch/autocomplete.txt +++ b/config/potlatch/autocomplete.txt @@ -25,7 +25,7 @@ amenity/way parking,bicycle_parking,car_rental,car_sharing,public_building,grav shop/POI supermarket,convenience,bicycle,outdoor shop/way supermarket tourism/POI information,camp_site,caravan_site,caravan_site,picnic_site,viewpoint,theme_park,hotel,motel,guest_house,hostel,attraction,zoo -tourism/way camp_site,caravan_site,picnic_site,theme_parkattraction,zoo +tourism/way camp_site,caravan_site,picnic_site,theme_park,attraction,zoo historic/POI castle,monument,memorial,museum,archaeological_site,icon,ruins historic/way archaeological_site,ruins landuse/POI farm,quarry,landfill,basin,reservoir,forest,allotments,residential,retail,commercial,industrial,brownfield,greenfield,cemetery,village_green,recreation_ground From 6f2b617fae9ae1464b466a6ba256c69f6a41b407 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Tue, 29 Apr 2008 11:58:12 +0000 Subject: [PATCH 72/93] Create branch for HTML export from export tab. From 50c754061c00a47ea0990c014bb7faf8f83fe79a Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Tue, 29 Apr 2008 13:08:26 +0000 Subject: [PATCH 73/93] Add static embed-friendly html page. --- public/export/embed.html | 105 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 public/export/embed.html diff --git a/public/export/embed.html b/public/export/embed.html new file mode 100644 index 000000000..11c0a02ee --- /dev/null +++ b/public/export/embed.html @@ -0,0 +1,105 @@ + + + + + + + + +
    + + From 2d9282d864231b59ffd26edab970ed75cf5107cc Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Tue, 29 Apr 2008 13:19:24 +0000 Subject: [PATCH 74/93] start of work on UI --- app/views/export/_start.rhtml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 4da754496..b484831b8 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -23,6 +23,8 @@ <%= radio_button_tag("format", "mapnik") %>Mapnik Image
    <%= radio_button_tag("format", "osmarender") %>Osmarender Image +
    + <%= radio_button_tag("format", "html") %>Embeddable HTML

    @@ -52,6 +54,13 @@

    Zoom <%= select_tag("osmarender_zoom", options_for_select([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])) %>

    + +
    + +
    + +
    +

    <%= submit_tag "Export", :id => "export_commit" %>

    From 5ff86db265393bbe806ddd3cc52b06a9f62a0619 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Tue, 29 Apr 2008 13:57:26 +0000 Subject: [PATCH 75/93] add support for HTML export to export tabk --- app/views/export/_start.rhtml | 13 +++++++++++-- app/views/export/start.rjs | 26 +++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index b484831b8..83d747e8d 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -56,9 +56,18 @@
    - +

    Options

    +

    + <%= check_box_tag("html_marker", "true") %> Include Marker on Map +

    +

    Output

    - +

    + +

    +

    + Paste HTML to embed in website +

    diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 2d3ec06ec..b53d4ed4f 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -109,6 +109,7 @@ page << <'; + $("export_html_text").value = html; + } + $("html_marker").onclick = htmlBoundsChanged; + function formatChanged() { + $("export_commit").style.display = "inline"; if ($("format_osm").checked) { $("export_osm").style.display = "inline"; } else { @@ -181,13 +198,20 @@ page << < Date: Tue, 29 Apr 2008 14:41:59 +0000 Subject: [PATCH 76/93] round numbers --- app/views/export/start.rjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index b53d4ed4f..52fd61e60 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -166,12 +166,15 @@ page << <'; $("export_html_text").value = html; + if ($("format_html").checked) { + $("export_html_text").select(); + } } $("html_marker").onclick = htmlBoundsChanged; @@ -201,6 +204,7 @@ page << < Date: Tue, 29 Apr 2008 17:11:22 +0000 Subject: [PATCH 77/93] Cosmetic tidy up, and fix hardcoding of server name. --- app/views/export/_start.rhtml | 23 ++++++-------- app/views/export/start.rjs | 35 ++++++++++++--------- public/export/embed.html | 59 ++++++++++++++++++++--------------- 3 files changed, 63 insertions(+), 54 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 83d747e8d..891ec3600 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -18,13 +18,13 @@

    - <%= radio_button_tag("format", "osm") %>OpenStreetMap XML Data + <%= radio_button_tag("format", "osm") %> OpenStreetMap XML Data
    - <%= radio_button_tag("format", "mapnik") %>Mapnik Image + <%= radio_button_tag("format", "mapnik") %> Mapnik Image
    - <%= radio_button_tag("format", "osmarender") %>Osmarender Image + <%= radio_button_tag("format", "osmarender") %> Osmarender Image
    - <%= radio_button_tag("format", "html") %>Embeddable HTML + <%= radio_button_tag("format", "html") %> Embeddable HTML

    @@ -57,17 +57,14 @@

    Options

    -

    - <%= check_box_tag("html_marker", "true") %> Include Marker on Map -

    +
    +

    <%= check_box_tag("html_marker", "true") %> Include Marker on Map

    +
    +

    Output

    -

    - -

    -

    - Paste HTML to embed in website -

    +

    +

    Paste HTML to embed in website

    diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 52fd61e60..375c0ab39 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -109,7 +109,7 @@ page << <'; - $("export_html_text").value = html; - if ($("format_html").checked) { - $("export_html_text").select(); - } + var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value); + var projBounds = bounds.clone().transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")); + var zoom = map.getZoomForExtent(projBounds); + var center = bounds.getCenterLonLat(); + var url = "http://#{SERVER_URL}/export/embed.html?lat=" + center.lat.toFixed(5) + "&lon=" + center.lon.toFixed(5) + "&zoom=" + zoom; + + if ($("html_marker").checked) { + url += "&marker=true"; + } + + var html = ''; + $("export_html_text").value = html; + + if ($("format_html").checked) { + $("export_html_text").select(); + } } + $("html_marker").onclick = htmlBoundsChanged; function formatChanged() { $("export_commit").style.display = "inline"; + if ($("format_osm").checked) { $("export_osm").style.display = "inline"; } else { @@ -201,6 +205,7 @@ page << < @@ -15,27 +15,27 @@ var map, layer; function localUpdateLink() { var center = this.map.getCenter(); - + // Map not initialized yet. Break out of this function. - if (!center) { - return; + if (!center) { + return; } var params = OpenLayers.Util.getParameters(this.base); - - params.zoom = this.map.getZoom(); + + params.zoom = this.map.getZoom(); var lat = center.lat; var lon = center.lon; - + if (this.displayProjection) { var mapPosition = OpenLayers.Projection.transform( - { x: lon, y: lat }, - this.map.getProjectionObject(), + { x: lon, y: lat }, + this.map.getProjectionObject(), this.displayProjection ); - lon = mapPosition.x; - lat = mapPosition.y; + lon = mapPosition.x; + lat = mapPosition.y; } - + if (this.map.marker) { params.lat = Math.round(lat*100000)/100000; params.lon = Math.round(lon*100000)/100000; @@ -45,7 +45,7 @@ } var href = this.base; - if( href.indexOf('?') != -1 ){ + if(href.indexOf('?') != -1) { href = href.substring( 0, href.indexOf('?') ); } @@ -56,19 +56,21 @@ function init(){ OpenLayers.Lang.en.permalink = "Larger Map"; map = new OpenLayers.Map ("map", { - controls:[ + controls: [ new OpenLayers.Control.Attribution(), new OpenLayers.Control.ArgParser(), - new OpenLayers.Control.Navigation(), - new OpenLayers.Control.Permalink(null, "http://openstreetmap.org/", {updateLink:localUpdateLink})], + new OpenLayers.Control.Navigation(), + new OpenLayers.Control.Permalink(null, "http://openstreetmap.org/", { updateLink: localUpdateLink }) + ], maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34, 20037508.34,20037508.34), - numZoomLevels:20, - maxResolution:156543.0339, + numZoomLevels: 20, + maxResolution: 156543.0339, displayProjection: new OpenLayers.Projection("EPSG:4326"), - units:'m', + units: 'm', projection: new OpenLayers.Projection("EPSG:900913") - } ); + }); + var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { displayOutsideMaxExtent: true, wrapDateLine: true, @@ -81,21 +83,26 @@ wrapDateLine: true, attribution: 'OpenStreetMap' }); - map.addLayer(osmarender); + map.addLayer(osmarender); + var args = OpenLayers.Util.getParameters(); if (args.marker && map.getCenter()) { var markers = new OpenLayers.Layer.Markers(); map.addLayer(markers); markers.addMarker( new OpenLayers.Marker(map.getCenter())); map.marker = true; - } - if (!map.getCenter()) { map.zoomToMaxExtent(); } + } + + if (!map.getCenter()) { + map.zoomToMaxExtent(); + } + var size = map.getSize(); - if (size.h > 320) { + if (size.h > 320) { map.addControl(new OpenLayers.Control.PanZoomBar()); } else { map.addControl(new OpenLayers.Control.PanZoom()); - } + } } From 075846bdff73e51251b0a8c7b39a756c85dda8dd Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 29 Apr 2008 17:23:22 +0000 Subject: [PATCH 78/93] Fix attribution strings. --- public/export/embed.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/export/embed.html b/public/export/embed.html index 76ad24a4e..f3dab11bf 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -74,14 +74,14 @@ var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { displayOutsideMaxExtent: true, wrapDateLine: true, - attribution: 'OpenStreetMap' + attribution: 'Data by OpenStreetMap' }); map.addLayer(mapnik); var osmarender = new OpenLayers.Layer.OSM.Osmarender("Osmarender", { displayOutsideMaxExtent: true, wrapDateLine: true, - attribution: 'OpenStreetMap' + attribution: 'Data by OpenStreetMap' }); map.addLayer(osmarender); From 73aedc2e5c47e8d74f1bd5ab127f00730ba9d3db Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Wed, 30 Apr 2008 01:00:40 +0000 Subject: [PATCH 79/93] improvements to embed.html, now uses bbox instead of lon/lat/zoom, and has more human readable layer definition, and has support for marker other than the middle of the map. --- public/export/embed.html | 57 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/public/export/embed.html b/public/export/embed.html index f3dab11bf..58bfdec21 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -36,13 +36,8 @@ lat = mapPosition.y; } - if (this.map.marker) { - params.lat = Math.round(lat*100000)/100000; - params.lon = Math.round(lon*100000)/100000; - } else { - params.mlat = Math.round(lat*100000)/100000; - params.mlon = Math.round(lon*100000)/100000; - } + params.lat = Math.round(lat*100000)/100000; + params.lon = Math.round(lon*100000)/100000; var href = this.base; if(href.indexOf('?') != -1) { @@ -58,7 +53,6 @@ map = new OpenLayers.Map ("map", { controls: [ new OpenLayers.Control.Attribution(), - new OpenLayers.Control.ArgParser(), new OpenLayers.Control.Navigation(), new OpenLayers.Control.Permalink(null, "http://openstreetmap.org/", { updateLink: localUpdateLink }) ], @@ -71,32 +65,37 @@ projection: new OpenLayers.Projection("EPSG:900913") }); - var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { - displayOutsideMaxExtent: true, - wrapDateLine: true, - attribution: 'Data by OpenStreetMap' - }); - map.addLayer(mapnik); - - var osmarender = new OpenLayers.Layer.OSM.Osmarender("Osmarender", { - displayOutsideMaxExtent: true, - wrapDateLine: true, - attribution: 'Data by OpenStreetMap' - }); - map.addLayer(osmarender); - + var attribution = 'Data by OpenStreetMap'; var args = OpenLayers.Util.getParameters(); - if (args.marker && map.getCenter()) { + if (!args.layer || args.layer == "mapnik") { + var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { + displayOutsideMaxExtent: true, + wrapDateLine: true, + attribution: attribution + }); + map.addLayer(mapnik); + } else { + var osmarender = new OpenLayers.Layer.OSM.Osmarender("Osmarender", { + displayOutsideMaxExtent: true, + wrapDateLine: true, + attribution: attribution + }); + map.addLayer(osmarender); + } + if (args.marker) { var markers = new OpenLayers.Layer.Markers(); map.addLayer(markers); - markers.addMarker( new OpenLayers.Marker(map.getCenter())); + var center = args.marker.split(","); + markers.addMarker( new OpenLayers.Marker(new OpenLayers.LonLat(center[1], center[0]).transform(map.displayProjection, map.getProjectionObject()))); map.marker = true; + } + if (args.bbox) { + var bounds = OpenLayers.Bounds.fromString(args.bbox).transform(map.displayProjection, map.getProjectionObject()); + var center = bounds.getCenterLonLat(); + map.setCenter(center, map.getZoomForExtent(bounds, true); + } else { + map.zoomToMaxExtent(); } - - if (!map.getCenter()) { - map.zoomToMaxExtent(); - } - var size = map.getSize(); if (size.h > 320) { map.addControl(new OpenLayers.Control.PanZoomBar()); From 2d56ad8d84315c2c3fdfb72e5c308b520431b0eb Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Wed, 30 Apr 2008 02:48:26 +0000 Subject: [PATCH 80/93] Simplify a couple things that no longer need to be so complex. --- public/export/embed.html | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/public/export/embed.html b/public/export/embed.html index 58bfdec21..7fe7d4683 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -85,14 +85,12 @@ if (args.marker) { var markers = new OpenLayers.Layer.Markers(); map.addLayer(markers); - var center = args.marker.split(","); - markers.addMarker( new OpenLayers.Marker(new OpenLayers.LonLat(center[1], center[0]).transform(map.displayProjection, map.getProjectionObject()))); + markers.addMarker( new OpenLayers.Marker(new OpenLayers.LonLat(args.marker[1], args.marker[0]).transform(map.displayProjection, map.getProjectionObject()))); map.marker = true; } - if (args.bbox) { - var bounds = OpenLayers.Bounds.fromString(args.bbox).transform(map.displayProjection, map.getProjectionObject()); - var center = bounds.getCenterLonLat(); - map.setCenter(center, map.getZoomForExtent(bounds, true); + if (args.bbox) { + var bounds = OpenLayers.Bounds.fromArray(args.bbox).transform(map.displayProjection, map.getProjectionObject()); + map.zoomToExtent(bounds) } else { map.zoomToMaxExtent(); } From f67ffb6ebbf81023f003bc22c44ce829e010d193 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Wed, 30 Apr 2008 02:50:53 +0000 Subject: [PATCH 81/93] add support for setting a specific marker location on the map. --- app/views/export/_start.rhtml | 7 +++- app/views/export/start.rjs | 68 +++++++++++++++++++++++++++-------- 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 891ec3600..4fbbff047 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -58,7 +58,12 @@

    Options

    -

    <%= check_box_tag("html_marker", "true") %> Include Marker on Map

    +

    + Add a marker to the map +

    +

    Output

    diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 375c0ab39..30516938c 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -3,6 +3,8 @@ page.replace_html :sidebar_content, :partial => 'start' page << <'; + var url = "http://#{SERVER_URL}/export/embed.html?bbox=" + bounds.toBBOX(); + if ($("marker_lat").value && $("marker_lon").value) { + url += "&marker=" + $("marker_lat").value + "," + $("marker_lon").value; + } + var html = ''; $("export_html_text").value = html; if ($("format_html").checked) { @@ -179,8 +220,6 @@ page << < Date: Wed, 30 Apr 2008 03:11:47 +0000 Subject: [PATCH 82/93] add support for showing osmarender layer instead of mapnik layer, style the vector layer so it looks like a marker. --- app/views/export/start.rjs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 30516938c..7f9453122 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -24,6 +24,7 @@ page << <'; $("export_html_text").value = html; @@ -253,7 +263,7 @@ page << < Date: Wed, 30 Apr 2008 08:44:57 +0000 Subject: [PATCH 83/93] Tidy things up a bit. --- app/views/export/_start.rhtml | 9 +++--- app/views/export/start.rjs | 60 +++++++++++++++++++++-------------- public/export/embed.html | 21 ++++++------ 3 files changed, 52 insertions(+), 38 deletions(-) diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml index 4fbbff047..9776261ea 100644 --- a/app/views/export/_start.rhtml +++ b/app/views/export/_start.rhtml @@ -58,11 +58,10 @@

    Options

    -

    - Add a marker to the map -

    +

    Add a marker to the map

    +
    diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 7f9453122..2a7985037 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -99,34 +99,47 @@ page << <'; $("export_html_text").value = html; diff --git a/public/export/embed.html b/public/export/embed.html index 7fe7d4683..41cd75f43 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -71,29 +71,32 @@ var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", { displayOutsideMaxExtent: true, wrapDateLine: true, - attribution: attribution + attribution: attribution }); map.addLayer(mapnik); - } else { + } else { var osmarender = new OpenLayers.Layer.OSM.Osmarender("Osmarender", { displayOutsideMaxExtent: true, wrapDateLine: true, - attribution: attribution + attribution: attribution }); - map.addLayer(osmarender); - } + map.addLayer(osmarender); + } + if (args.marker) { var markers = new OpenLayers.Layer.Markers(); map.addLayer(markers); - markers.addMarker( new OpenLayers.Marker(new OpenLayers.LonLat(args.marker[1], args.marker[0]).transform(map.displayProjection, map.getProjectionObject()))); + markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(args.marker[1], args.marker[0]).transform(map.displayProjection, map.getProjectionObject()))); map.marker = true; - } - if (args.bbox) { + } + + if (args.bbox) { var bounds = OpenLayers.Bounds.fromArray(args.bbox).transform(map.displayProjection, map.getProjectionObject()); map.zoomToExtent(bounds) } else { - map.zoomToMaxExtent(); + map.zoomToMaxExtent(); } + var size = map.getSize(); if (size.h > 320) { map.addControl(new OpenLayers.Control.PanZoomBar()); From 26746224ccab42bb6b2f39edb524803831defc1a Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Wed, 30 Apr 2008 11:45:28 +0000 Subject: [PATCH 84/93] link goes into external frame, not in the iframe --- public/export/embed.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/export/embed.html b/public/export/embed.html index 41cd75f43..8e4ea2651 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -43,7 +43,8 @@ if(href.indexOf('?') != -1) { href = href.substring( 0, href.indexOf('?') ); } - + + this.element.target="_blank"; href += '?' + OpenLayers.Util.getParameterString(params); this.element.href = href; } From 111b8651168b539cc8bb79055d99f181c2db78b4 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Wed, 30 Apr 2008 22:59:30 +0000 Subject: [PATCH 85/93] Potlatch 0.8c --- app/controllers/amf_controller.rb | 4 ++-- public/potlatch/potlatch.swf | Bin 120135 -> 120793 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index 4afba1484..421444869 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -594,8 +594,8 @@ class AmfController < ApplicationController # the delete_with_relations_and_nodes_and_history method should do this, # but at present it just throws a 'precondition failed' way=way.to_i - db_now='@now'+(rand*100).to_i.to_s+uid.to_s+id.to_i.abs.to_s+Time.new.to_i.to_s - db_uqn='unin'+(rand*100).to_i.to_s+uid.to_s+way.to_i.abs.to_s+Time.new.to_i.to_s + db_now='@now'+(rand*100).to_i.to_s+uid.to_s+way.abs.to_s+Time.new.to_i.to_s + db_uqn='unin'+(rand*100).to_i.to_s+uid.to_s+way.abs.to_s+Time.new.to_i.to_s ActiveRecord::Base.connection.execute("SET #{db_now}=NOW()") createuniquenodes(way,db_uqn,[]) deleteuniquenoderelations(db_uqn,uid,db_now) diff --git a/public/potlatch/potlatch.swf b/public/potlatch/potlatch.swf index fab50c40a0396ea49741864b69681f72929c1fab..ee6f67b705dafec18d4d95f785f9788b86074cdb 100755 GIT binary patch literal 120793 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%0A9`V*SDSnBnOfk)emWSN9psvcz~!q0s^2o zU-pVN!X5%uteu~*uB0HJTCTO*pQq2BKkcY_t*@_Tlau!DE{mrdAOl!%O(WBm(bCR?yV^h>6$8G-Y)}q$I%iSgfGUR4nMN6eQ=T!6|gUHf%nU z@yfh5k)rkBN{%7M5>}m3GwJ*(c0tJtT#6aR}Lv_Frhf9=4B1 z@Bw4NU%HZ=val2?0=kKv8^qWRDt?)gMaj<;fMFJof-jE*Ln;YFQME^4wS+rPEOY=x zE!vY=!ayIyfIk_F;`f#80$sftu`6yQK;lz-m56sRb;WZynhNUi) ze#6FN-5NJU^daahO5bT6d0Z+1T}WqdIO3uZ!LG$)$ui*b-z?!?I8q+!{zThvPZa((ZodH@Qi2r_p1uB$PVW~+@SWt-dbBfvg1jYg+bKOo z#|0qz^`E}D!UjjKliaf7nk?#u?g?-VL{kv89msz^1-U~2&{B#?y_yaA$x zWSeP<+j{{QA=^YpT(azM8oJyIL;f#22U2iyLkrY|m+K#CuQUR|JH{fBK)@k&sP7G_ZCv3RIW+a zcsfEGLb!9q_z3w}j(suzg{kB>VH*eet40_D*hm+H2Ogi$J0}}!-k~to*7G;P*~#ln z|0To0`0%$JaA=`4Xsl!Sn~uUywVLnnG7kOLKC-Y!+itZcn#V4tiXAfs853Q405|7X zJoAzj%Ox*ZPj1vf$isj)ipJ1Kw7tDqM!plZ*+@lcP?9bw>ev!C$LD?{e*JEl!k&@ynv9EcT%=0G0YDCR(jSD5*JQ`pIPCF`j6I?i!A(|rX5^YT=h*aR<0Q+4B ze&o0n9QkKdFvtpS(t7Xl%4T(J;BnFH0~%OTiX@xOmF~cj4f4gHB}2%YQg4o_9+;-X z)%B?bgt7|}nx8I_-V>eP?~83LV3^%L^Mnw^rE_5J*x~C?!Nc+y51WMLqa3^MUafdd z3kc(bla$XjaGn<=K~lYj$63*mBl9;@5gh+uZ z!CtQg#FNE}kM(XBH%#B9Ap-=BupPNOKAWuyaX}cwIf5yz|5(qxC87F^Y?%&AEv;^M z*OzMSlqp-x%drNa7aRU5j_z4`((J6$EcO_2b{L9Jc6v|QbxO#!RYp$I2i>B*P+pZ& z!@{Z{W^kW?UT~-a2Oi?W$89FdNP`{05r?yTIs4M; z2WqLAkO4Y&tO^E7kR*jW-%HXBoR(C91SNQ%b-2)r!&OaZG;k!tY}c@6G4}^#)-2|j zjH<Ytqeu zG~%>g7uTl>jJjXe(BZx#%?-rY>~p`7iB*Q@@sBEd^NMvXQhkC@*{f^I7O5;7BCwvV zOkH7t{60d_G=wkiy-pU$;LNi&e7H^qZ^OZSo1AYlf7|JNpd6Vq?LeJR&YpQDGo$V! zGyug43`PcG3uRGQz$&9tDR;|xbXjxJV-*_%;jUq3k&OXRet7@n_Jo*q8}Go+n#2#E z%do2vrX%ZvD-g%_MlEp4b^W9nPD$Y6&~|E`p$jiDx494G9n2D5(na~b{x=Lt%;PQy&a_fXueLFp6!4i;; zu-F{bnKI%6Z{x&&k@zOUng-2ztBIixc|$rq0l8i4l)s7+BjuSZ!Ykd;{IseMZa&~9 z%Qy`~iV;PaH|t`K?Et#kniU!rInM6$fF2 zYOK6_MyTydm5pB2%Glj-dez9qa<_thnk;Wd>@_ybN_|ZhS1t`-fe@mvM`nH9MirYx z!K=6p=xcNH%{0lu4c1C&;SJ=rmUX*S<2CNPBmw}EKiH9Rfsy2f!h?R#3yWdqLFAqY znfQ+Zc%@8>?T2{VX{R;+nB!-(X3U*Cd+tBYo<5@m_mc>tP3RqlWF5+!<9OX+$S!z! z#gIU}(mtHf+yq0JO@`#n^*kg_*ezMW?+Az}GbxNm(nkvI1!CezM!<>6L^OiAgn59p{lPcH`iCpXye(7 z;Wm$?_Js$Ou=`REkPIqLnQg~;KG2BIDRC&HM63HkdvW)@_!jyuey|p{Cdf#zzOlibh z+QQkp1w$sTF&|ALs+`EM*oLj%`9r<)hIEPF@Sg$El@+M%CGoKU5{Axm-O>9%;XDG2 zN-?Cl`Gd10_)%&XXL^FActKyxE*k1xI5hkswAzT-1%qM6Vg+WOQcw*rgGu<&?9%nv zoo$Hb8`<9tGBo`HJk$kQHW;Gp;QbcB8SB?P{f9>PG}Ocv8`8%W*FOP)F=G_gw25WI z*CZECtCikTSB>FH7YK)t8d5-Rq05C+pNgV+StaDDL5vxH1glKP%LJ_`%aPFgushph z&q+_;(JInFln=|^R`3Mu>xDxNXUAlMyGdR+zAny)9l4Q6>!m}zONNGb0!ocCaq(a> z!D59>VBkXeUpCZRG;|p{EJMpi?&tWzsd>B>_eJlDq2A>~!~2bd-r~W~W3d7~i;x1L zkrc_oqamiXmq0H}ZavUD6*~I#b=GOOPHVOH1QO@1^U`+f)K+Wew0XzPd+!O;a90A8 F{~tAD0LK6T From 8a6cfefa0771ebcb30a00361861d22bb5205c2c0 Mon Sep 17 00:00:00 2001 From: Christopher Schmidt Date: Thu, 1 May 2008 00:00:20 +0000 Subject: [PATCH 86/93] larger map link is now raw html for better google-linking capability, rather than generated by javascript --- app/views/export/start.rjs | 15 ++++++++++++-- public/export/embed.html | 40 +------------------------------------- 2 files changed, 14 insertions(+), 41 deletions(-) diff --git a/app/views/export/start.rjs b/app/views/export/start.rjs index 2a7985037..daa56a676 100644 --- a/app/views/export/start.rjs +++ b/app/views/export/start.rjs @@ -229,12 +229,23 @@ page << <'; + + // Create "larger map" link + var center = bounds.getCenterLonLat(); + var epsg4326 = new OpenLayers.Projection("EPSG:4326"); + var epsg900913 = new OpenLayers.Projection("EPSG:900913"); + + bounds.transform(epsg4326, epsg900913); + var zoom = map.getZoomForExtent(bounds); + + html += '
    View Larger Map'; + $("export_html_text").value = html; if ($("format_html").checked) { diff --git a/public/export/embed.html b/public/export/embed.html index 8e4ea2651..ae82eb54a 100644 --- a/public/export/embed.html +++ b/public/export/embed.html @@ -13,49 +13,11 @@