aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore7
-rw-r--r--.travis.yml15
-rw-r--r--.tx/config4
-rw-r--r--README.md68
-rwxr-xr-xbin/install-as-user99
-rwxr-xr-xbin/install_perl_modules10
-rwxr-xr-xbin/problem-creation-graph8
-rw-r--r--bin/site-specific-install.sh24
-rwxr-xr-x[-rw-r--r--]bin/update-schema16
-rwxr-xr-xbin/zurich-overdue-alert4
-rwxr-xr-xbin/zurich/convert_internal_notes_to_comments73
m---------commonlib0
-rw-r--r--conf/.gitignore2
-rwxr-xr-xconf/Vagrantfile.example82
-rw-r--r--conf/crontab-example (renamed from conf/crontab.example)0
-rw-r--r--conf/crontab.ugly83
-rw-r--r--conf/general.yml-example24
l---------conf/packages2
-rw-r--r--conf/packages.debian-wheezy3
-rw-r--r--cpanfile18
-rw-r--r--cpanfile.snapshot613
-rw-r--r--data/openlayers.fixmystreet.cfg6
-rw-r--r--data/openlayers.fixmystreet.google.cfg39
-rw-r--r--db/schema.sql8
-rw-r--r--db/schema_0029-add_deleted_flag_to_body.sql6
-rw-r--r--db/schema_0030-drop-action-log-check-constraint.sql6
-rw-r--r--locale/FixMyStreet.po784
-rw-r--r--locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po1073
-rw-r--r--locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po1137
-rw-r--r--locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po1074
-rw-r--r--locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po1096
-rw-r--r--locale/fr_FR.UTF-8/LC_MESSAGES/FixMyStreet.po1096
-rw-r--r--locale/hr.UTF-8/LC_MESSAGES/FixMyStreet.po1096
-rw-r--r--locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po1115
-rw-r--r--locale/nl_NL.UTF-8/LC_MESSAGES/FixMyStreet.po1091
-rw-r--r--locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po1095
-rw-r--r--locale/pt_CV.UTF-8/LC_MESSAGES/FixMyStreet.po1113
-rw-r--r--locale/sv_SE.UTF-8/LC_MESSAGES/FixMyStreet.po1084
-rw-r--r--notes/trouble_shooting.md42
-rw-r--r--notes/vagrant.md66
-rw-r--r--perllib/CrossSell.pm14
-rw-r--r--perllib/FixMyStreet.pm37
-rw-r--r--perllib/FixMyStreet/App.pm8
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm81
-rw-r--r--perllib/FixMyStreet/App/Controller/Contact.pm4
-rw-r--r--perllib/FixMyStreet/App/Controller/Dashboard.pm126
-rwxr-xr-xperllib/FixMyStreet/App/Controller/FakeMapit.pm4
-rw-r--r--perllib/FixMyStreet/App/Controller/My.pm3
-rw-r--r--perllib/FixMyStreet/App/Controller/Photo.pm14
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm18
-rw-r--r--perllib/FixMyStreet/App/View/Web.pm8
-rw-r--r--perllib/FixMyStreet/Cobrand.pm15
-rw-r--r--perllib/FixMyStreet/Cobrand/BellaVistaEnAccion.pm33
-rw-r--r--perllib/FixMyStreet/Cobrand/Default.pm7
-rw-r--r--perllib/FixMyStreet/Cobrand/FiksGataMi.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/FixMindelo.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/FixMyStreet.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/Hart.pm72
-rw-r--r--perllib/FixMyStreet/Cobrand/Oxfordshire.pm3
-rw-r--r--perllib/FixMyStreet/Cobrand/UKCouncils.pm17
-rw-r--r--perllib/FixMyStreet/Cobrand/Zurich.pm226
-rw-r--r--perllib/FixMyStreet/DB/RABXColumn.pm98
-rw-r--r--perllib/FixMyStreet/DB/Result/Alert.pm8
-rw-r--r--perllib/FixMyStreet/DB/Result/AlertSent.pm6
-rw-r--r--perllib/FixMyStreet/DB/Result/Body.pm22
-rw-r--r--perllib/FixMyStreet/DB/Result/BodyArea.pm6
-rw-r--r--perllib/FixMyStreet/DB/Result/Comment.pm46
-rw-r--r--perllib/FixMyStreet/DB/Result/Contact.pm28
-rw-r--r--perllib/FixMyStreet/DB/Result/Problem.pm72
-rw-r--r--perllib/FixMyStreet/DB/Result/Questionnaire.pm6
-rw-r--r--perllib/FixMyStreet/DB/Result/Token.pm25
-rw-r--r--perllib/FixMyStreet/DB/Result/User.pm10
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/AlertType.pm3
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Problem.pm18
-rw-r--r--perllib/FixMyStreet/Map/GoogleOL.pm22
-rw-r--r--perllib/FixMyStreet/SendReport/Email.pm18
-rw-r--r--perllib/FixMyStreet/TestMech.pm20
-rw-r--r--perllib/Open311.pm1
-rw-r--r--perllib/Open311/GetServiceRequestUpdates.pm16
-rw-r--r--t/app/controller/about.t9
-rw-r--r--t/app/controller/admin.t64
-rw-r--r--t/app/controller/alert.t85
-rw-r--r--t/app/controller/alert_new.t59
-rw-r--r--t/app/controller/around.t24
-rw-r--r--t/app/controller/dashboard.t1045
-rw-r--r--t/app/controller/index.t6
-rw-r--r--t/app/controller/questionnaire.t18
-rw-r--r--t/app/controller/report_display.t36
-rw-r--r--t/app/controller/report_import.t236
-rw-r--r--t/app/controller/report_interest_count.t7
-rw-r--r--t/app/controller/report_new.t542
-rw-r--r--t/app/controller/report_new_open311.t34
-rw-r--r--t/app/controller/reports.t56
-rw-r--r--t/app/controller/rss.t30
-rw-r--r--t/app/model/alert_type.t53
-rw-r--r--t/app/model/problem.t159
-rw-r--r--t/app/model/rabx_column.t23
-rw-r--r--t/app/model/token.t46
-rw-r--r--t/app/uri_for.t20
-rw-r--r--t/cobrand/bromley.t42
-rw-r--r--t/cobrand/councils.t10
-rw-r--r--t/cobrand/fixmybarangay.t21
-rw-r--r--t/cobrand/get_body_sender.t13
-rw-r--r--t/cobrand/hart.t16
-rw-r--r--t/cobrand/loading.t103
-rw-r--r--t/cobrand/zurich.t643
-rw-r--r--t/i18n.t13
-rw-r--r--t/open311.t4
-rw-r--r--t/open311/getservicerequestupdates.t65
-rw-r--r--templates/email/fixmystreet/alert-problem-area.txt23
-rw-r--r--templates/email/fixmystreet/alert-problem-council.txt22
-rw-r--r--templates/email/fixmystreet/alert-problem-nearby.txt21
-rw-r--r--templates/email/fixmystreet/alert-problem-ward.txt23
-rw-r--r--templates/email/fixmystreet/alert-problem.txt21
-rw-r--r--templates/email/fixmystreet/alert-update.txt28
-rw-r--r--templates/web/bromley/report/_item.html25
-rw-r--r--templates/web/default/admin/bodies.html100
-rw-r--r--templates/web/default/admin/body-form.html169
-rw-r--r--templates/web/default/admin/body.html243
-rw-r--r--templates/web/default/admin/body_edit.html2
-rw-r--r--templates/web/default/admin/config_page.html146
-rw-r--r--templates/web/default/admin/edit-league.html7
-rw-r--r--templates/web/default/admin/flagged.html39
-rw-r--r--templates/web/default/admin/header.html2
-rw-r--r--templates/web/default/admin/index.html10
-rw-r--r--templates/web/default/admin/list_updates.html20
-rw-r--r--templates/web/default/admin/problem_row.html2
-rw-r--r--templates/web/default/admin/report_edit.html9
-rw-r--r--templates/web/default/admin/reports.html6
-rw-r--r--templates/web/default/admin/stats.html12
-rw-r--r--templates/web/default/admin/timeline.html6
-rw-r--r--templates/web/default/admin/update_edit.html9
-rw-r--r--templates/web/default/admin/user-form.html44
-rw-r--r--templates/web/default/admin/users.html10
-rw-r--r--templates/web/default/common_header_tags.html22
-rw-r--r--templates/web/default/dashboard/index.html1
-rwxr-xr-xtemplates/web/default/faq/faq-en-gb.html25
-rw-r--r--templates/web/default/js/translation_strings.html6
-rw-r--r--templates/web/default/maps/bing.html18
-rw-r--r--templates/web/default/maps/fms.html2
-rw-r--r--templates/web/default/maps/google-ol.html15
-rw-r--r--templates/web/default/maps/openlayers.html14
-rw-r--r--templates/web/default/maps/osm-streetview.html2
-rw-r--r--templates/web/default/maps/osm.html2
-rw-r--r--templates/web/default/my/my.html5
-rw-r--r--templates/web/default/report/_council_sent_info.html5
-rw-r--r--templates/web/default/report/_main.html6
-rw-r--r--templates/web/default/report/updates.html4
-rwxr-xr-xtemplates/web/default/reports/body.html4
-rw-r--r--templates/web/fixmindelo/footer.html54
-rw-r--r--templates/web/fixmindelo/static/privacy.html114
-rw-r--r--templates/web/fixmystreet/around/postcode_form.html5
-rwxr-xr-xtemplates/web/fixmystreet/faq/faq-en-gb.html34
-rw-r--r--templates/web/fixmystreet/footer.html11
-rw-r--r--templates/web/fixmystreet/header.html10
-rw-r--r--templates/web/fixmystreet/index.html8
-rw-r--r--templates/web/fixmystreet/my/my.html7
-rw-r--r--templates/web/hart/_hart_hants_note.html5
-rw-r--r--templates/web/hart/around/intro.html4
-rw-r--r--templates/web/hart/contact/submit.html19
-rwxr-xr-xtemplates/web/hart/faq/faq-en-gb.html132
-rw-r--r--templates/web/hart/footer.html110
-rw-r--r--templates/web/hart/header.html82
-rw-r--r--templates/web/hart/index-steps.html18
-rw-r--r--templates/web/hart/report/new/councils_extra_text.html10
-rw-r--r--templates/web/hart/tokens/confirm_problem.html21
-rw-r--r--templates/web/oxfordshire/around/extra_text.html5
-rw-r--r--templates/web/oxfordshire/around/intro.html2
-rw-r--r--templates/web/oxfordshire/footer.html23
-rw-r--r--templates/web/oxfordshire/js/translation_strings.html40
-rw-r--r--templates/web/oxfordshire/report/_council_sent_info.html16
-rw-r--r--templates/web/oxfordshire/report/new/councils_text_all.html29
-rw-r--r--templates/web/southampton/header.html2
-rw-r--r--templates/web/zurich/admin/body-form.html10
-rw-r--r--templates/web/zurich/admin/header.html1
-rw-r--r--templates/web/zurich/admin/list_updates.html31
-rw-r--r--templates/web/zurich/admin/problem_row.html8
-rw-r--r--templates/web/zurich/admin/report_edit-sdm.html7
-rw-r--r--templates/web/zurich/admin/report_edit.html32
-rw-r--r--templates/web/zurich/admin/reports.html1
-rw-r--r--templates/web/zurich/admin/stats.html2
-rw-r--r--templates/web/zurich/auth/general.html6
-rw-r--r--templates/web/zurich/js/validation_rules.html8
-rw-r--r--templates/web/zurich/report/new/fill_in_details_form.html5
-rw-r--r--templates/web/zurich/report/photo-js.html6
-rw-r--r--web/cobrands/barnet/_colours.scss7
-rw-r--r--web/cobrands/bellavistaenaccion/_colours.scss21
-rw-r--r--web/cobrands/bellavistaenaccion/base.scss7
-rw-r--r--web/cobrands/bellavistaenaccion/config.rb25
-rw-r--r--web/cobrands/bellavistaenaccion/layout.scss2
-rw-r--r--web/cobrands/bromley/_colours.scss8
-rw-r--r--web/cobrands/bromley/bromley.scss3
-rw-r--r--web/cobrands/bromley/layout.scss3
-rw-r--r--web/cobrands/default/_colours.scss7
-rw-r--r--web/cobrands/default/layout.scss37
-rw-r--r--web/cobrands/fixmindelo/_colours.scss7
-rw-r--r--web/cobrands/fixmindelo/base.scss32
-rw-r--r--web/cobrands/fixmindelo/images/link_sprites.pngbin0 -> 1037 bytes
-rw-r--r--web/cobrands/fixmindelo/layout.scss38
-rw-r--r--web/cobrands/fixmybarangay/_colours.scss9
-rw-r--r--web/cobrands/fixmybarangay/base.scss5
-rw-r--r--web/cobrands/fixmybarangay/layout.scss20
-rw-r--r--web/cobrands/fixmystreet/_colours.scss8
-rw-r--r--web/cobrands/fixmystreet/dashboard.scss5
-rw-r--r--web/cobrands/fixmystreet/fixmystreet.js20
-rw-r--r--web/cobrands/fixmystreet/fms-og_image.pngbin0 -> 17387 bytes
-rw-r--r--web/cobrands/fixmystreet/layout.scss27
-rw-r--r--web/cobrands/hart/_colours.scss20
-rw-r--r--web/cobrands/hart/base.scss104
-rw-r--r--web/cobrands/hart/config.rb25
-rwxr-xr-xweb/cobrands/hart/facebook-logo.pngbin0 -> 51475 bytes
-rw-r--r--web/cobrands/hart/favicon.icobin0 -> 318 bytes
-rw-r--r--web/cobrands/hart/favicon.pngbin0 -> 840 bytes
-rw-r--r--web/cobrands/hart/fms-logo.pngbin0 -> 4740 bytes
-rwxr-xr-xweb/cobrands/hart/gov-logo.pngbin0 -> 60982 bytes
-rw-r--r--web/cobrands/hart/hart-logo-inverse-small.gifbin0 -> 2653 bytes
-rwxr-xr-xweb/cobrands/hart/hart-logo-mobile.pngbin0 -> 2333 bytes
-rwxr-xr-xweb/cobrands/hart/hart-logo.pngbin0 -> 62406 bytes
-rw-r--r--web/cobrands/hart/hart.scss475
-rwxr-xr-xweb/cobrands/hart/home_mobile.pngbin0 -> 730 bytes
-rw-r--r--web/cobrands/hart/layout.scss49
-rw-r--r--web/cobrands/hart/main-menu-hover-home-right.gifbin0 -> 4299 bytes
-rw-r--r--web/cobrands/hart/main-menu1.gifbin0 -> 12809 bytes
-rwxr-xr-xweb/cobrands/hart/menu_mobile.pngbin0 -> 169 bytes
-rw-r--r--web/cobrands/hart/position_map.js21
-rw-r--r--web/cobrands/hart/tab-blue.pngbin0 -> 826 bytes
-rwxr-xr-xweb/cobrands/hart/twitter-logo.pngbin0 -> 51429 bytes
-rw-r--r--web/cobrands/oxfordshire/_colours.scss8
-rw-r--r--web/cobrands/oxfordshire/layout.scss99
-rw-r--r--web/cobrands/oxfordshire/position_map.js34
-rw-r--r--web/cobrands/sass/_base.scss22
-rw-r--r--web/cobrands/sass/_layout.scss255
-rw-r--r--web/cobrands/southampton/css/style.css26
-rw-r--r--web/cobrands/stevenage/_colours.scss7
-rw-r--r--web/cobrands/stevenage/layout.scss9
-rw-r--r--web/cobrands/zurich/_colours.scss9
-rw-r--r--web/cobrands/zurich/_zurich.scss9
-rw-r--r--web/cobrands/zurich/layout.scss24
-rw-r--r--web/i/external-link.pngbin0 -> 192 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/blank.gifbin0 -> 42 bytes
-rwxr-xr-xweb/js/OpenLayers-2.13.1/img/cloud-popup-relative.pngbin0 -> 4067 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/drag-rectangle-off.pngbin0 -> 1024 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/drag-rectangle-on.pngbin0 -> 1041 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/east-mini.pngbin0 -> 342 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/layer-switcher-maximize.pngbin0 -> 405 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/layer-switcher-minimize.pngbin0 -> 220 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/marker-blue.pngbin0 -> 758 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/marker-gold.pngbin0 -> 703 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/marker-green.pngbin0 -> 753 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/marker.pngbin0 -> 601 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/measuring-stick-off.pngbin0 -> 3028 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/measuring-stick-on.pngbin0 -> 3725 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/north-mini.pngbin0 -> 378 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/panning-hand-off.pngbin0 -> 3511 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/panning-hand-on.pngbin0 -> 3565 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/slider.pngbin0 -> 247 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/south-mini.pngbin0 -> 373 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/west-mini.pngbin0 -> 360 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/zoom-minus-mini.pngbin0 -> 291 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/zoom-plus-mini.pngbin0 -> 386 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/zoom-world-mini.pngbin0 -> 882 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/img/zoombar.pngbin0 -> 350 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/google.css9
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/google.tidy.css1
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/ie6-style.css10
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/ie6-style.tidy.css1
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/add_point_off.pngbin0 -> 1614 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/add_point_on.pngbin0 -> 1464 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/blank.gifbin0 -> 42 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/close.gifbin0 -> 1078 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-off.pngbin0 -> 1024 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-on.pngbin0 -> 1041 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/draw_line_off.pngbin0 -> 1565 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/draw_line_on.pngbin0 -> 1396 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/draw_point_off.pngbin0 -> 1610 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/draw_point_on.pngbin0 -> 1458 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_off.pngbin0 -> 1544 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_on.pngbin0 -> 1405 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/editing_tool_bar.pngbin0 -> 2222 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/move_feature_off.pngbin0 -> 1541 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/move_feature_on.pngbin0 -> 1377 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/navigation_history.pngbin0 -> 6628 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/overview_replacement.gifbin0 -> 79 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/pan-panel-NOALPHA.pngbin0 -> 564 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/pan-panel.pngbin0 -> 814 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/pan_off.pngbin0 -> 1696 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/pan_on.pngbin0 -> 1566 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-off.pngbin0 -> 3511 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-on.pngbin0 -> 3565 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/remove_point_off.pngbin0 -> 1612 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/remove_point_on.pngbin0 -> 1461 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/ruler.pngbin0 -> 1211 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/save_features_off.pngbin0 -> 354 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/save_features_on.pngbin0 -> 361 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/view_next_off.pngbin0 -> 1499 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/view_next_on.pngbin0 -> 1686 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/view_previous_off.pngbin0 -> 1476 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/view_previous_on.pngbin0 -> 1592 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel-NOALPHA.pngbin0 -> 1173 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel.pngbin0 -> 1285 bytes
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/style.css516
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/style.mobile.css70
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/style.mobile.tidy.css1
-rw-r--r--web/js/OpenLayers-2.13.1/theme/default/style.tidy.css1
-rw-r--r--web/js/OpenLayers.fixmystreet.google.js563
-rw-r--r--web/js/OpenLayers.fixmystreet.js1794
-rw-r--r--web/js/fixmystreet-admin.js79
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/animated-overlay.gifbin0 -> 1738 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.pngbin0 -> 212 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.pngbin0 -> 208 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.pngbin0 -> 335 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.pngbin0 -> 207 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.pngbin0 -> 262 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.pngbin0 -> 262 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.pngbin0 -> 332 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.pngbin0 -> 280 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.pngbin0 -> 6922 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.pngbin0 -> 4549 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.pngbin0 -> 6992 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.pngbin0 -> 6999 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.pngbin0 -> 4549 bytes
-rwxr-xr-xweb/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css7
-rwxr-xr-xweb/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js7
-rw-r--r--web/js/map-OpenLayers.js123
-rw-r--r--web/js/map-OpenStreetMap.js36
-rw-r--r--web/js/map-bing-ol.js3
-rw-r--r--web/js/map-bing.js22
-rw-r--r--web/js/map-google-ol.js19
-rw-r--r--web/js/map-streetview.js31
329 files changed, 17502 insertions, 8071 deletions
diff --git a/.gitignore b/.gitignore
index 709210437..eae1bd32f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,7 @@
*.ttc
-/cities_bin
-/private_locale
*~
._*
+
.DS_Store
.carton
local-lib5
@@ -25,11 +24,9 @@ FixMyBarangay.po
/web/cobrands/seesomething
/web/photo
/local
+/local-carton
/web/cobrands/fixmystreet/compass_app_log.txt
-blog/web/wp
-blog/conf/general
-blog/conf/general.deployed
phonegap/www/js/config.js
phonegap/Android/bin/
diff --git a/.travis.yml b/.travis.yml
index 709342dc8..3b362419f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,21 +10,12 @@ language: perl
perl:
- "5.14"
-branches:
- only:
- - master
-
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq jhead libgmp-dev
# A couple of other modules that normally come from packages, but no system stuff here
- cpanm -q Carton Locale::gettext Math::BigInt::GMP
-# This is because of a bug in its test (it's empty), and SOAP::Lite depends on it.
-# Would be good to not have SOAP::Lite as a dependency at all really.
- - cpanm -q DIME::Tools --force
-# And let's install the same version the carton.lock file currently has.
- - cpanm -q MKUTTER/SOAP-Lite-0.715.tar.gz
- - sudo locale-gen cy_GB.UTF-8 en_GB.UTF-8 nb_NO.UTF-8
+ - sudo locale-gen cy_GB.UTF-8 en_GB.UTF-8 nb_NO.UTF-8 de_CH.UTF-8
install:
- carton install --deployment
before_script:
@@ -34,10 +25,6 @@ before_script:
- psql fms postgres < db/generate_secret.sql
- >
sed -r -e "s,(FMS_DB_USER:) 'fms',\\1 'postgres',"
- -e "s,cobrand_one,fixmystreet,"
- -e "s,cobrand_two: 'hostname_substring2',fixmystreet: 'localhost',"
- -e "s,(BASE_URL:) 'http://www.example.org',\\1 'http://localhost',"
- -e "s,(MAPIT_URL:) '',\\1 'http://mapit.mysociety.org/',"
conf/general.yml-example > conf/general.yml
- ./bin/cron-wrapper ./bin/make_po FixMyStreet-EmptyHomes
- ./bin/cron-wrapper ./bin/make_emptyhomes_welsh_po
diff --git a/.tx/config b/.tx/config
index ec7301688..6023a14d1 100644
--- a/.tx/config
+++ b/.tx/config
@@ -2,8 +2,8 @@
host = https://www.transifex.com
type = PO
-[fixmystreet.v1-2]
+[fixmystreet.v1-3]
file_filter = locale/<lang>.UTF-8/LC_MESSAGES/FixMyStreet.po
source_file = locale/FixMyStreet.po
-source_lang = en
+source_lang = en_GB
diff --git a/README.md b/README.md
index da1ce5a05..482572885 100644
--- a/README.md
+++ b/README.md
@@ -14,10 +14,40 @@ RSS alerts of problems in their area.
It was created in 2007 by [mySociety](http://www.mysociety.org/) for reporting
problems to UK councils and has been copied around the world. The FixMyStreet
-Platform is now at version 1.2.4.
+Platform is now at version 1.3.
+
+## Installation
+
+We've been working hard to make the FixMyStreet Platform easy to install and
+re-use in other countries - please see our site at <http://code.fixmystreet.com/>
+for help and documentation in installing the FixMyStreet Platform.
## Releases
+* v1.3 (12th November 2013)
+ - Changes cobrand behaviour so if only one is specified, always use it. #598
+ - Allows multiple email addresses to be given for a contact.
+ - Bugfixes to pan icon placement, and bottom navbar in Chrome. #597
+ - Admin improvements
+ - Search by external ID. #389
+ - Date picker in stats. #514
+ - Mark external links. #579
+ - Fix for bug when changing report state from 'unconfirmed'. #527
+ - Improve lists of report updates.
+ - Add marking of bodies as deleted.
+ - Show version number of code on config page.
+ - Test suite runs regardless of config file contents. #596
+* v1.2.6 (11th October 2013)
+ - Upgrades OpenLayers to 2.13.1, for e.g. animated zooming.
+ - Adds facility for using Google Maps via OpenLayers. #587
+ - Swaps installation order of Perl modules/database, more robust. #573
+ - Renames default FakeMapIt "Default Area" to "Everywhere". #566
+ - Adds a "current configuration" admin page. #561
+* v1.2.5 (13th September 2013)
+ - Adds various useful hints and notices to the admin interface. #184
+ - Improves the install script, including an example Vagrantfile
+ - It is now easier for tests to override particular configuration
+ variables should they need to.
* v1.2.4 (5th September 2013)
- A fix for the long-standing issue where multiline strings were not being
translated (reported at https://github.com/abw/Template2/pull/29 )
@@ -25,13 +55,13 @@ Platform is now at version 1.2.4.
- Less noise when running the tests
* v1.2.3 (2nd September 2013)
- Maintenance release to deal with failing installation
- - Improve reuse of make_css and shared CSS
- - Remove hardcoded UK URLs on couple of admin error emails
- - Mark couple of strings missing translation
- - mapquest URL update
+ - Improves reuse of make_css and shared CSS
+ - Removes hardcoded UK URLs on a couple of admin error emails
+ - Marks a couple of strings missing translation
+ - Updates mapquest URLs
* v1.2.2 (26th July 2013)
- Maintenance release to deal with failing installation
- - Improve Google Maps plugin somewhat, though still needs work
+ - Improves the Google Maps plugin somewhat, though still needs work
* v1.2.1 (5th June 2013)
- Maintenance release to deal with failing carton installation
- Test and module fixes for installation on Debian wheezy
@@ -39,23 +69,23 @@ Platform is now at version 1.2.4.
- The install script adds gem environment variables to the user's .bashrc
so that make_css can be run directly after installation
- make_css automatically spots which cobrands use compass
- - Some missing states added to the admin report edit page
+ - Adds some missing states to the admin report edit page
* v1.2 (3rd May 2013)
- - Add MAPIT_ID_WHITELIST to allow easier use of global MapIt
- - Add postfix to the install script/ AMI so emailing works out of the box
- - Add an extra zoom level to the OSM maps
- - Add the Catalyst gzip plugin so HTML pages are gzipped
- - Fix an issue with the All Reports summary statistics not including some
+ - Adds MAPIT_ID_WHITELIST to allow easier use of global MapIt
+ - Adds postfix to the install script/ AMI so emailing works out of the box
+ - Adds an extra zoom level to the OSM maps
+ - Adds the Catalyst gzip plugin so HTML pages are gzipped
+ - Fixes an issue with the All Reports summary statistics not including some
open states, such as 'in progress'
* v1.1.2 (15th March 2013)
- - Include the 'cpanfile' now required by carton, the Perl package
+ - Includes the 'cpanfile' now required by carton, the Perl package
management program we use.
* v1.1.1 (22nd February 2013)
- Hotfix to fix missed iPhone width bug
* v1.1 (22nd February 2013)
- - Addition of bodies so that the organisations that reports are sent to can
- cover multiple MapIt administrative areas, or multiple bodies can cover
- one area, and other related scenarios
+ - Adds bodies, so that the organisations that reports are sent to can cover
+ multiple MapIt administrative areas, or multiple bodies can cover one
+ area, and other related scenarios
- Admin display improvements
- Internationalisation improvements, especially with text in JavaScript
- Various minor updates and fixes (e.g. a --debug option on send-reports,
@@ -63,12 +93,6 @@ Platform is now at version 1.2.4.
* v1.0 (24th October 2012)
- Official launch of the FixMyStreet platform
-## Installation
-
-We've been working hard to make FixMyStreet Platform easy to install and re-use
-in other countries - please see our site at <http://code.fixmystreet.com/> for
-help and documentation in installing FixMyStreet Platform.
-
## Examples
* <http://www.fixmystreet.com/>
diff --git a/bin/install-as-user b/bin/install-as-user
index 1d6cce982..b05616702 100755
--- a/bin/install-as-user
+++ b/bin/install-as-user
@@ -1,7 +1,10 @@
#!/bin/sh
set -e
-set -x
+error_msg() { printf "\033[31m%s\033[0m\n" "$*"; }
+notice_msg() { printf "\033[33m%s\033[0m " "$*"; }
+done_msg() { printf "\033[32m%s\033[0m\n" "$*"; }
+DONE_MSG=$(done_msg done)
if [ $# -ne 3 ]
then
@@ -14,6 +17,15 @@ fi
UNIX_USER="$1"
HOST="$2"
DIRECTORY="$3"
+
+misuse() {
+ echo The variable $1 was not defined, and it should be.
+ echo This script should not be run directly.
+ exit 1
+}
+
+[ -z "$DEVELOPMENT_INSTALL" ] && misuse DEVELOPMENT_INSTALL
+
DB_NAME="fixmystreet"
# Check that the arguments we've been passed are sensible:
@@ -22,19 +34,19 @@ IP_ADDRESS_FOR_HOST="$(dig +short $HOST)"
if [ x = x"$IP_ADDRESS_FOR_HOST" ]
then
- echo "The hostname $HOST didn't resolve to an IP address"
+ error_msg "The hostname $HOST didn't resolve to an IP address"
exit 1
fi
if ! id "$UNIX_USER" 2> /dev/null > /dev/null
then
- echo "The user '$UNIX_USER' didn't exist."
+ error_msg "The user '$UNIX_USER' didn't exist."
exit 1
fi
if [ "$(whoami)" != "$UNIX_USER" ]
then
- echo "This script should be run by the user '$UNIX_USER'."
+ error_msg "This script should be run by the user '$UNIX_USER'."
exit 1
fi
@@ -44,24 +56,23 @@ LINK_DESTINATION="$HOME/fixmystreet"
ln -sfn "$REPOSITORY" $LINK_DESTINATION
cd "$REPOSITORY"
-# Add regularly scheduled tasks to cron:
-
-TEMPORARY_CRONTAB=$(mktemp)
-
-echo crontab file is $TEMPORARY_CRONTAB
-
-cp "$REPOSITORY"/conf/crontab.example "$TEMPORARY_CRONTAB"
-
-sed -i \
- -e 's,$FMS,'"$REPOSITORY,g" \
- -e 's,$LOCK_DIR,'"$DIRECTORY,g" \
- "$TEMPORARY_CRONTAB"
-
-crontab $TEMPORARY_CRONTAB
+if [ ! "$DEVELOPMENT_INSTALL" = true ]; then
+ echo -n "Adding crontab... "
+ # Add regularly scheduled tasks to cron:
+ TEMPORARY_CRONTAB=$(mktemp)
+ echo crontab file is $TEMPORARY_CRONTAB
+ cp "$REPOSITORY"/conf/crontab-example "$TEMPORARY_CRONTAB"
+ sed -i \
+ -e 's,$FMS,'"$REPOSITORY,g" \
+ -e 's,$LOCK_DIR,'"$DIRECTORY,g" \
+ "$TEMPORARY_CRONTAB"
+ crontab $TEMPORARY_CRONTAB
+ echo $DONE_MSG
+fi
# Install the compass gem locally - it's required for generating the
# CSS:
-
+echo "Setting up CSS... "
export GEM_HOME="$DIRECTORY/gems"
mkdir -p "$GEM_HOME"
export GEM_PATH=
@@ -77,29 +88,39 @@ export PATH="\$GEM_HOME/bin:\$PATH"
EOBRC
fi
-gem install --no-ri --no-rdoc compass
+gem install --conservative --no-ri --no-rdoc sass -v 3.2.14
+gem install --conservative --no-ri --no-rdoc compass -v 0.12.2
# Use compass to generate the CSS, if it doesn't seem to already
# exist:
-
if [ ! -f web/cobrands/default/base.css ]
then
bin/make_css
fi
+echo $DONE_MSG
+
+# Write sensible values into the config file, if it doesn't already exist
+if [ ! -f conf/general.yml ]; then
+ echo -n "Setting up default conf/general.yml file... "
+ sed -r \
+ -e "s,^( *FMS_DB_HOST:).*,\\1 ''," \
+ -e "s,^( *FMS_DB_NAME:).*,\\1 '$DB_NAME'," \
+ -e "s,^( *FMS_DB_USER:).*,\\1 '$UNIX_USER'," \
+ -e "s,^( *BASE_URL:).*,\\1 'http://$HOST'," \
+ -e "s,^( *EMAIL_DOMAIN:).*,\\1 '$HOST'," \
+ -e "s,^( *CONTACT_EMAIL:).*,\\1 'help@$HOST'," \
+ -e "s,^( *DO_NOT_REPLY_EMAIL:).*,\\1 'help@$HOST'," \
+ conf/general.yml-example > conf/general.yml
+ echo $DONE_MSG
+fi
-# Write sensible values into the config file:
-
-sed -r \
- -e "s,^( *FMS_DB_HOST:).*,\\1 ''," \
- -e "s,^( *FMS_DB_NAME:).*,\\1 '$DB_NAME'," \
- -e "s,^( *FMS_DB_USER:).*,\\1 '$UNIX_USER'," \
- -e "s,^( *BASE_URL:).*,\\1 'http://$HOST'," \
- -e "s,^( *EMAIL_DOMAIN:).*,\\1 '$HOST'," \
- -e "s,^( *CONTACT_EMAIL:).*,\\1 'help@$HOST'," \
- -e "s,^( *DO_NOT_REPLY_EMAIL:).*,\\1 'help@$HOST'," \
- conf/general.yml-example > conf/general.yml
+echo "Installing required Perl modules - this may take some time"
+cd "$REPOSITORY"
+bin/install_perl_modules
+echo $DONE_MSG
# Create the database if it doesn't exist:
+echo -n "Setting up database... "
if ! psql -l | egrep "^ *$DB_NAME *\|" > /dev/null
then
createdb --owner "$UNIX_USER" "$DB_NAME"
@@ -107,16 +128,16 @@ then
psql -U "$UNIX_USER" "$DB_NAME" < "$REPOSITORY"/db/schema.sql
psql -U "$UNIX_USER" "$DB_NAME" < "$REPOSITORY"/db/alert_types.sql
psql -U "$UNIX_USER" "$DB_NAME" < "$REPOSITORY"/db/generate_secret.sql
+else
+ bin/cron-wrapper update-schema --commit
fi
-
-# Install the required Perl modules - this may take a very long time:
-
-cd "$REPOSITORY"
-bin/install_perl_modules
+echo $DONE_MSG
# Generate po and mo files (these invocations taken from Kagee's script):
-
+echo "Creating locale .mo files"
bin/cron-wrapper bin/make_po FixMyStreet-EmptyHomes
bin/cron-wrapper bin/make_emptyhomes_welsh_po
-
commonlib/bin/gettext-makemo FixMyStreet
+echo $DONE_MSG
+
+bin/cron-wrapper update-all-reports
diff --git a/bin/install_perl_modules b/bin/install_perl_modules
index 2311ae5f1..883ced235 100755
--- a/bin/install_perl_modules
+++ b/bin/install_perl_modules
@@ -4,18 +4,18 @@ set -e
DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd | sed -e 's/\/bin$//' )"
-$DIR/bin/cpanm -l $DIR/local Carton
+$DIR/bin/cpanm -l $DIR/local-carton Carton
-export PATH=$DIR/local/bin:$PATH
-export PERL5LIB=$DIR/local/lib/perl5
+export PATH=$DIR/local-carton/bin:$PATH
+export PERL5LIB=$DIR/local-carton/lib/perl5
-carton install --deployment
+carton install --deployment --without uk
if ! perl -MImage::Magick -e 'exit()' >/dev/null 2>&1
then
read -p "Image::Magick is not installed. Do you want to attempt to install it?" yn
case $yn in
- [Yy]* ) $DIR/local/bin/carton install Image::Magick;;
+ [Yy]* ) $DIR/local-carton/bin/carton install Image::Magick;;
* ) echo 'You will need to install it for FixMyStreet to work';;
esac
fi
diff --git a/bin/problem-creation-graph b/bin/problem-creation-graph
index b96d45540..2ee38783c 100755
--- a/bin/problem-creation-graph
+++ b/bin/problem-creation-graph
@@ -49,13 +49,13 @@ function grab_data {
grab_data "" $SOURCEA
grab_data "where state not in ('unconfirmed')" $SOURCEB
grab_data "where state not in ('unconfirmed', 'confirmed')" $SOURCEC
-grab_data "where state not in ('unconfirmed', 'confirmed', 'fixed')" $SOURCED
-grab_data "where state not in ('unconfirmed', 'confirmed', 'fixed', 'hidden')" $SOURCEE
+grab_data "where state not in ('unconfirmed', 'confirmed', 'fixed', 'fixed - council', 'fixed - user')" $SOURCED
+grab_data "where state not in ('unconfirmed', 'confirmed', 'fixed', 'fixed - council', 'fixed - user', 'hidden')" $SOURCEE
#state = 'unconfirmed'
#or state = 'confirmed'
-#or state = 'fixed'
+#or state in ('fixed', 'fixed - council', 'fixed - user')
#or state = 'hidden'
#or state = 'partial'
@@ -96,7 +96,7 @@ if [ -s $SOURCED ]; then
echo -n >>$GPSCRIPT " \"$SOURCED\" using 1:2 with impulses lt 6 lw 15 title \"hidden\","
fi
if [ -s $SOURCEE ]; then
-echo -n >>$GPSCRIPT " \"$SOURCEE\" using 1:2 with impulses lt 7 lw 15 title \"partial (and any other types)\","
+echo -n >>$GPSCRIPT " \"$SOURCEE\" using 1:2 with impulses lt 7 lw 15 title \"any other type\","
fi
cat >>$GPSCRIPT <<END
"< awk 'BEGIN { n = 0 } { n += \$2; print \$1, \$2, n; }' $SOURCEA" using 1:3 axes x1y2 with lines lt 2 title "cumulative total number of problems"
diff --git a/bin/site-specific-install.sh b/bin/site-specific-install.sh
index d3da12104..3cc84007a 100644
--- a/bin/site-specific-install.sh
+++ b/bin/site-specific-install.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Set this to the version we want to check out
-VERSION=${VERSION_OVERRIDE:-v1.2.4}
+VERSION=${VERSION_OVERRIDE:-v1.3}
PARENT_SCRIPT_URL=https://github.com/mysociety/commonlib/blob/master/bin/install-site.sh
@@ -25,25 +25,33 @@ misuse() {
[ -z "$HOST" ] && misuse HOST
[ -z "$DISTRIBUTION" ] && misuse DISTRIBUTION
[ -z "$VERSION" ] && misuse VERSION
+[ -z "$DEVELOPMENT_INSTALL" ] && misuse DEVELOPMENT_INSTALL
-install_nginx
+add_locale cy_GB
+add_locale nb_NO
+add_locale de_CH
install_postfix
-# Check out the current released version
-su -l -c "cd '$REPOSITORY' && git checkout '$VERSION'" "$UNIX_USER"
+if [ ! "$DEVELOPMENT_INSTALL" = true ]; then
+ install_nginx
+ add_website_to_nginx
+ # Check out the current released version
+ su -l -c "cd '$REPOSITORY' && git checkout '$VERSION' && git submodule update" "$UNIX_USER"
+fi
install_website_packages
su -l -c "touch '$DIRECTORY/admin-htpasswd'" "$UNIX_USER"
-add_website_to_nginx
-
add_postgresql_user
-su -l -c "$REPOSITORY/bin/install-as-user '$UNIX_USER' '$HOST' '$DIRECTORY'" "$UNIX_USER"
+export DEVELOPMENT_INSTALL
+su -c "$REPOSITORY/bin/install-as-user '$UNIX_USER' '$HOST' '$DIRECTORY'" "$UNIX_USER"
-install_sysvinit_script
+if [ ! "$DEVELOPMENT_INSTALL" = true ]; then
+ install_sysvinit_script
+fi
if [ $DEFAULT_SERVER = true ] && [ x != x$EC2_HOSTNAME ]
then
diff --git a/bin/update-schema b/bin/update-schema
index 198fa6b8d..be5bc50e7 100644..100755
--- a/bin/update-schema
+++ b/bin/update-schema
@@ -19,13 +19,14 @@ use mySociety::DBHandle qw(dbh);
use mySociety::MaPit;
mySociety::Config::set_file("$FindBin::Bin/../conf/general");
-mySociety::DBHandle::configure(
+my %args = (
Name => mySociety::Config::get('FMS_DB_NAME'),
User => mySociety::Config::get('FMS_DB_USER'),
Password => mySociety::Config::get('FMS_DB_PASS'),
- Host => mySociety::Config::get('FMS_DB_HOST', undef),
- Port => mySociety::Config::get('FMS_DB_PORT', undef)
);
+$args{Host} = mySociety::Config::get('FMS_DB_HOST', undef) if mySociety::Config::get('FMS_DB_HOST');
+$args{Port} = mySociety::Config::get('FMS_DB_PORT', undef) if mySociety::Config::get('FMS_DB_PORT');
+mySociety::DBHandle::configure( %args );
my $commit = 0;
$commit = 1 if @ARGV && $ARGV[0] eq '--commit';
@@ -85,6 +86,8 @@ print "Nothing to do\n" if $nothing;
# (assuming schema change files are never half-applied, which should be the case)
sub get_db_version {
return '0031' if column_exists('body', 'external_url');
+ return '0030' if ! constraint_exists('admin_log_action_check');
+ return '0029' if column_exists('body', 'deleted');
return '0028' if table_exists('body');
return '0027' if column_exists('problem', 'subcategory');
return '0026' if column_exists('open311conf', 'send_extended_statuses');
@@ -133,3 +136,10 @@ sub column_like {
my ( $table, $where, $column, $contents ) = @_;
return dbh()->selectrow_array("select count(*) from $table WHERE $where AND $column LIKE ?", {}, "%$contents%");
}
+
+# Returns true if a check constraint on a table exists
+sub constraint_exists {
+ my ( $constraint ) = @_;
+ return dbh()->selectrow_array('select count(*) from pg_constraint where conname = ?', {}, $constraint);
+}
+
diff --git a/bin/zurich-overdue-alert b/bin/zurich-overdue-alert
index 4a507c481..500c6b016 100755
--- a/bin/zurich-overdue-alert
+++ b/bin/zurich-overdue-alert
@@ -23,9 +23,9 @@ exit if FixMyStreet::Cobrand::Zurich::is_public_holiday($now) or FixMyStreet::Co
my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker('zurich')->new();
my %bodies = map { $_->id => $_ } FixMyStreet::App->model("DB::Body")->all;
-loop_through( 'alert-moderation-overdue.txt', 0, 1, [ 'unconfirmed', 'confirmed' ] );
+loop_through( 'alert-moderation-overdue.txt', 0, 1, [ 'unconfirmed' ] );
loop_through( 'alert-overdue.txt', 1, 6, 'in progress' );
-loop_through( 'alert-overdue.txt', 0, 6, 'planned' );
+loop_through( 'alert-overdue.txt', 0, 6, ['confirmed', 'planned'] );
sub loop_through {
my ( $template, $include_parent, $days, $states ) = @_;
diff --git a/bin/zurich/convert_internal_notes_to_comments b/bin/zurich/convert_internal_notes_to_comments
new file mode 100755
index 000000000..ddf74851f
--- /dev/null
+++ b/bin/zurich/convert_internal_notes_to_comments
@@ -0,0 +1,73 @@
+#!/usr/bin/env perl
+
+=head1 DESCRIPTION
+
+This is a Zurich specific migration script.
+
+It converts the internal notes that used to be stored on the problem in the
+extra hash into comments instead.
+
+ ./bin/zurich/convert_internal_notes_to_comments user_id
+
+You need to select a user to have the internal notes be associated with, perhaps
+the superuser, or one created just for this purpose?
+
+=cut
+
+use strict;
+use warnings;
+
+use FixMyStreet::App;
+
+# Because it is not possible to determine the user that last edited the
+# internal_notes we need require a user to assign all the comments to.
+my $comment_user_id = $ARGV[0]
+ || die "Usage: $0 id_of_user_for_comments";
+my $comment_user = FixMyStreet::App #
+ ->model('DB::User') #
+ ->find($comment_user_id)
+ || die "Could not find user with id '$comment_user_id'";
+
+# We use now as the time for the internal note. This is not the time it was
+# actually created, but I don't think that can be extracted from the problem.
+my $comment_timestamp = DateTime->now();
+
+# The state of 'hidden' seems most appropriate for these internal_notes - as
+# they should not be shown to the public. Certainly more suitable than
+# 'unconfirmed' or 'confirmed'.
+my $comment_state = 'hidden';
+
+# Load all the comments, more reliable than trying to search on the contents of
+# the extra field.
+my $problems = FixMyStreet::App->model('DB::Problem')->search();
+
+while ( my $problem = $problems->next() ) {
+
+ my $problem_id = $problem->id;
+
+ # Extract the bits we are interested in. May not exist, in which case
+ # skip on.
+ my $extra = $problem->extra || {};
+ next unless exists $extra->{internal_notes};
+
+ # If there is something to save create a comment with the notes in them
+ if ( my $internal_notes = $extra->{internal_notes} ) {
+ print "Creating internal note comment for problem '$problem_id'\n";
+ $problem->add_to_comments(
+ {
+ text => $internal_notes,
+ created => $comment_timestamp,
+ user => $comment_user,
+ state => $comment_state,
+ mark_fixed => 0,
+ anonymous => 1,
+ extra => { is_internal_note => 1 },
+ }
+ );
+ }
+
+ # Remove the notes from extra and save back to the problem
+ delete $extra->{internal_notes};
+ $problem->update({ extra => $extra });
+}
+
diff --git a/commonlib b/commonlib
-Subproject 9582d37bc63e51581d90fdee59bafedd5863f09
+Subproject 4e67698fa8d8b25b71b1baaf1a1856dcd566e5a
diff --git a/conf/.gitignore b/conf/.gitignore
index f0c34fd29..8fa665744 100644
--- a/conf/.gitignore
+++ b/conf/.gitignore
@@ -2,3 +2,5 @@
/general.yml.deployed
/httpd.conf
/httpd.conf.deployed
+/crontab
+/crontab.deployed
diff --git a/conf/Vagrantfile.example b/conf/Vagrantfile.example
new file mode 100755
index 000000000..98b77dcc4
--- /dev/null
+++ b/conf/Vagrantfile.example
@@ -0,0 +1,82 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+BOX_NAME = ENV['BOX_NAME'] || "precise64"
+BOX_URI = ENV['BOX_URI'] || "http://files.vagrantup.com/precise64.box"
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+ # All Vagrant configuration is done here. The most common configuration
+ # options are documented and commented below. For a complete reference,
+ # please see the online documentation at vagrantup.com.
+
+ # Every Vagrant virtual environment requires a box to build off of.
+ config.vm.box = BOX_NAME
+
+ # The url from where the 'config.vm.box' box will be fetched if it
+ # doesn't already exist on the user's system.
+ config.vm.box_url = BOX_URI
+
+ # Create a forwarded port mapping which allows access to a specific port
+ # within the machine from a port on the host machine. In the example below,
+ # accessing "localhost:8080" will access port 80 on the guest machine.
+ config.vm.network :forwarded_port, guest: 3000, host: 3000
+
+ config.vm.provider "virtualbox" do |v|
+ v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
+ end
+
+ config.vm.provision :shell, :inline => <<-EOS
+ # To prevent "dpkg-preconfigure: unable to re-open stdin: No such file or directory" warnings
+ export DEBIAN_FRONTEND=noninteractive
+ # To be in the shared directory where the repository might already be
+ cd /vagrant/
+ # We need curl to fetch the install script
+ apt-get update -qq
+ apt-get install -qq -y curl >/dev/null
+ curl -s -O https://raw.github.com/mysociety/commonlib/master/bin/install-site.sh
+ sh install-site.sh --dev fixmystreet vagrant 127.0.0.1.xip.io
+ # All done
+ echo "****************"
+ echo "You can now ssh into your vagrant box: vagrant ssh"
+ echo "The website code is found in: ~/fixmystreet"
+ echo "You can run the dev server with: bin/cron-wrapper script/fixmystreet_app_server.pl [-d] [-r] [--fork]"
+ EOS
+
+ # Create a private network, which allows host-only access to the machine
+ # using a specific IP.
+ # config.vm.network :private_network, ip: "192.168.33.10"
+
+ # Create a public network, which generally matched to bridged network.
+ # Bridged networks make the machine appear as another physical device on
+ # your network.
+ # config.vm.network :public_network
+
+ # If true, then any SSH connections made will enable agent forwarding.
+ # Default value: false
+ # config.ssh.forward_agent = true
+
+ # Share an additional folder to the guest VM. The first argument is
+ # the path on the host to the actual folder. The second argument is
+ # the path on the guest to mount the folder. And the optional third
+ # argument is a set of non-required options.
+ # config.vm.synced_folder "../data", "/vagrant_data"
+
+ # Provider-specific configuration so you can fine-tune various
+ # backing providers for Vagrant. These expose provider-specific options.
+ # Example for VirtualBox:
+ #
+ # config.vm.provider :virtualbox do |vb|
+ # # Don't boot with headless mode
+ # vb.gui = true
+ #
+ # # Use VBoxManage to customize the VM. For example to change memory:
+ # vb.customize ["modifyvm", :id, "--memory", "1024"]
+ # end
+ #
+ # View the documentation for the provider you're using for more
+ # information on available options.
+
+end
diff --git a/conf/crontab.example b/conf/crontab-example
index 47c018573..47c018573 100644
--- a/conf/crontab.example
+++ b/conf/crontab-example
diff --git a/conf/crontab.ugly b/conf/crontab.ugly
deleted file mode 100644
index c85d3f119..000000000
--- a/conf/crontab.ugly
+++ /dev/null
@@ -1,83 +0,0 @@
-# crontab.ugly:
-# Timed tasks for FixMyStreet. Template file.
-#
-# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
-# Email: matthew@mysociety.org. WWW: http://www.mysociety.org/
-#
-# $Id: crontab.ugly,v 1.23 2010-01-07 10:32:24 louise Exp $
-
-PATH=/usr/local/bin:/usr/bin:/bin
-!!(* if ($vhost eq 'www.fixmystreet.com' || $vhost eq 'reportemptyhomes.com') { *)!!
-MAILTO=cron-!!(*= $site *)!!@mysociety.org
-!!(* } else { *)!!
-MAILTO=!!(*= $user *)!!@mysociety.org
-!!(* } *)!!
-
-!!(*
-
-my @sending = qw(
- www.fixmystreet.com
- bromley.test.mysociety.org
- stevenage.test.mysociety.org
- barnet.fixmystreet.staging.mysociety.org
- oxfordshire.fixmystreet.staging.mysociety.org
- fixmybarangay.test.mysociety.org
- demo.fixmybarangay.com
- www.fixmybarangay.com
- zurich.fixmystreet.staging.mysociety.org
- www.zueriwieneu.ch
- seesomething.mysociety.org
-);
-my @no_alerts = qw(
- zurich.fixmystreet.staging.mysociety.org
- www.zueriwieneu.ch
- seesomething.mysociety.org
-);
-my @no_open311 = qw(
- zurich.fixmystreet.staging.mysociety.org
- www.zueriwieneu.ch
- seesomething.mysociety.org
-);
-my %sending = map { $_ => 1 } @sending;
-my %no_alerts = map { $_ => 1 } @no_alerts;
-
-*)!!
-
-!!(* if ($sending{$vhost}) { *)!!
-# Sending of reports
-5,10,15,20,25,30,35,40,45,50,55 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-reports.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-reports" || echo "stalled?"
-0 0-7,9-11,13-15,17-23 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-reports.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-reports" || echo "stalled?"
-0 8,12,16 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-reports.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-reports --verbose" || echo "stalled?"
-
-!!(* if (!$no_alerts{$vhost}) { *)!!
-# Sending of alerts and questionnaires
-2 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-alerts.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-alerts" || echo "stalled?"
-0,30 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-questionnaires.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-questionnaires" || echo "stalled?"
-!!(* } *)!!
-
-!!(* if (!$no_open311{$vhost}) { *)!!
-# Open311 sending and fetching of updates
-5,10,15,20,25,30,35,40,45,50,55 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/send-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper send-comments" || echo "stalled?"
-5,10,15,20,25,30,35,40,45,50,55 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments" || echo "stalled?"
-0 8 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments --verbose" || echo "stalled?"
-0 1 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/fetch-comments.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper fetch-comments-24hs" || echo "stalled?"
-
-# Open311 service list population
-30 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/open311-populate-service-list.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper open311-populate-service-list" || echo "stalled?"
-0 0-7,9-23 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/open311-populate-service-list.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper open311-populate-service-list" || echo "stalled?"
-0 8 * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/open311-populate-service-list.lock "/data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper open311-populate-service-list --warn" || echo "stalled?"
-!!(* } *)!!
-
-!!(* } *)!!
-
-# Once an hour, update the all reports stats
-13 * * * * !!(*= $user *)!! /data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper update-all-reports
-
-# Once a day on all servers
-39 2 * * * !!(*= $user *)!! /data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/problems-filed-graph
-43 2 * * * !!(*= $user *)!! /data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/problem-creation-graph
-00 8 * * * !!(*= $user *)!! /data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/check-for-zombies !!(*= $user *)!!
-
-!!(* if ($vhost =~ /zurich|zueri/) { *)!!
-30 0 * * * !!(*= $user *)!! /data/vhost/!!(*= $vhost *)!!/fixmystreet/bin/cron-wrapper zurich-overdue-alert
-!!(* } *)!!
diff --git a/conf/general.yml-example b/conf/general.yml-example
index d30c494ca..f5fb89b64 100644
--- a/conf/general.yml-example
+++ b/conf/general.yml-example
@@ -121,15 +121,28 @@ GEOCODING_DISAMBIGUATION: ''
MAP_TYPE: 'OSM'
# FixMyStreet uses a templating cobrand system to provide different looks for
-# different installations. If your site was at moon.example.org, and your templates
-# were in the templates/web/moon directory, you would use:
+# different installations. In the common case, if your templates are in the
+# templates/web/moon directory and CSS in web/cobrands/moon, you just specify:
# ALLOWED_COBRANDS:
-# - moon: 'moon.example.org'
+# - moon
+# If you wish to use multiple cobrands, specify them in a list, optionally with
+# hostname-matching regular expressions if the name of the cobrand is not
+# enough. For example:
+# ALLOWED_COBRANDS:
+# - moon
+# - venus
+# Any hostname with 'moon' in it will use the moon cobrand, any with 'venus'
+# the venus cobrand (any other the Default cobrand). Whereas:
+# ALLOWED_COBRANDS:
+# - moon: 'orbital'
+# - venus
+# Any hostname with 'orbital' in it will use the moon cobrand.
# This also allows development servers to map to different cobrands if needed,
# using DNS subdomains for example.
ALLOWED_COBRANDS:
- - cobrand_one
- - cobrand_two: 'hostname_substring2'
+ - cobrand1
+ - cobrand2: 'hostname_substring2'
+ - cobrand3
# This is only used in "offensive report" emails to provide a link directly to
# the admin interface. If wanted, set to the full URL of your admin interface.
@@ -166,3 +179,4 @@ LONDON_REPORTIT_KEY: ''
LONDON_REPORTIT_SECRET: ''
AUTH_SHARED_SECRET: ''
HEARFROMYOURMP_BASE_URL: ''
+
diff --git a/conf/packages b/conf/packages
index b5287718b..123595395 120000
--- a/conf/packages
+++ b/conf/packages
@@ -1 +1 @@
-packages.debian-squeeze+testing \ No newline at end of file
+packages.debian-wheezy \ No newline at end of file
diff --git a/conf/packages.debian-wheezy b/conf/packages.debian-wheezy
index d93a2eceb..618d3be43 100644
--- a/conf/packages.debian-wheezy
+++ b/conf/packages.debian-wheezy
@@ -9,8 +9,7 @@ perlmagick
libmath-bigint-gmp-perl
gettext
ruby-compass
-postgresql-9.1
-postgresql-server-dev-9.1
+postgresql-server-dev-9.1 | postgresql-server-dev-8.4
gnuplot
ttf-bitstream-vera
libexpat1-dev
diff --git a/cpanfile b/cpanfile
index 1167436f7..e5f71cdbe 100644
--- a/cpanfile
+++ b/cpanfile
@@ -67,11 +67,10 @@ requires 'Readonly';
requires 'Regexp::Common';
requires 'Scalar::Util';
requires 'SOAP::Lite';
-# Required by Barnet sending, currently fails to install, no-one else needs it.
-# requires 'SOAP::WSDL';
requires 'Statistics::Distributions';
requires 'Storable';
requires 'Template::Plugin::Comma';
+requires 'Text::CSV';
requires 'URI';
requires 'URI::Escape';
requires 'URI::QueryParam';
@@ -79,6 +78,21 @@ requires 'XML::RSS';
requires 'XML::Simple';
requires 'YAML';
+# SOAP::Lite isn't needed by all cobrands, but it would require
+# code changes to only be imported when installed.
+
+feature 'uk', 'FixMyStreet.com specific requirements' => sub {
+# # East Hampshire
+# requires 'SOAP::Lite';
+ # Barnet
+ requires 'SOAP::WSDL';
+};
+
+#feature 'zurich', 'Zueri wie neu specific requirements' => sub {
+# # Geocoder
+# requires 'SOAP::Lite';
+#};
+
# Modules used by the test suite
requires 'CGI::Simple';
requires 'HTTP::Headers';
diff --git a/cpanfile.snapshot b/cpanfile.snapshot
index f73c2ae7f..16f4f3b95 100644
--- a/cpanfile.snapshot
+++ b/cpanfile.snapshot
@@ -15,61 +15,6 @@ DISTRIBUTIONS
Algorithm::DiffOld 1.1
requirements:
ExtUtils::MakeMaker 0
- App-FatPacker-0.009018
- pathname: E/ET/ETHER/App-FatPacker-0.009018.tar.gz
- provides:
- App::FatPacker 0.009018
- App::FatPacker::Trace undef
- requirements:
- App-cpanminus-1.6940
- pathname: M/MI/MIYAGAWA/App-cpanminus-1.6940.tar.gz
- provides:
- A undef
- App::cpanminus 1.6940
- App::cpanminus::CPANVersion undef
- App::cpanminus::CommandExit undef
- App::cpanminus::Dependency undef
- App::cpanminus::ParsePM 0.04
- App::cpanminus::fatscript 1.6928
- App::cpanminus::script undef
- CPAN::DistnameInfo 0.12
- CPAN::Meta 2.132140
- CPAN::Meta::Check 0.007
- CPAN::Meta::Converter 2.132140
- CPAN::Meta::Feature 2.132140
- CPAN::Meta::History 2.132140
- CPAN::Meta::Prereqs 2.132140
- CPAN::Meta::Requirements 2.122
- CPAN::Meta::Spec 2.132140
- CPAN::Meta::Validator 2.132140
- CPAN::Meta::YAML 0.008
- Exporter 5.68
- Exporter::Heavy 5.63
- File::pushd 1.005
- Foo undef
- HTTP::Tiny 0.034
- JSON::PP 2.27202
- JSON::PP::Boolean undef
- JSON::PP::IncrParser 1.01
- Module::CPANfile 1.0001
- Module::CPANfile::Environment undef
- Module::CPANfile::Result undef
- Module::Metadata 1.000014
- ModuleBuildSkipMan undef
- My undef
- Parse::CPAN::Meta 1.4405
- String::ShellQuote 1.04
- YourModule undef
- aliased 0.31
- charstar undef
- lib::core::only undef
- local::lib 1.008011
- version 0.9902
- version::vpp 0.9902
- requirements:
- ExtUtils::Install 1.46
- ExtUtils::MakeMaker 6.31
- Module::Build 0.36
AppConfig-1.66
pathname: A/AB/ABW/AppConfig-1.66.tar.gz
provides:
@@ -119,6 +64,16 @@ DISTRIBUTIONS
CPAN::Meta::Spec 2.132140
CPAN::Meta::Validator 2.132140
requirements:
+ CPAN::Meta::Requirements 2.121
+ CPAN::Meta::YAML 0.008
+ Carp 0
+ ExtUtils::MakeMaker 6.30
+ JSON::PP 2.27200
+ Parse::CPAN::Meta 1.4403
+ Scalar::Util 0
+ strict 0
+ version 0.88
+ warnings 0
CPAN-Meta-Check-0.004
pathname: L/LE/LEONT/CPAN-Meta-Check-0.004.tar.gz
provides:
@@ -140,11 +95,32 @@ DISTRIBUTIONS
provides:
CPAN::Meta::Requirements 2.122
requirements:
+ Carp 0
+ ExtUtils::MakeMaker 6.17
+ File::Find 0
+ File::Temp 0
+ Scalar::Util 0
+ Test::More 0.88
+ strict 0
+ version 0.77
+ warnings 0
CPAN-Meta-YAML-0.008
pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.008.tar.gz
provides:
CPAN::Meta::YAML 0.008
requirements:
+ Carp 0
+ Exporter 0
+ ExtUtils::MakeMaker 6.17
+ File::Find 0
+ File::Spec 0
+ File::Spec::Functions 0
+ File::Temp 0
+ Scalar::Util 0
+ Test::More 0
+ strict 0
+ vars 0
+ warnings 0
Cache-Memcached-1.30
pathname: D/DO/DORMANDO/Cache-Memcached-1.30.tar.gz
provides:
@@ -156,11 +132,6 @@ DISTRIBUTIONS
Storable 0
String::CRC32 0
Time::HiRes 0
- Capture-Tiny-0.22
- pathname: D/DA/DAGOLDEN/Capture-Tiny-0.22.tar.gz
- provides:
- Capture::Tiny 0.22
- requirements:
Carp-1.26
pathname: Z/ZE/ZEFRAM/Carp-1.26.tar.gz
provides:
@@ -199,48 +170,6 @@ DISTRIBUTIONS
requirements:
ExtUtils::MakeMaker 0
Test::Exception 0
- Carton-v1.0.7
- pathname: M/MI/MIYAGAWA/Carton-v1.0.7.tar.gz
- provides:
- Carton v1.0.7
- Carton::Builder undef
- Carton::CLI undef
- Carton::CPANfile undef
- Carton::Dependency undef
- Carton::Dist undef
- Carton::Dist::Core undef
- Carton::Environment undef
- Carton::Error undef
- Carton::Index undef
- Carton::Mirror undef
- Carton::Package undef
- Carton::Packer undef
- Carton::Snapshot undef
- Carton::Snapshot::Emitter undef
- Carton::Snapshot::Parser undef
- Carton::Tree undef
- Carton::Util undef
- requirements:
- App::FatPacker 0.009018
- App::cpanminus 1.694
- CPAN::Meta 2.120921
- CPAN::Meta::Requirements 2.121
- Exception::Class 1.32
- ExtUtils::MakeMaker 6.64
- File::pushd 0
- Getopt::Long 2.39
- JSON 2.53
- Module::Build 0.4004
- Module::CPANfile 0.9031
- Module::CoreList 0
- Module::Metadata 1.000003
- Module::Reader 0.002
- Moo 1.002
- Path::Tiny 0.022
- Try::Tiny 0.09
- parent 0.223
- perl v5.8.5
- version 0.77
Catalyst-Action-RenderView-0.16
pathname: B/BO/BOBTFISH/Catalyst-Action-RenderView-0.16.tar.gz
provides:
@@ -825,6 +754,26 @@ DISTRIBUTIONS
Class::Singleton 1.4
requirements:
ExtUtils::MakeMaker 0
+ Class-Std-0.011
+ pathname: D/DC/DCONWAY/Class-Std-0.011.tar.gz
+ provides:
+ Class::Std 0.011
+ Class::Std::SCR 0.011
+ requirements:
+ Data::Dumper 0
+ Scalar::Util 0
+ Test::More 0
+ Class-Std-Fast-v0.0.8
+ pathname: A/AC/ACID/Class-Std-Fast-v0.0.8.tar.gz
+ provides:
+ Class::Std::Fast 0.000008
+ Class::Std::Fast::Storable 0.000008
+ requirements:
+ Class::Std v0.0.8
+ Data::Dumper 0
+ Scalar::Util 0
+ Test::More 0
+ version 0
Class-Unload-0.07
pathname: I/IL/ILMARI/Class-Unload-0.07.tar.gz
provides:
@@ -2413,11 +2362,6 @@ DISTRIBUTIONS
ExtUtils::CBuilder 0.27
ExtUtils::MakeMaker 0
perl 5.006
- Devel-Hide-0.0009
- pathname: F/FE/FERREIRA/Devel-Hide-0.0009.tar.gz
- provides:
- Devel::Hide 0.0009
- requirements:
Devel-StackTrace-1.30
pathname: D/DR/DROLSKY/Devel-StackTrace-1.30.tar.gz
provides:
@@ -2466,7 +2410,45 @@ DISTRIBUTIONS
Dist-CheckConflicts-0.09
pathname: D/DO/DOY/Dist-CheckConflicts-0.09.tar.gz
provides:
+ Bar 0.02
+ Bar::Bar 0.01
+ Bar::Bar::Bad 0.01
+ Bar::Bar::Good 0.02
+ Bar::Baz 0.02
+ Bar::Baz::Bad 0.01
+ Bar::Baz::Good 0.02
+ Bar::Conflicts undef
+ Bar::Conflicts2 undef
+ Bar::Conflicts3 undef
+ Bar::Conflicts::Bad undef
+ Bar::Conflicts::Bad2 undef
+ Bar::Conflicts::Bad3 undef
+ Bar::Conflicts::Good undef
+ Bar::Conflicts::Good2 undef
+ Bar::Conflicts::Good3 undef
+ Bar::Foo 0.01
+ Bar::Foo::Bad 0.01
+ Bar::Foo::Good 0.02
+ Bar::Quux 0.02
+ Bar::Quux::Bad 0.01
+ Bar::Quux::Good 0.02
+ Bar::Three 0.02
+ Bar::Two 0.02
+ Broken undef
Dist::CheckConflicts 0.09
+ Foo undef
+ Foo::Bar 0.01
+ Foo::Baz 0.02
+ Foo::Conflicts undef
+ Foo::Conflicts2 undef
+ Foo::Conflicts::Bad undef
+ Foo::Conflicts::Broken undef
+ Foo::Conflicts::Good undef
+ Foo::Foo 0.01
+ Foo::Quux 0.02
+ Foo::Thing 0.02
+ Foo::Three 0.02
+ Foo::Two 0.02
requirements:
Carp 0
Exporter 0
@@ -2594,23 +2576,6 @@ DISTRIBUTIONS
Test::More 0.88
Test::Requires 0
Try::Tiny 0
- Exception-Class-1.37
- pathname: D/DR/DROLSKY/Exception-Class-1.37.tar.gz
- provides:
- Exception::Class 1.37
- Exception::Class::Base 1.37
- requirements:
- Class::Data::Inheritable 0.02
- Devel::StackTrace 1.20
- ExtUtils::MakeMaker 6.30
- File::Spec 0
- Scalar::Util 0
- Test::More 0.88
- base 0
- overload 0
- strict 0
- vars 0
- warnings 0
ExtUtils-CBuilder-0.280205
pathname: D/DA/DAGOLDEN/ExtUtils-CBuilder-0.280205.tar.gz
provides:
@@ -2628,10 +2593,20 @@ DISTRIBUTIONS
ExtUtils::CBuilder::Platform::dec_osf 0.280205
ExtUtils::CBuilder::Platform::os2 0.280205
requirements:
+ Cwd 0
+ ExtUtils::MakeMaker 6.30
+ File::Basename 0
+ File::Spec 3.13
+ File::Temp 0
+ IO::File 0
+ IPC::Cmd 0
+ Perl::OSType 0
+ Test::More 0.47
+ Text::ParseWords 0
ExtUtils-MakeMaker-6.72
pathname: B/BI/BINGOS/ExtUtils-MakeMaker-6.72.tar.gz
provides:
- DynaLoader undef
+ DynaLoader 6.72
ExtUtils::Command::MM 6.72
ExtUtils::Liblist 6.72
ExtUtils::Liblist::Kid 6.72
@@ -2655,13 +2630,13 @@ DISTRIBUTIONS
ExtUtils::MY 6.72
ExtUtils::MakeMaker 6.72
ExtUtils::MakeMaker::Config 6.72
- ExtUtils::Manifest 1.60
+ ExtUtils::MakeMaker::_version 6.72
ExtUtils::Mkbootstrap 6.72
ExtUtils::Mksymlists 6.72
ExtUtils::testlib 6.72
- JSON::PP::Compat5006 1.09
- MM undef
- MY undef
+ MM 6.72
+ MY 6.72
+ in 6.72
requirements:
Data::Dumper 0
DirHandle 0
@@ -2683,6 +2658,16 @@ DISTRIBUTIONS
ExtUtils::Typemaps::OutputMap 3.21
ExtUtils::Typemaps::Type 3.21
requirements:
+ Carp 0
+ Cwd 0
+ DynaLoader 0
+ Exporter 0
+ ExtUtils::CBuilder 0
+ ExtUtils::MakeMaker 6.46
+ File::Basename 0
+ File::Spec 0
+ Symbol 0
+ Test::More 0.47
FCGI-0.74
pathname: F/FL/FLORA/FCGI-0.74.tar.gz
provides:
@@ -2789,11 +2774,6 @@ DISTRIBUTIONS
ExtUtils::MakeMaker 0
Fcntl 0
POSIX 0
- File-pushd-1.005
- pathname: D/DA/DAGOLDEN/File-pushd-1.005.tar.gz
- provides:
- File::pushd 1.005
- requirements:
Filesys-Notify-Simple-0.10
pathname: M/MI/MIYAGAWA/Filesys-Notify-Simple-0.10.tar.gz
provides:
@@ -2811,13 +2791,6 @@ DISTRIBUTIONS
Geography::NationalGrid::IE 1.2
requirements:
ExtUtils::MakeMaker 0
- Getopt-Long-2.41
- pathname: J/JV/JV/Getopt-Long-2.41.tar.gz
- provides:
- Getopt::Long 2.41
- Getopt::Long::CallBack undef
- Getopt::Long::Parser undef
- requirements:
Getopt-Long-Descriptive-0.093
pathname: R/RJ/RJBS/Getopt-Long-Descriptive-0.093.tar.gz
provides:
@@ -3169,11 +3142,9 @@ DISTRIBUTIONS
pathname: M/MA/MAKAMAKA/JSON-2.59.tar.gz
provides:
JSON 2.59
- JSON::Backend::PP undef
- JSON::Boolean undef
- JSON::PP5005 1.10
- JSON::PP56 1.08
- JSON::backportPP::Boolean 1.01
+ JSON::Backend::PP 2.59
+ JSON::Boolean 2.59
+ JSON::backportPP::Boolean 2.27202
requirements:
ExtUtils::MakeMaker 0
Test::More 0
@@ -3181,9 +3152,11 @@ DISTRIBUTIONS
pathname: M/MA/MAKAMAKA/JSON-PP-2.27202.tar.gz
provides:
JSON::PP 2.27202
- JSON::PP::Boolean undef
- JSON::PP::IncrParser 1.01
+ JSON::PP::Boolean 2.27202
+ JSON::PP::IncrParser 2.27202
requirements:
+ ExtUtils::MakeMaker 0
+ Test::More 0
JSON-XS-2.33
pathname: M/ML/MLEHMANN/JSON-XS-2.33.tar.gz
provides:
@@ -3460,7 +3433,6 @@ DISTRIBUTIONS
Module::Build::Base 0.4007
Module::Build::Compat 0.4007
Module::Build::Config 0.4007
- Module::Build::ConfigData undef
Module::Build::Cookbook 0.4007
Module::Build::Dumper 0.4007
Module::Build::ModuleInfo 0.4007
@@ -3482,16 +3454,33 @@ DISTRIBUTIONS
inc::latest 0.4007
inc::latest::private 0.4007
requirements:
- Module-CPANfile-1.0001
- pathname: M/MI/MIYAGAWA/Module-CPANfile-1.0001.tar.gz
- provides:
- Module::CPANfile 1.0001
- Module::CPANfile::Environment undef
- Module::CPANfile::Result undef
- requirements:
- CPAN::Meta 2.12091
- CPAN::Meta::Prereqs 2.12091
- ExtUtils::MakeMaker 6.30
+ CPAN::Meta 2.110420
+ CPAN::Meta::YAML 0.003
+ Cwd 0
+ Data::Dumper 0
+ ExtUtils::CBuilder 0.27
+ ExtUtils::Install 0
+ ExtUtils::Manifest 0
+ ExtUtils::Mkbootstrap 0
+ ExtUtils::ParseXS 2.21
+ File::Basename 0
+ File::Compare 0
+ File::Copy 0
+ File::Find 0
+ File::Path 0
+ File::Spec 0.82
+ File::Temp 0.15
+ Getopt::Long 0
+ Module::Metadata 1.000002
+ Parse::CPAN::Meta 1.4401
+ Perl::OSType 1
+ Pod::Man 2.17
+ Test::Harness 3.16
+ Test::More 0.49
+ Text::Abbrev 0
+ Text::ParseWords 0
+ perl 5.006001
+ version 0.87
Module-Find-0.11
pathname: C/CR/CRENZ/Module-Find-0.11.tar.gz
provides:
@@ -3586,14 +3575,15 @@ DISTRIBUTIONS
provides:
Module::Metadata 1.000014
requirements:
- Module-Reader-0.002000
- pathname: H/HA/HAARG/Module-Reader-0.002000.tar.gz
- provides:
- Module::Reader 0.002000
- requirements:
- ExtUtils::MakeMaker 6.3
- Scalar::Util 0
- Test::More 0.88
+ Carp 0
+ ExtUtils::MakeMaker 0
+ File::Find 0
+ File::Spec 0
+ IO::File 0
+ strict 0
+ vars 0
+ version 0.87
+ warnings 0
Module-Runtime-0.013
pathname: Z/ZE/ZEFRAM/Module-Runtime-0.013.tar.gz
provides:
@@ -3632,6 +3622,8 @@ DISTRIBUTIONS
Moo::HandleMoose::FakeMetaClass undef
Moo::Object undef
Moo::Role undef
+ Moo::_Utils undef
+ Moo::_mro undef
Moo::sification undef
Sub::Defer undef
Sub::Quote undef
@@ -4421,6 +4413,14 @@ DISTRIBUTIONS
provides:
Parse::CPAN::Meta 1.4405
requirements:
+ CPAN::Meta::YAML 0.008
+ Carp 0
+ Exporter 0
+ ExtUtils::MakeMaker 6.30
+ File::Spec 0.80
+ JSON::PP 2.27200
+ Test::More 0.47
+ strict 0
Path-Class-0.31
pathname: K/KW/KWILLIAMS/Path-Class-0.31.tar.gz
provides:
@@ -4452,6 +4452,24 @@ DISTRIBUTIONS
provides:
Path::Tiny 0.028
requirements:
+ Carp 0
+ Cwd 0
+ Digest 1.03
+ Digest::SHA 5.45
+ Exporter 5.57
+ ExtUtils::MakeMaker 6.30
+ Fcntl 0
+ File::Copy 0
+ File::Path 2.07
+ File::Spec 3.40
+ File::Temp 0.18
+ File::stat 0
+ autodie::exception 2.14
+ constant 0
+ overload 0
+ strict 0
+ threads 0
+ warnings 0
PathTools-3.40
pathname: S/SM/SMUELLER/PathTools-3.40.tar.gz
provides:
@@ -4466,11 +4484,26 @@ DISTRIBUTIONS
File::Spec::VMS 3.40
File::Spec::Win32 3.40
requirements:
+ Carp 0
+ ExtUtils::MakeMaker 0
+ File::Basename 0
+ Scalar::Util 0
+ Test 0
Perl-OSType-1.003
pathname: D/DA/DAGOLDEN/Perl-OSType-1.003.tar.gz
provides:
Perl::OSType 1.003
requirements:
+ Exporter 0
+ ExtUtils::MakeMaker 6.30
+ File::Find 0
+ File::Spec::Functions 0
+ File::Temp 0
+ List::Util 0
+ Test::More 0.88
+ constant 0
+ strict 0
+ warnings 0
Plack-1.0018
pathname: M/MI/MIYAGAWA/Plack-1.0018.tar.gz
provides:
@@ -4779,6 +4812,152 @@ DISTRIBUTIONS
XML::Parser 2.23
constant 0
perl 5.006
+ SOAP-WSDL-2.00.10
+ pathname: M/MK/MKUTTER/SOAP-WSDL-2.00.10.tar.gz
+ provides:
+ SOAP::WSDL 2.000010
+ SOAP::WSDL::Base 2.000010
+ SOAP::WSDL::Binding 2.000010
+ SOAP::WSDL::Client 2.000010
+ SOAP::WSDL::Client::Base 2.000010
+ SOAP::WSDL::Definitions 2.000010
+ SOAP::WSDL::Deserializer::Hash 2.000010
+ SOAP::WSDL::Deserializer::SOM 2.000010
+ SOAP::WSDL::Deserializer::XSD 2.000010
+ SOAP::WSDL::Expat::Base 2.000010
+ SOAP::WSDL::Expat::Message2Hash 2.000010
+ SOAP::WSDL::Expat::MessageParser 2.000010
+ SOAP::WSDL::Expat::MessageStreamParser 2.000010
+ SOAP::WSDL::Expat::WSDLParser 2.000010
+ SOAP::WSDL::Factory::Deserializer 2.000010
+ SOAP::WSDL::Factory::Generator 2.000010
+ SOAP::WSDL::Factory::Serializer 2.000010
+ SOAP::WSDL::Factory::Transport 2.000010
+ SOAP::WSDL::Generator::Iterator::WSDL11 2.000010
+ SOAP::WSDL::Generator::PrefixResolver 2.000010
+ SOAP::WSDL::Generator::Template 2.000010
+ SOAP::WSDL::Generator::Template::Plugin::XSD 2.000010
+ SOAP::WSDL::Generator::Template::XSD 2.000010
+ SOAP::WSDL::Generator::Visitor 2.000010
+ SOAP::WSDL::Generator::Visitor::Typemap 2.000010
+ SOAP::WSDL::Message 2.000010
+ SOAP::WSDL::OpMessage 2.000010
+ SOAP::WSDL::Operation 2.000010
+ SOAP::WSDL::Part 2.000010
+ SOAP::WSDL::Port 2.000010
+ SOAP::WSDL::PortType 2.000010
+ SOAP::WSDL::SOAP::Address 2.000010
+ SOAP::WSDL::SOAP::Body 2.000010
+ SOAP::WSDL::SOAP::Header 2.000010
+ SOAP::WSDL::SOAP::HeaderFault 2.000010
+ SOAP::WSDL::SOAP::Operation 2.000010
+ SOAP::WSDL::SOAP::Typelib::Fault 2.000010
+ SOAP::WSDL::SOAP::Typelib::Fault11 2.000010
+ SOAP::WSDL::Serializer::XSD 2.000010
+ SOAP::WSDL::Server 2.000010
+ SOAP::WSDL::Server::CGI 2.000010
+ SOAP::WSDL::Server::Mod_Perl2 2.000010
+ SOAP::WSDL::Server::Simple 2.000010
+ SOAP::WSDL::Service 2.000010
+ SOAP::WSDL::Transport::HTTP 2.000010
+ SOAP::WSDL::Transport::Loopback 2.000010
+ SOAP::WSDL::Transport::Test 2.000010
+ SOAP::WSDL::TypeLookup 2.000010
+ SOAP::WSDL::Types 2.000010
+ SOAP::WSDL::XSD::Annotation 2.000010
+ SOAP::WSDL::XSD::Attribute 2.000010
+ SOAP::WSDL::XSD::AttributeGroup 2.000010
+ SOAP::WSDL::XSD::Builtin 2.000010
+ SOAP::WSDL::XSD::ComplexType 2.000010
+ SOAP::WSDL::XSD::Element 2.000010
+ SOAP::WSDL::XSD::Enumeration 2.000010
+ SOAP::WSDL::XSD::FractionDigits 2.000010
+ SOAP::WSDL::XSD::Group 2.000010
+ SOAP::WSDL::XSD::Length 2.000010
+ SOAP::WSDL::XSD::MaxExclusive 2.000010
+ SOAP::WSDL::XSD::MaxInclusive 2.000010
+ SOAP::WSDL::XSD::MaxLength 2.000010
+ SOAP::WSDL::XSD::MinExclusive 2.000010
+ SOAP::WSDL::XSD::MinInclusive 2.000010
+ SOAP::WSDL::XSD::MinLength 2.000010
+ SOAP::WSDL::XSD::Pattern 2.000010
+ SOAP::WSDL::XSD::Schema 2.000010
+ SOAP::WSDL::XSD::Schema::Builtin 2.000010
+ SOAP::WSDL::XSD::SimpleType 2.000010
+ SOAP::WSDL::XSD::TotalDigits 2.000010
+ SOAP::WSDL::XSD::Typelib::Attribute 2.000010
+ SOAP::WSDL::XSD::Typelib::AttributeSet 2.000010
+ SOAP::WSDL::XSD::Typelib::Builtin 2.000010
+ SOAP::WSDL::XSD::Typelib::Builtin::ENTITY undef
+ SOAP::WSDL::XSD::Typelib::Builtin::ID undef
+ SOAP::WSDL::XSD::Typelib::Builtin::IDREF undef
+ SOAP::WSDL::XSD::Typelib::Builtin::IDREFS undef
+ SOAP::WSDL::XSD::Typelib::Builtin::NCName undef
+ SOAP::WSDL::XSD::Typelib::Builtin::NMTOKEN undef
+ SOAP::WSDL::XSD::Typelib::Builtin::NMTOKENS undef
+ SOAP::WSDL::XSD::Typelib::Builtin::NOTATION undef
+ SOAP::WSDL::XSD::Typelib::Builtin::Name undef
+ SOAP::WSDL::XSD::Typelib::Builtin::QName undef
+ SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType undef
+ SOAP::WSDL::XSD::Typelib::Builtin::anyType 2.000010
+ SOAP::WSDL::XSD::Typelib::Builtin::anyURI undef
+ SOAP::WSDL::XSD::Typelib::Builtin::base64Binary undef
+ SOAP::WSDL::XSD::Typelib::Builtin::boolean 2.000010
+ SOAP::WSDL::XSD::Typelib::Builtin::byte undef
+ SOAP::WSDL::XSD::Typelib::Builtin::date undef
+ SOAP::WSDL::XSD::Typelib::Builtin::dateTime undef
+ SOAP::WSDL::XSD::Typelib::Builtin::decimal undef
+ SOAP::WSDL::XSD::Typelib::Builtin::double undef
+ SOAP::WSDL::XSD::Typelib::Builtin::duration undef
+ SOAP::WSDL::XSD::Typelib::Builtin::float undef
+ SOAP::WSDL::XSD::Typelib::Builtin::gDay undef
+ SOAP::WSDL::XSD::Typelib::Builtin::gMonth undef
+ SOAP::WSDL::XSD::Typelib::Builtin::gMonthDay undef
+ SOAP::WSDL::XSD::Typelib::Builtin::gYear undef
+ SOAP::WSDL::XSD::Typelib::Builtin::gYearMonth undef
+ SOAP::WSDL::XSD::Typelib::Builtin::hexBinary undef
+ SOAP::WSDL::XSD::Typelib::Builtin::int undef
+ SOAP::WSDL::XSD::Typelib::Builtin::integer undef
+ SOAP::WSDL::XSD::Typelib::Builtin::language undef
+ SOAP::WSDL::XSD::Typelib::Builtin::list undef
+ SOAP::WSDL::XSD::Typelib::Builtin::long undef
+ SOAP::WSDL::XSD::Typelib::Builtin::negativeInteger undef
+ SOAP::WSDL::XSD::Typelib::Builtin::nonNegativeInteger undef
+ SOAP::WSDL::XSD::Typelib::Builtin::nonPositiveInteger undef
+ SOAP::WSDL::XSD::Typelib::Builtin::normalizedString undef
+ SOAP::WSDL::XSD::Typelib::Builtin::positiveInteger undef
+ SOAP::WSDL::XSD::Typelib::Builtin::short undef
+ SOAP::WSDL::XSD::Typelib::Builtin::string undef
+ SOAP::WSDL::XSD::Typelib::Builtin::time 2.000010
+ SOAP::WSDL::XSD::Typelib::Builtin::token undef
+ SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte undef
+ SOAP::WSDL::XSD::Typelib::Builtin::unsignedInt undef
+ SOAP::WSDL::XSD::Typelib::Builtin::unsignedLong undef
+ SOAP::WSDL::XSD::Typelib::Builtin::unsignedShort undef
+ SOAP::WSDL::XSD::Typelib::ComplexType 2.000010
+ SOAP::WSDL::XSD::Typelib::Element 2.000010
+ SOAP::WSDL::XSD::Typelib::SimpleType 2.000010
+ SOAP::WSDL::XSD::WhiteSpace 2.000010
+ requirements:
+ Class::Std::Fast v0.0.5
+ Cwd 0
+ Data::Dumper 0
+ Date::Format 0
+ Date::Parse 0
+ File::Basename 0
+ File::Path 0
+ File::Spec 0
+ Getopt::Long 0
+ LWP::UserAgent 0
+ List::Util 0
+ Module::Build 0
+ Storable 0
+ Template 2.18
+ Term::ReadKey 0
+ Test::More 0
+ URI 0
+ XML::Parser::Expat 0
+ perl v5.8.0
SQL-Abstract-1.73
pathname: F/FR/FREW/SQL-Abstract-1.73.tar.gz
provides:
@@ -5078,6 +5257,13 @@ DISTRIBUTIONS
File::Spec 0.8
File::Temp 0.12
Scalar::Util 0
+ TermReadKey-2.31
+ pathname: J/JS/JSTOWE/TermReadKey-2.31.tar.gz
+ provides:
+ Configure undef
+ Term::ReadKey 2.31
+ requirements:
+ ExtUtils::MakeMaker 0
Test-Base-0.60
pathname: I/IN/INGY/Test-Base-0.60.tar.gz
provides:
@@ -5161,6 +5347,12 @@ DISTRIBUTIONS
Test::Deep::SuperHashKeys undef
Test::Deep::SuperHashKeysOnly undef
requirements:
+ ExtUtils::MakeMaker 0
+ List::Util 1.09
+ Scalar::Util 1.09
+ Test::More 0
+ Test::NoWarnings 0.02
+ Test::Tester 0.04
Test-Differences-0.61
pathname: O/OV/OVID/Test-Differences-0.61.tar.gz
provides:
@@ -5182,16 +5374,21 @@ DISTRIBUTIONS
Test::Harness 2.03
Test::More 0.7
Test::Simple 0.7
- Test-FailWarnings-0.005
- pathname: D/DA/DAGOLDEN/Test-FailWarnings-0.005.tar.gz
- provides:
- Test::FailWarnings 0.005
- requirements:
Test-Fatal-0.010
pathname: R/RJ/RJBS/Test-Fatal-0.010.tar.gz
provides:
Test::Fatal 0.010
requirements:
+ Carp 0
+ Exporter 5.57
+ ExtUtils::MakeMaker 6.30
+ Test::Builder 0
+ Test::Builder::Tester 0
+ Test::More 0.47
+ Try::Tiny 0.07
+ overload 0
+ strict 0
+ warnings 0
Test-LongString-0.15
pathname: R/RG/RGARCIA/Test-LongString-0.15.tar.gz
provides:
@@ -5260,10 +5457,13 @@ DISTRIBUTIONS
Test::Builder::Module 0.98
Test::Builder::Tester 1.22
Test::Builder::Tester::Color 1.22
- Test::Builder::Tester::Tie undef
+ Test::Builder::Tester::Tie 1.22
Test::More 0.98
Test::Simple 0.98
requirements:
+ ExtUtils::MakeMaker 0
+ Test::Harness 2.03
+ perl 5.006
Test-TCP-1.21
pathname: T/TO/TOKUHIROM/Test-TCP-1.21.tar.gz
provides:
@@ -5284,6 +5484,8 @@ DISTRIBUTIONS
Test::Tester::CaptureRunner undef
Test::Tester::Delegate undef
requirements:
+ ExtUtils::MakeMaker 0
+ Test::Builder 0
Test-Trap-v0.2.2
pathname: E/EB/EBHANSSEN/Test-Trap-v0.2.2.tar.gz
provides:
@@ -5387,6 +5589,17 @@ DISTRIBUTIONS
Test::Builder 0
Test::Builder::Tester 0.09
perl 5.007003
+ Text-CSV-1.32
+ pathname: M/MA/MAKAMAKA/Text-CSV-1.32.tar.gz
+ provides:
+ Text::CSV 1.32
+ Text::CSV::ErrorDiag 1.31
+ Text::CSV_PP 1.31
+ requirements:
+ ExtUtils::MakeMaker 0
+ IO::Handle 0
+ Test::Harness 0
+ Test::More 0
Text-Diff-1.41
pathname: O/OV/OVID/Text-Diff-1.41.tar.gz
provides:
@@ -5544,6 +5757,13 @@ DISTRIBUTIONS
provides:
Try::Tiny 0.16
requirements:
+ Carp 0
+ Exporter 0
+ ExtUtils::MakeMaker 6.30
+ base 0
+ constant 0
+ strict 0
+ warnings 0
UNIVERSAL-require-0.13
pathname: M/MS/MSCHWERN/UNIVERSAL-require-0.13.tar.gz
provides:
@@ -5867,14 +6087,49 @@ DISTRIBUTIONS
autodie-2.20
pathname: P/PJ/PJF/autodie-2.20.tar.gz
provides:
+ Caller_helper undef
Fatal 2.20
+ Hints_pod_examples undef
+ Hints_provider_does undef
+ Hints_provider_easy_does_it undef
+ Hints_provider_isa undef
+ Hints_test undef
+ OtherTypes undef
+ Some::Module undef
autodie 2.20
- autodie::Scope::Guard undef
+ autodie::Scope::Guard 2.20
autodie::exception 2.20
autodie::exception::system 2.20
autodie::hints 2.20
+ autodie::hints::provider undef
autodie::skip 2.20
+ autodie::test::au undef
+ autodie::test::au::exception undef
+ autodie::test::badname undef
+ autodie::test::missing undef
+ autodie_skippy undef
+ autodie_test_module undef
+ autodie_unskippy undef
+ lethal undef
+ my::autodie undef
+ pujHa::ghach undef
+ pujHa::ghach::Dotlh undef
requirements:
+ B 0
+ Carp 0
+ Config 0
+ Exporter 0
+ ExtUtils::MakeMaker 6.30
+ Fcntl 0
+ POSIX 0
+ Scalar::Util 0
+ Tie::RefHash 0
+ base 0
+ constant 0
+ if 0
+ overload 0
+ strict 0
+ warnings 0
common-sense-3.6
pathname: M/ML/MLEHMANN/common-sense-3.6.tar.gz
provides:
@@ -5972,11 +6227,6 @@ DISTRIBUTIONS
Sub::Identify 0.04
Sub::Name 0.04
Test::More 0.88
- parent-0.225
- pathname: C/CO/CORION/parent-0.225.tar.gz
- provides:
- parent 0.225
- requirements:
strictures-1.004004
pathname: E/ET/ETHER/strictures-1.004004.tar.gz
provides:
@@ -5986,6 +6236,11 @@ DISTRIBUTIONS
version-0.9902
pathname: J/JP/JPEACOCK/version-0.9902.tar.gz
provides:
+ charstar 0.9902
version 0.9902
+ version::vpp 0.9902
version::vxs 0.9902
requirements:
+ ExtUtils::MakeMaker 0
+ File::Temp 0.13
+ Test::More 0.45
diff --git a/data/openlayers.fixmystreet.cfg b/data/openlayers.fixmystreet.cfg
index 9e23ef7ce..5e372099b 100644
--- a/data/openlayers.fixmystreet.cfg
+++ b/data/openlayers.fixmystreet.cfg
@@ -28,10 +28,12 @@ OpenLayers/Style.js
OpenLayers/StyleMap.js
OpenLayers/Geometry/Point.js
OpenLayers/Protocol/HTTP.js
-OpenLayers/Layer/SphericalMercator.js # For 4326
OpenLayers/Layer/Vector.js
-OpenLayers/Layer/XYZ.js
+OpenLayers/Layer/OSM.js
OpenLayers/Popup/FramedCloud.js
+# Needed by Protocol/HTTP (for Strategy/BBOX bbox)
+# This loads in needed Filters too.
+OpenLayers/Format/QueryStringFilter.js
[exclude]
diff --git a/data/openlayers.fixmystreet.google.cfg b/data/openlayers.fixmystreet.google.cfg
new file mode 100644
index 000000000..96c93147c
--- /dev/null
+++ b/data/openlayers.fixmystreet.google.cfg
@@ -0,0 +1,39 @@
+# This file includes the OpenLayers code that FixMyStreet currently uses.
+
+[first]
+
+[last]
+
+[include]
+# Have to include the renderers manually
+OpenLayers/Renderer/Canvas.js
+OpenLayers/Renderer/SVG.js
+OpenLayers/Renderer/VML.js
+OpenLayers/Strategy/Fixed.js
+OpenLayers/Strategy/BBOX.js
+OpenLayers/Control/ArgParser.js
+OpenLayers/Control/Attribution.js
+OpenLayers/Control/DragFeature.js
+OpenLayers/Control/Navigation.js
+OpenLayers/Control/PanZoom.js
+OpenLayers/Control/PinchZoom.js
+OpenLayers/Control/Permalink.js
+OpenLayers/Control/SelectFeature.js
+OpenLayers/Format/JSON.js
+OpenLayers/Format/KML.js
+OpenLayers/Handler/Click.js
+OpenLayers/Feature/Vector.js
+OpenLayers/Rule.js
+OpenLayers/Style.js
+OpenLayers/StyleMap.js
+OpenLayers/Geometry/Point.js
+OpenLayers/Protocol/HTTP.js
+OpenLayers/Layer/Vector.js
+OpenLayers/Layer/Google/v3.js
+OpenLayers/Popup/FramedCloud.js
+# Needed by Protocol/HTTP (for Strategy/BBOX bbox)
+# This loads in needed Filters too.
+OpenLayers/Format/QueryStringFilter.js
+
+[exclude]
+
diff --git a/db/schema.sql b/db/schema.sql
index f221825f2..6ddb7bae6 100644
--- a/db/schema.sql
+++ b/db/schema.sql
@@ -65,7 +65,8 @@ create table body (
comment_user_id int references users(id),
suppress_alerts boolean not null default 'f',
can_be_devolved boolean not null default 'f',
- send_extended_statuses boolean not null default 'f'
+ send_extended_statuses boolean not null default 'f',
+ deleted boolean not null default 'f'
);
create table body_areas (
@@ -448,9 +449,6 @@ create table admin_log (
or object_type = 'user'
),
object_id integer not null,
- action text not null check (
- action = 'edit'
- or action = 'state_change'
- or action = 'resend'),
+ action text not null,
whenedited timestamp not null default ms_current_timestamp()
);
diff --git a/db/schema_0029-add_deleted_flag_to_body.sql b/db/schema_0029-add_deleted_flag_to_body.sql
new file mode 100644
index 000000000..3a8be7890
--- /dev/null
+++ b/db/schema_0029-add_deleted_flag_to_body.sql
@@ -0,0 +1,6 @@
+BEGIN;
+
+ALTER table body
+ ADD column deleted BOOL NOT NULL DEFAULT 'f';
+
+COMMIT;
diff --git a/db/schema_0030-drop-action-log-check-constraint.sql b/db/schema_0030-drop-action-log-check-constraint.sql
new file mode 100644
index 000000000..dfc5387f3
--- /dev/null
+++ b/db/schema_0030-drop-action-log-check-constraint.sql
@@ -0,0 +1,6 @@
+BEGIN;
+
+ALTER TABLE admin_log
+ DROP CONSTRAINT admin_log_action_check;
+
+COMMIT;
diff --git a/locale/FixMyStreet.po b/locale/FixMyStreet.po
index f629176d4..6b1cb8a13 100644
--- a/locale/FixMyStreet.po
+++ b/locale/FixMyStreet.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <team@fixmystreet.com>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636 perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602 perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr ""
@@ -29,27 +29,27 @@ msgstr ""
msgid " or "
msgstr ""
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr ""
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/index.html:19 templates/web/zurich/admin/index.html:6
+#: templates/web/default/admin/index.html:27 templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr ""
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr ""
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr ""
@@ -61,7 +61,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr ""
@@ -69,7 +69,7 @@ msgstr ""
msgid "%s ward, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -89,7 +89,7 @@ msgstr ""
msgid "(Don't worry &mdash; we'll hang on to your update while you're checking your email.)"
msgstr ""
-#: templates/web/default/admin/report_blocks.html:11 templates/web/default/admin/users.html:26
+#: templates/web/default/admin/report_blocks.html:11 templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr ""
@@ -101,11 +101,11 @@ msgstr ""
msgid "(alternatively the RSS feed can be customised, within"
msgstr ""
-#: templates/web/default/around/around_map_list_items.html:12 templates/web/default/around/on_map_list_items.html:9 templates/web/fixmystreet/report/_item.html:22 templates/web/zurich/report/_item.html:21
+#: templates/web/bromley/report/_item.html:22 templates/web/default/around/around_map_list_items.html:12 templates/web/default/around/on_map_list_items.html:9 templates/web/fixmystreet/report/_item.html:22 templates/web/zurich/report/_item.html:21
msgid "(closed)"
msgstr ""
-#: templates/web/default/around/around_map_list_items.html:10 templates/web/default/around/on_map_list_items.html:7 templates/web/fixmystreet/report/_item.html:20 templates/web/zurich/report/_item.html:19
+#: templates/web/bromley/report/_item.html:20 templates/web/default/around/around_map_list_items.html:10 templates/web/default/around/on_map_list_items.html:7 templates/web/fixmystreet/report/_item.html:20 templates/web/zurich/report/_item.html:19
msgid "(fixed)"
msgstr ""
@@ -113,7 +113,7 @@ msgstr ""
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr ""
-#: templates/web/default/reports/_list-entry.html:4 templates/web/fixmystreet/report/_item.html:16
+#: templates/web/bromley/report/_item.html:16 templates/web/default/reports/_list-entry.html:4 templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
msgstr ""
@@ -121,7 +121,7 @@ msgstr ""
msgid "(optional)"
msgstr ""
-#: templates/web/default/reports/_list-entry.html:2 templates/web/fixmystreet/report/_item.html:15
+#: templates/web/bromley/report/_item.html:15 templates/web/default/reports/_list-entry.html:2 templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
msgstr ""
@@ -133,11 +133,11 @@ msgstr ""
msgid "(we never show your email)"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:637 perllib/FixMyStreet/App/Controller/Report/New.pm:664 perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:637 perllib/FixMyStreet/App/Controller/Report/New.pm:664 perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:618 perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr ""
@@ -145,6 +145,13 @@ msgstr ""
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42 templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr ""
@@ -213,7 +220,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr ""
-#: templates/web/default/admin/index.html:14 templates/web/zurich/admin/index.html:4
+#: templates/web/default/admin/index.html:22 templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr ""
@@ -225,7 +232,7 @@ msgstr ""
msgid "<strong>No</strong> Let me confirm my update by email"
msgstr ""
-#: templates/web/fixmystreet/auth/general.html:50 templates/web/zurich/auth/general.html:49
+#: templates/web/fixmystreet/auth/general.html:50 templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr ""
@@ -253,15 +260,26 @@ msgstr ""
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53 templates/web/default/admin/bodies.html:57 templates/web/default/admin/body-form.html:82 templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3 templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65 templates/web/default/admin/bodies.html:70 templates/web/default/admin/body-form.html:233 templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69 templates/web/zurich/admin/body.html:30
+#: templates/web/default/admin/body.html:88 templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr ""
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -289,7 +307,7 @@ msgstr ""
msgid "All Reports"
msgstr ""
-#: templates/web/barnet/footer.html:20 templates/web/bromley/footer.html:21 templates/web/bromley/header.html:77 templates/web/default/footer.html:11 templates/web/emptyhomes/header.html:32 templates/web/fiksgatami/footer.html:7 templates/web/fiksgatami/nn/footer.html:7 templates/web/fixmybarangay/footer.html:20 templates/web/fixmystreet/footer.html:48 templates/web/oxfordshire/footer.html:23 templates/web/oxfordshire/header.html:67 templates/web/reading/footer.html:8 templates/web/stevenage/footer.html:43 templates/web/zurich/admin/index-dm.html:12 templates/web/zurich/admin/stats.html:13 templates/web/zurich/footer.html:19 templates/web/zurich/nav_over_content.html:6
+#: templates/web/barnet/footer.html:20 templates/web/bromley/footer.html:21 templates/web/bromley/header.html:77 templates/web/default/footer.html:11 templates/web/emptyhomes/header.html:32 templates/web/fiksgatami/footer.html:7 templates/web/fiksgatami/nn/footer.html:7 templates/web/fixmindelo/footer.html:41 templates/web/fixmybarangay/footer.html:20 templates/web/fixmystreet/footer.html:48 templates/web/oxfordshire/footer.html:23 templates/web/oxfordshire/header.html:67 templates/web/reading/footer.html:8 templates/web/stevenage/footer.html:43 templates/web/zurich/admin/index-dm.html:12 templates/web/zurich/admin/stats.html:13 templates/web/zurich/footer.html:19 templates/web/zurich/nav_over_content.html:6
msgid "All reports"
msgstr ""
@@ -317,7 +335,7 @@ msgstr ""
msgid "An update marked this problem as fixed."
msgstr ""
-#: templates/web/default/admin/list_updates.html:11 templates/web/default/admin/problem_row.html:20
+#: templates/web/default/admin/list_updates.html:32 templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr ""
@@ -337,23 +355,23 @@ msgstr ""
msgid "Are you from a council?"
msgstr ""
-#: templates/web/default/admin/body-form.html:19 templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69 templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124 templates/web/zurich/admin/stats.html:36
+#: templates/web/zurich/admin/report_edit.html:144 templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113 templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133 templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100 templates/web/zurich/report/updates.html:11
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141 templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -365,11 +383,11 @@ msgstr ""
msgid "At the moment only searching for and looking at reports work."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373 templates/web/zurich/report/_item.html:11
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334 templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32 templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -381,15 +399,15 @@ msgstr ""
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144 perllib/FixMyStreet/Cobrand/Zurich.pm:208 templates/web/default/admin/bodies.html:1 templates/web/zurich/header.html:64
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176 perllib/FixMyStreet/Cobrand/Zurich.pm:249 templates/web/default/admin/bodies.html:1 templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12 templates/web/default/admin/reports.html:14 templates/web/default/admin/users.html:14
+#: templates/web/default/admin/flagged.html:17 templates/web/default/admin/reports.html:14 templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -405,19 +423,19 @@ msgstr ""
msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr ""
-#: templates/web/bromley/report/new/fill_in_details_form.html:68 templates/web/default/admin/bodies.html:11 templates/web/default/admin/body.html:35 templates/web/default/admin/index.html:36 templates/web/default/report/new/category.html:10 templates/web/fixmystreet/report/new/fill_in_details_form.html:74 templates/web/seesomething/report/new/category.html:6 templates/web/southampton/report/new/category.html:3 templates/web/zurich/admin/body.html:13 templates/web/zurich/admin/index-dm.html:23 templates/web/zurich/admin/index-sdm.html:21 templates/web/zurich/admin/reports.html:13 templates/web/zurich/admin/stats.html:50 templates/web/zurich/report/new/fill_in_details_form.html:50
+#: templates/web/bromley/report/new/fill_in_details_form.html:68 templates/web/default/admin/bodies.html:20 templates/web/default/admin/body.html:53 templates/web/default/admin/index.html:44 templates/web/default/report/new/category.html:10 templates/web/fixmystreet/report/new/fill_in_details_form.html:74 templates/web/seesomething/report/new/category.html:6 templates/web/southampton/report/new/category.html:3 templates/web/zurich/admin/body.html:13 templates/web/zurich/admin/index-dm.html:23 templates/web/zurich/admin/index-sdm.html:21 templates/web/zurich/admin/reports.html:13 templates/web/zurich/admin/stats.html:50 templates/web/zurich/report/new/fill_in_details_form.html:50
msgid "Category"
msgstr ""
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr ""
-#: templates/web/default/admin/body.html:75 templates/web/default/admin/body_edit.html:23 templates/web/default/admin/report_edit.html:61 templates/web/default/report/new/fill_in_details_form.html:67 templates/web/emptyhomes/report/new/fill_in_details_form.html:50 templates/web/zurich/admin/body.html:36 templates/web/zurich/admin/report_edit-sdm.html:42 templates/web/zurich/admin/report_edit.html:123
+#: templates/web/default/admin/body.html:109 templates/web/default/admin/body_edit.html:23 templates/web/default/admin/report_edit.html:61 templates/web/default/report/new/fill_in_details_form.html:67 templates/web/emptyhomes/report/new/fill_in_details_form.html:50 templates/web/zurich/admin/body.html:36 templates/web/zurich/admin/report_edit-sdm.html:45 templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr ""
@@ -425,15 +443,52 @@ msgstr ""
msgid "Change Password"
msgstr ""
-#: templates/web/default/js/translation_strings.html:41 templates/web/fixmystreet/around/_report_banner.html:2
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65 templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47 templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:45 templates/web/default/admin/report_edit.html:47 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:144 templates/web/fixmystreet/report/banner.html:15 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:10 templates/web/zurich/admin/header.html:12 templates/web/zurich/admin/report_edit.html:96 templates/web/zurich/admin/report_edit.html:98 templates/web/zurich/admin/stats.html:31 templates/web/zurich/report/banner.html:13
+#: templates/web/oxfordshire/js/translation_strings.html:39
+msgid "Click on the map to report a problem"
+msgstr ""
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:45 templates/web/default/admin/report_edit.html:47 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:144 templates/web/fixmystreet/report/banner.html:15 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:10 templates/web/zurich/admin/header.html:12 templates/web/zurich/admin/report_edit.html:100 templates/web/zurich/admin/report_edit.html:98 templates/web/zurich/admin/stats.html:31 templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr ""
@@ -449,11 +504,11 @@ msgstr ""
msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr ""
-#: templates/web/default/admin/report_edit.html:23 templates/web/zurich/admin/report_edit-sdm.html:33 templates/web/zurich/admin/report_edit.html:47
+#: templates/web/default/admin/report_edit.html:23 templates/web/zurich/admin/report_edit-sdm.html:36 templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr ""
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr ""
@@ -465,7 +520,11 @@ msgstr ""
msgid "Cobrand:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+msgid "Configuration"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr ""
@@ -473,7 +532,7 @@ msgstr ""
msgid "Configure Endpoint"
msgstr ""
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr ""
@@ -489,7 +548,7 @@ msgstr ""
msgid "Confirmation"
msgstr ""
-#: templates/web/default/admin/body.html:37 templates/web/default/admin/body.html:85 templates/web/default/admin/body_edit.html:32 templates/web/default/admin/body_edit.html:84 templates/web/zurich/admin/stats.html:40
+#: templates/web/default/admin/body.html:137 templates/web/default/admin/body.html:55 templates/web/default/admin/body_edit.html:32 templates/web/default/admin/body_edit.html:84 templates/web/zurich/admin/stats.html:40
msgid "Confirmed"
msgstr ""
@@ -497,7 +556,7 @@ msgstr ""
msgid "Confirmed reports between %s and %s"
msgstr ""
-#: templates/web/default/admin/problem_row.html:36 templates/web/default/admin/report_edit.html:70
+#: templates/web/default/admin/list_updates.html:39 templates/web/default/admin/problem_row.html:36 templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
msgstr ""
@@ -517,15 +576,15 @@ msgstr ""
msgid "Contact the team"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277 perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310 perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr ""
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37 templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr ""
@@ -545,15 +604,15 @@ msgstr ""
msgid "Create a report"
msgstr ""
-#: templates/web/default/admin/body.html:103 templates/web/zurich/admin/body.html:53
+#: templates/web/default/admin/body.html:179 templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr ""
-#: templates/web/default/admin/list_updates.html:10 templates/web/default/admin/problem_row.html:34 templates/web/zurich/admin/list_updates.html:7
+#: templates/web/default/admin/problem_row.html:34 templates/web/zurich/admin/list_updates.html:29 templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr ""
-#: templates/web/default/admin/report_edit.html:69 templates/web/default/admin/update_edit.html:51 templates/web/zurich/admin/report_edit-sdm.html:47 templates/web/zurich/admin/report_edit.html:62 templates/web/zurich/admin/update_edit.html:29
+#: templates/web/default/admin/list_updates.html:38 templates/web/default/admin/report_edit.html:69 templates/web/default/admin/update_edit.html:51 templates/web/zurich/admin/report_edit-sdm.html:50 templates/web/zurich/admin/report_edit.html:64 templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr ""
@@ -561,6 +620,10 @@ msgstr ""
msgid "Current state"
msgstr ""
+#: templates/web/default/admin/bodies.html:7 templates/web/default/admin/index.html:5
+msgid "Currently no bodies have been created."
+msgstr ""
+
#: templates/web/default/dashboard/index.html:5 templates/web/default/dashboard/index.html:7
msgid "Dashboard"
msgstr ""
@@ -569,7 +632,7 @@ msgstr ""
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38 templates/web/default/admin/body.html:88 templates/web/default/admin/body_edit.html:37 templates/web/default/admin/body_edit.html:85
+#: templates/web/default/admin/bodies.html:22 templates/web/default/admin/body.html:148 templates/web/default/admin/body.html:56 templates/web/default/admin/body_edit.html:37 templates/web/default/admin/body_edit.html:85
msgid "Deleted"
msgstr ""
@@ -577,19 +640,19 @@ msgstr ""
msgid "Description"
msgstr ""
-#: templates/web/bromley/report/new/fill_in_details_form.html:54 templates/web/default/js/translation_strings.html:28 templates/web/fixmystreet/report/new/fill_in_details_form.html:66 templates/web/seesomething/report/new/fill_in_details_form.html:16 templates/web/zurich/report/new/fill_in_details_form.html:42
+#: templates/web/bromley/report/new/fill_in_details_form.html:54 templates/web/default/js/translation_strings.html:34 templates/web/fixmystreet/report/new/fill_in_details_form.html:66 templates/web/oxfordshire/js/translation_strings.html:28 templates/web/seesomething/report/new/fill_in_details_form.html:16 templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
msgstr ""
-#: templates/web/default/admin/report_edit.html:20 templates/web/default/report/new/fill_in_details_form.html:61 templates/web/emptyhomes/report/new/fill_in_details_form.html:79 templates/web/zurich/admin/report_edit-sdm.html:25 templates/web/zurich/admin/report_edit.html:26 templates/web/zurich/admin/report_edit.html:36
+#: templates/web/default/admin/report_edit.html:20 templates/web/default/report/new/fill_in_details_form.html:61 templates/web/emptyhomes/report/new/fill_in_details_form.html:79 templates/web/zurich/admin/report_edit-sdm.html:28 templates/web/zurich/admin/report_edit.html:28 templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr ""
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr ""
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr ""
@@ -609,11 +672,19 @@ msgstr ""
msgid "Duplicate"
msgstr ""
-#: templates/web/default/admin/list_updates.html:42 templates/web/default/admin/problem_row.html:41 templates/web/default/admin/users.html:28 templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
+#: templates/web/default/admin/list_updates.html:42 templates/web/default/admin/problem_row.html:41 templates/web/default/admin/users.html:31 templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr ""
-#: templates/web/default/admin/body.html:112 templates/web/zurich/admin/body.html:64
+#: templates/web/default/admin/body.html:189 templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -633,15 +704,19 @@ msgstr ""
msgid "Editor"
msgstr ""
-#: templates/web/bromley/report/display.html:128 templates/web/default/admin/bodies.html:9 templates/web/default/admin/body.html:36 templates/web/default/admin/body_edit.html:83 templates/web/default/admin/flagged.html:29 templates/web/default/admin/list_updates.html:9 templates/web/default/admin/users.html:13 templates/web/fixmystreet/auth/general.html:20 templates/web/fixmystreet/report/update-form.html:76 templates/web/seesomething/auth/general.html:20 templates/web/zurich/admin/body-form.html:9 templates/web/zurich/admin/body.html:14 templates/web/zurich/auth/general.html:24 templates/web/zurich/auth/general.html:52
+#: templates/web/bromley/report/display.html:128 templates/web/default/admin/bodies.html:18 templates/web/default/admin/body.html:54 templates/web/default/admin/body_edit.html:83 templates/web/default/admin/flagged.html:38 templates/web/default/admin/users.html:16 templates/web/fixmystreet/auth/general.html:20 templates/web/fixmystreet/report/update-form.html:76 templates/web/seesomething/auth/general.html:20 templates/web/zurich/admin/body-form.html:9 templates/web/zurich/admin/body.html:14 templates/web/zurich/auth/general.html:24 templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+msgid "Email address:"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr ""
@@ -653,11 +728,11 @@ msgstr ""
msgid "Email me updates"
msgstr ""
-#: templates/web/default/admin/body.html:80 templates/web/default/admin/body_edit.html:26 templates/web/default/admin/report_edit.html:67 templates/web/default/admin/update_edit.html:33 templates/web/default/admin/user-form.html:6 templates/web/default/alert/updates.html:13 templates/web/default/report/display.html:38 templates/web/zurich/admin/body.html:41 templates/web/zurich/admin/report_edit-sdm.html:44 templates/web/zurich/admin/report_edit.html:58
+#: templates/web/default/admin/body_edit.html:26 templates/web/default/admin/report_edit.html:67 templates/web/default/admin/update_edit.html:33 templates/web/default/admin/user-form.html:20 templates/web/default/alert/updates.html:13 templates/web/default/report/display.html:38 templates/web/zurich/admin/body.html:41 templates/web/zurich/admin/report_edit-sdm.html:47 templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -685,23 +760,30 @@ msgstr ""
msgid "Empty public building - school, hospital, etc."
msgstr ""
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
+#: templates/web/default/admin/body-form.html:158 templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
+#: templates/web/default/admin/body-form.html:215 templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
+#: templates/web/default/admin/stats.html:70
+msgid "End Date:"
msgstr ""
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -721,7 +803,7 @@ msgstr ""
msgid "Enter a new password:"
msgstr ""
-#: templates/web/bromley/report/display.html:150 templates/web/bromley/report/new/fill_in_details_form.html:189 templates/web/fixmystreet/auth/general.html:61 templates/web/fixmystreet/report/new/fill_in_details_form.html:211 templates/web/fixmystreet/report/update-form.html:122 templates/web/zurich/auth/general.html:63
+#: templates/web/bromley/report/display.html:150 templates/web/bromley/report/new/fill_in_details_form.html:189 templates/web/fixmystreet/auth/general.html:61 templates/web/fixmystreet/report/new/fill_in_details_form.html:211 templates/web/fixmystreet/report/update-form.html:122 templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr ""
@@ -765,6 +847,10 @@ msgstr ""
msgid "First time"
msgstr ""
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16 templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
msgstr ""
@@ -794,7 +880,7 @@ msgid ""
"for the county council."
msgstr ""
-#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:84 templates/web/default/admin/index.html:36 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:41 templates/web/default/admin/report_edit.html:42 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:144 templates/web/default/report/update-form.html:30 templates/web/default/report/update-form.html:34 templates/web/fixmystreet/report/banner.html:12 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:32
+#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:84 templates/web/default/admin/index.html:44 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:41 templates/web/default/admin/report_edit.html:42 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:144 templates/web/default/report/update-form.html:30 templates/web/default/report/update-form.html:34 templates/web/fixmystreet/report/banner.html:12 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:32
msgid "Fixed"
msgstr ""
@@ -814,15 +900,31 @@ msgstr ""
msgid "Fixed:"
msgstr ""
+#: templates/web/default/admin/body-form.html:84 templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149 templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181 templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr ""
-#: templates/web/default/admin/report_edit.html:78 templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
+#: templates/web/default/admin/report_edit.html:78 templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr ""
@@ -834,6 +936,10 @@ msgstr ""
msgid "For council(s):"
msgstr ""
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176 templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
msgstr ""
@@ -870,7 +976,7 @@ msgstr ""
msgid "Going to send questionnaire?"
msgstr ""
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr ""
@@ -886,7 +992,7 @@ msgstr ""
msgid "Have you ever reported a problem to a council before, or is this your first time?"
msgstr ""
-#: templates/web/barnet/footer.html:24 templates/web/bromley/footer.html:25 templates/web/bromley/header.html:81 templates/web/default/footer.html:15 templates/web/emptyhomes/header.html:33 templates/web/fiksgatami/footer.html:9 templates/web/fiksgatami/nn/footer.html:9 templates/web/fixmybarangay/footer.html:24 templates/web/fixmystreet/footer.html:52 templates/web/oxfordshire/footer.html:27 templates/web/oxfordshire/header.html:75 templates/web/reading/footer.html:10 templates/web/seesomething/footer.html:13 templates/web/stevenage/footer.html:47 templates/web/zurich/faq/faq-de-ch.html:1 templates/web/zurich/footer.html:21 templates/web/zurich/nav_over_content.html:8
+#: templates/web/barnet/footer.html:24 templates/web/bromley/footer.html:25 templates/web/bromley/header.html:81 templates/web/default/footer.html:15 templates/web/emptyhomes/header.html:33 templates/web/fiksgatami/footer.html:9 templates/web/fiksgatami/nn/footer.html:9 templates/web/fixmindelo/footer.html:45 templates/web/fixmybarangay/footer.html:24 templates/web/fixmystreet/footer.html:52 templates/web/oxfordshire/footer.html:27 templates/web/oxfordshire/header.html:75 templates/web/reading/footer.html:10 templates/web/seesomething/footer.html:13 templates/web/stevenage/footer.html:47 templates/web/zurich/faq/faq-de-ch.html:1 templates/web/zurich/footer.html:21 templates/web/zurich/nav_over_content.html:8
msgid "Help"
msgstr ""
@@ -898,7 +1004,7 @@ msgstr ""
msgid "Hi %s"
msgstr ""
-#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:50 templates/web/default/admin/report_edit.html:51 templates/web/default/admin/update_edit.html:28 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:11 templates/web/zurich/admin/report_edit.html:87 templates/web/zurich/admin/report_edit.html:91 templates/web/zurich/admin/stats.html:32 templates/web/zurich/admin/update_edit.html:18
+#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:50 templates/web/default/admin/report_edit.html:51 templates/web/default/admin/update_edit.html:28 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:11 templates/web/zurich/admin/report_edit.html:89 templates/web/zurich/admin/report_edit.html:93 templates/web/zurich/admin/stats.html:32 templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
msgstr ""
@@ -914,7 +1020,7 @@ msgstr ""
msgid "History"
msgstr ""
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31 templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -922,11 +1028,11 @@ msgstr ""
msgid "How to report a problem"
msgstr ""
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33 templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr ""
@@ -942,10 +1048,22 @@ msgstr ""
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr ""
-#: templates/web/default/admin/flagged.html:9 templates/web/default/admin/list_updates.html:6 templates/web/default/admin/reports.html:11 templates/web/zurich/admin/index-dm.html:21 templates/web/zurich/admin/index-sdm.html:19 templates/web/zurich/admin/list_updates.html:6 templates/web/zurich/admin/reports.html:11
+#: templates/web/default/admin/flagged.html:14 templates/web/default/admin/list_updates.html:6 templates/web/default/admin/reports.html:11 templates/web/zurich/admin/index-dm.html:21 templates/web/zurich/admin/index-sdm.html:19 templates/web/zurich/admin/list_updates.html:28 templates/web/zurich/admin/list_updates.html:7 templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr ""
+#: templates/web/default/admin/body-form.html:24 templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -977,6 +1095,30 @@ msgid ""
"your experience of getting the problem fixed?"
msgstr ""
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200 templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187 templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173 templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr ""
@@ -989,11 +1131,15 @@ msgstr ""
msgid "In Progress"
msgstr ""
+#: templates/web/default/admin/flagged.html:39
+msgid "In abuse table?"
+msgstr ""
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:38 templates/web/fixmystreet/report/banner.html:19 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:8 templates/web/zurich/admin/report_edit.html:100 templates/web/zurich/report/banner.html:15
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:38 templates/web/fixmystreet/report/banner.html:19 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:8 templates/web/zurich/admin/report_edit.html:102 templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr ""
@@ -1001,7 +1147,7 @@ msgstr ""
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1013,8 +1159,8 @@ msgstr ""
msgid "Incorrect has_photo value \"%s\""
msgstr ""
-#: templates/web/zurich/admin/report_edit-sdm.html:55 templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:48
@@ -1025,7 +1171,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr ""
@@ -1033,7 +1179,7 @@ msgstr ""
msgid "Invalid format %s specified."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr ""
@@ -1045,7 +1191,7 @@ msgstr ""
msgid "It is worth noting however that the process can sometimes be slow, especially if the property is in very poor repair or the owner is unwilling to act. In most cases it can take six months or more before you can expect to see anything change and sometimes there may be considerable barries to a property being brought back into use. This doesn&rsquo;t mean the council isn&rsquo;t doing anything. We encourage councils to update the website so you can see what is happening. It may be a long process, but you reporting your concerns about this property to the council is a valuable first step."
msgstr ""
-#: templates/web/bromley/report/display.html:168 templates/web/bromley/report/new/fill_in_details_form.html:209 templates/web/default/auth/general.html:44 templates/web/default/report/new/fill_in_details_form.html:149 templates/web/default/report/update-form.html:104 templates/web/fixmystreet/auth/general.html:46 templates/web/fixmystreet/report/new/fill_in_details_form.html:172 templates/web/fixmystreet/report/update-form.html:100 templates/web/seesomething/auth/general.html:35 templates/web/zurich/auth/general.html:39
+#: templates/web/bromley/report/display.html:168 templates/web/bromley/report/new/fill_in_details_form.html:209 templates/web/default/auth/general.html:44 templates/web/default/report/new/fill_in_details_form.html:149 templates/web/default/report/update-form.html:104 templates/web/fixmystreet/auth/general.html:46 templates/web/fixmystreet/report/new/fill_in_details_form.html:172 templates/web/fixmystreet/report/update-form.html:100 templates/web/seesomething/auth/general.html:35 templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr ""
@@ -1053,7 +1199,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/web/default/admin/body.html:40 templates/web/zurich/admin/body.html:15
+#: templates/web/default/admin/body.html:58 templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr ""
@@ -1065,6 +1211,10 @@ msgstr ""
msgid "Last&nbsp;update:"
msgstr ""
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14 templates/web/default/admin/body.html:16
msgid "List all reported problems"
msgstr ""
@@ -1081,7 +1231,7 @@ msgstr ""
msgid "Local RSS feeds and email alerts for ‘%s’"
msgstr ""
-#: templates/web/barnet/footer.html:22 templates/web/bromley/footer.html:23 templates/web/bromley/header.html:79 templates/web/default/footer.html:13 templates/web/fiksgatami/footer.html:8 templates/web/fiksgatami/nn/footer.html:8 templates/web/fixmybarangay/footer.html:22 templates/web/fixmystreet/footer.html:50 templates/web/oxfordshire/footer.html:25 templates/web/oxfordshire/header.html:71 templates/web/reading/footer.html:9 templates/web/stevenage/footer.html:45
+#: templates/web/barnet/footer.html:22 templates/web/bromley/footer.html:23 templates/web/bromley/header.html:79 templates/web/default/footer.html:13 templates/web/fiksgatami/footer.html:8 templates/web/fiksgatami/nn/footer.html:8 templates/web/fixmindelo/footer.html:43 templates/web/fixmybarangay/footer.html:22 templates/web/fixmystreet/footer.html:50 templates/web/oxfordshire/footer.html:25 templates/web/oxfordshire/header.html:71 templates/web/reading/footer.html:9 templates/web/stevenage/footer.html:45
msgid "Local alerts"
msgstr ""
@@ -1089,7 +1239,7 @@ msgstr ""
msgid "Locate the problem on a map of the area"
msgstr ""
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43 templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1097,6 +1247,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr ""
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr ""
@@ -1121,7 +1275,7 @@ msgstr ""
msgid "More problems nearby"
msgstr ""
-#: templates/web/default/admin/bodies.html:7 templates/web/default/admin/body-form.html:4 templates/web/default/admin/flagged.html:11 templates/web/default/admin/flagged.html:28 templates/web/default/admin/list_updates.html:8 templates/web/default/admin/reports.html:13 templates/web/default/admin/users.html:12 templates/web/default/reports/index.html:15 templates/web/emptyhomes/reports/index.html:9 templates/web/fiksgatami/nn/reports/index.html:9 templates/web/fiksgatami/reports/index.html:9 templates/web/fixmybarangay/reports/index.html:15 templates/web/fixmystreet/auth/general.html:56 templates/web/fixmystreet/report/new/fill_in_details_form.html:120 templates/web/fixmystreet/report/new/fill_in_details_form.html:187 templates/web/fixmystreet/report/update-form.html:136 templates/web/zurich/admin/body-form.html:4 templates/web/zurich/auth/general.html:58 templates/web/zurich/report/new/fill_in_details_form.html:100
+#: templates/web/default/admin/bodies.html:16 templates/web/default/admin/body-form.html:18 templates/web/default/admin/flagged.html:16 templates/web/default/admin/flagged.html:37 templates/web/default/admin/list_updates.html:7 templates/web/default/admin/reports.html:13 templates/web/default/admin/users.html:15 templates/web/default/reports/index.html:15 templates/web/emptyhomes/reports/index.html:9 templates/web/fiksgatami/nn/reports/index.html:9 templates/web/fiksgatami/reports/index.html:9 templates/web/fixmybarangay/reports/index.html:15 templates/web/fixmystreet/auth/general.html:56 templates/web/fixmystreet/report/new/fill_in_details_form.html:120 templates/web/fixmystreet/report/new/fill_in_details_form.html:187 templates/web/fixmystreet/report/update-form.html:136 templates/web/zurich/admin/body-form.html:4 templates/web/zurich/auth/general.html:60 templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr ""
@@ -1129,11 +1283,11 @@ msgstr ""
msgid "Name (optional)"
msgstr ""
-#: templates/web/default/admin/report_edit.html:66 templates/web/default/admin/update_edit.html:32 templates/web/default/admin/user-form.html:5 templates/web/zurich/admin/report_edit-sdm.html:43 templates/web/zurich/admin/report_edit.html:57 templates/web/zurich/admin/stats.html:41
+#: templates/web/default/admin/report_edit.html:66 templates/web/default/admin/update_edit.html:32 templates/web/default/admin/user-form.html:18 templates/web/zurich/admin/report_edit-sdm.html:46 templates/web/zurich/admin/report_edit.html:59 templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1167,14 +1321,18 @@ msgstr ""
msgid "New <br>problems"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr ""
+#: templates/web/zurich/admin/report_edit-sdm.html:58 templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr ""
@@ -1235,7 +1393,7 @@ msgstr ""
msgid "New state"
msgstr ""
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1247,11 +1405,11 @@ msgstr ""
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50 templates/web/default/admin/body.html:51 templates/web/default/admin/body.html:52 templates/web/default/admin/body_edit.html:4 templates/web/default/admin/list_updates.html:37 templates/web/default/admin/list_updates.html:38 templates/web/default/admin/list_updates.html:39 templates/web/default/admin/problem_row.html:20 templates/web/default/admin/report_edit.html:64 templates/web/default/admin/report_edit.html:77 templates/web/default/admin/update_edit.html:25 templates/web/default/questionnaire/creator_fixed.html:16 templates/web/default/questionnaire/index.html:111 templates/web/default/questionnaire/index.html:68 templates/web/fixmystreet/questionnaire/index.html:101 templates/web/fixmystreet/questionnaire/index.html:62
+#: templates/web/default/admin/body.html:68 templates/web/default/admin/body.html:69 templates/web/default/admin/body.html:70 templates/web/default/admin/body_edit.html:4 templates/web/default/admin/list_updates.html:32 templates/web/default/admin/list_updates.html:34 templates/web/default/admin/list_updates.html:35 templates/web/default/admin/problem_row.html:20 templates/web/default/admin/report_edit.html:64 templates/web/default/admin/report_edit.html:77 templates/web/default/admin/update_edit.html:25 templates/web/default/questionnaire/creator_fixed.html:16 templates/web/default/questionnaire/index.html:111 templates/web/default/questionnaire/index.html:68 templates/web/fixmystreet/questionnaire/index.html:101 templates/web/fixmystreet/questionnaire/index.html:62
msgid "No"
msgstr ""
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1259,23 +1417,23 @@ msgstr ""
msgid "No council"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr ""
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr ""
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+msgid "No flagged problems found."
msgstr ""
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+msgid "No flagged users found."
msgstr ""
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1287,22 +1445,36 @@ msgstr ""
msgid "No problems have been reported yet."
msgstr ""
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38 templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60 templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2 templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr ""
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr ""
-#: templates/web/default/admin/report_edit.html:30 templates/web/zurich/admin/report_edit-sdm.html:46 templates/web/zurich/admin/report_edit.html:61
+#: templates/web/default/admin/report_edit.html:30 templates/web/zurich/admin/report_edit-sdm.html:49 templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr ""
+#: templates/web/default/admin/user-form.html:24 templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80 templates/web/bromley/report/display.html:83 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:46 templates/web/default/report/update-form.html:30 templates/web/default/report/update-form.html:33 templates/web/fixmystreet/report/update-form.html:28 templates/web/fixmystreet/report/update-form.html:31
msgid "Not Responsible"
msgstr ""
@@ -1315,11 +1487,11 @@ msgstr ""
msgid "Not reported before"
msgstr ""
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr ""
-#: templates/web/default/admin/body.html:41 templates/web/default/admin/body_edit.html:87 templates/web/zurich/admin/body.html:16
+#: templates/web/default/admin/body.html:59 templates/web/default/admin/body_edit.html:87 templates/web/zurich/admin/body.html:16
msgid "Note"
msgstr ""
@@ -1327,7 +1499,7 @@ msgstr ""
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr ""
-#: templates/web/default/admin/body.html:92 templates/web/default/admin/body_edit.html:44 templates/web/zurich/admin/body.html:47
+#: templates/web/default/admin/body.html:157 templates/web/default/admin/body_edit.html:44 templates/web/zurich/admin/body.html:47
msgid "Note:"
msgstr ""
@@ -1351,7 +1523,7 @@ msgstr ""
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr ""
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42 templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1387,7 +1559,7 @@ msgstr ""
msgid "Older problems"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74 templates/web/bromley/report/display.html:80 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:36 templates/web/default/admin/report_edit.html:37 templates/web/default/admin/update_edit.html:28 templates/web/default/dashboard/index.html:142 templates/web/default/report/update-form.html:30 templates/web/fixmystreet/report/update-form.html:28 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:7 templates/web/zurich/admin/report_edit.html:87 templates/web/zurich/admin/report_edit.html:89 templates/web/zurich/admin/update_edit.html:18 templates/web/zurich/report/banner.html:11
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115 templates/web/bromley/report/display.html:80 templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:36 templates/web/default/admin/report_edit.html:37 templates/web/default/admin/update_edit.html:28 templates/web/default/dashboard/index.html:142 templates/web/default/report/update-form.html:30 templates/web/fixmystreet/report/update-form.html:28 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:7 templates/web/zurich/admin/report_edit.html:89 templates/web/zurich/admin/report_edit.html:91 templates/web/zurich/admin/update_edit.html:18 templates/web/zurich/report/banner.html:11
msgid "Open"
msgstr ""
@@ -1415,7 +1587,7 @@ msgstr ""
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046 perllib/FixMyStreet/App/Controller/Report/New.pm:664 perllib/FixMyStreet/App/Controller/Report/New.pm:665 perllib/FixMyStreet/DB/Result/Problem.pm:578 perllib/FixMyStreet/DB/Result/Problem.pm:588 perllib/FixMyStreet/DB/Result/Problem.pm:598 perllib/FixMyStreet/DB/Result/Problem.pm:610 perllib/FixMyStreet/DB/ResultSet/Problem.pm:357 perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053 perllib/FixMyStreet/App/Controller/Report/New.pm:664 perllib/FixMyStreet/App/Controller/Report/New.pm:665 perllib/FixMyStreet/DB/Result/Problem.pm:544 perllib/FixMyStreet/DB/Result/Problem.pm:554 perllib/FixMyStreet/DB/Result/Problem.pm:564 perllib/FixMyStreet/DB/Result/Problem.pm:576 perllib/FixMyStreet/DB/ResultSet/Problem.pm:361 perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr ""
@@ -1423,7 +1595,7 @@ msgstr ""
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr ""
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr ""
@@ -1431,7 +1603,7 @@ msgstr ""
msgid "Page Not Found"
msgstr ""
-#: templates/web/default/admin/body-form.html:9 templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31 templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1439,7 +1611,7 @@ msgstr ""
msgid "Partial"
msgstr ""
-#: templates/web/bromley/report/display.html:147 templates/web/bromley/report/new/fill_in_details_form.html:186 templates/web/fixmystreet/auth/general.html:59 templates/web/fixmystreet/report/new/fill_in_details_form.html:208 templates/web/fixmystreet/report/update-form.html:119 templates/web/zurich/auth/general.html:32 templates/web/zurich/auth/general.html:61
+#: templates/web/bromley/report/display.html:147 templates/web/bromley/report/new/fill_in_details_form.html:186 templates/web/fixmystreet/auth/general.html:59 templates/web/fixmystreet/report/new/fill_in_details_form.html:208 templates/web/fixmystreet/report/update-form.html:119 templates/web/zurich/auth/general.html:32 templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr ""
@@ -1447,19 +1619,23 @@ msgstr ""
msgid "Password:"
msgstr ""
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
-#: templates/web/bromley/report/new/fill_in_details_form.html:136 templates/web/bromley/report/new/fill_in_details_form.html:183 templates/web/fixmystreet/report/new/fill_in_details_form.html:138 templates/web/fixmystreet/report/new/fill_in_details_form.html:205 templates/web/seesomething/report/new/fill_in_details_form.html:89 templates/web/zurich/report/new/fill_in_details_form.html:106
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+msgid "Phone number"
+msgstr ""
+
+#: templates/web/bromley/report/new/fill_in_details_form.html:136 templates/web/bromley/report/new/fill_in_details_form.html:183 templates/web/fixmystreet/report/new/fill_in_details_form.html:138 templates/web/fixmystreet/report/new/fill_in_details_form.html:205 templates/web/seesomething/report/new/fill_in_details_form.html:89
msgid "Phone number (optional)"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278 templates/web/default/admin/report_edit.html:68 templates/web/default/report/new/fill_in_details_form.html:215 templates/web/emptyhomes/report/new/fill_in_details_form.html:138 templates/web/zurich/admin/report_edit-sdm.html:46 templates/web/zurich/admin/report_edit.html:61 templates/web/zurich/admin/stats.html:39
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282 templates/web/default/admin/report_edit.html:68 templates/web/default/report/new/fill_in_details_form.html:215 templates/web/emptyhomes/report/new/fill_in_details_form.html:138 templates/web/zurich/admin/report_edit-sdm.html:49 templates/web/zurich/admin/report_edit.html:63 templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr ""
-#: templates/web/bromley/report/display.html:111 templates/web/bromley/report/new/fill_in_details_form.html:104 templates/web/fixmystreet/report/new/fill_in_details_form.html:92 templates/web/fixmystreet/report/update-form.html:59 templates/web/seesomething/report/new/fill_in_details_form.html:52 templates/web/zurich/admin/index-dm.html:29 templates/web/zurich/admin/index-sdm.html:24 templates/web/zurich/admin/stats.html:37 templates/web/zurich/report/new/fill_in_details_form.html:68
+#: templates/web/bromley/report/display.html:111 templates/web/bromley/report/new/fill_in_details_form.html:104 templates/web/fixmystreet/report/new/fill_in_details_form.html:92 templates/web/fixmystreet/report/update-form.html:59 templates/web/seesomething/report/new/fill_in_details_form.html:52 templates/web/zurich/admin/index-dm.html:29 templates/web/zurich/admin/index-sdm.html:24 templates/web/zurich/admin/reports.html:16 templates/web/zurich/admin/stats.html:37 templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
msgstr ""
@@ -1471,11 +1647,11 @@ msgstr ""
msgid "Photos of recent nearby reports"
msgstr ""
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30 templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
-#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:38 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:143 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:9 templates/web/zurich/admin/index-dm.html:9 templates/web/zurich/admin/report_edit.html:87 templates/web/zurich/admin/report_edit.html:90
+#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:38 templates/web/default/dashboard/index.html:142 templates/web/default/dashboard/index.html:143 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:9 templates/web/zurich/admin/index-dm.html:9 templates/web/zurich/admin/report_edit.html:89 templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr ""
@@ -1499,11 +1675,11 @@ msgstr ""
msgid "Please check your email address is correct"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:848 perllib/FixMyStreet/App/Controller/Report/New.pm:855 perllib/FixMyStreet/App/Controller/Report/New.pm:874 perllib/FixMyStreet/App/Controller/Report/New.pm:917 perllib/FixMyStreet/DB/Result/Problem.pm:420 templates/web/default/js/translation_strings.html:9
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:848 perllib/FixMyStreet/App/Controller/Report/New.pm:855 perllib/FixMyStreet/App/Controller/Report/New.pm:874 perllib/FixMyStreet/App/Controller/Report/New.pm:917 perllib/FixMyStreet/DB/Result/Problem.pm:381 templates/web/default/js/translation_strings.html:9 templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr ""
@@ -1534,19 +1710,19 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145 templates/web/default/js/translation_strings.html:2
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126 templates/web/default/js/translation_strings.html:2 templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr ""
-#: templates/web/default/auth/change_password.html:12 templates/web/default/auth/change_password.html:15
+#: templates/web/default/auth/change_password.html:12 templates/web/default/auth/change_password.html:15 templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Contact.pm:97 perllib/FixMyStreet/DB/Result/Problem.pm:395 templates/web/default/js/translation_strings.html:3
+#: perllib/FixMyStreet/App/Controller/Contact.pm:97 perllib/FixMyStreet/DB/Result/Problem.pm:356 templates/web/default/js/translation_strings.html:3 templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/User.pm:115 templates/web/default/js/translation_strings.html:12 templates/web/default/js/translation_strings.html:16 templates/web/seesomething/js/translation_strings.html:10 templates/web/seesomething/js/translation_strings.html:13
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032 perllib/FixMyStreet/App/Controller/Admin.pm:979 perllib/FixMyStreet/DB/Result/User.pm:115 templates/web/default/js/translation_strings.html:12 templates/web/default/js/translation_strings.html:16 templates/web/oxfordshire/js/translation_strings.html:12 templates/web/oxfordshire/js/translation_strings.html:16 templates/web/seesomething/js/translation_strings.html:10 templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
msgstr ""
@@ -1554,11 +1730,11 @@ msgstr ""
msgid "Please enter a valid email address"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398 templates/web/default/js/translation_strings.html:4 templates/web/seesomething/js/translation_strings.html:2
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359 templates/web/default/js/translation_strings.html:4 templates/web/oxfordshire/js/translation_strings.html:4 templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Contact.pm:96 perllib/FixMyStreet/DB/Result/User.pm:112 templates/web/default/auth/general.html:13 templates/web/default/auth/general.html:8 templates/web/default/js/translation_strings.html:11 templates/web/default/js/translation_strings.html:15 templates/web/fixmystreet/auth/general.html:14 templates/web/fixmystreet/auth/general.html:9 templates/web/seesomething/auth/general.html:14 templates/web/seesomething/auth/general.html:9 templates/web/seesomething/js/translation_strings.html:9 templates/web/zurich/auth/general.html:3 templates/web/zurich/auth/general.html:8
+#: perllib/FixMyStreet/App/Controller/Contact.pm:96 perllib/FixMyStreet/DB/Result/User.pm:112 templates/web/default/auth/general.html:13 templates/web/default/auth/general.html:8 templates/web/default/js/translation_strings.html:11 templates/web/default/js/translation_strings.html:15 templates/web/fixmystreet/auth/general.html:14 templates/web/fixmystreet/auth/general.html:9 templates/web/oxfordshire/js/translation_strings.html:11 templates/web/oxfordshire/js/translation_strings.html:15 templates/web/seesomething/auth/general.html:14 templates/web/seesomething/auth/general.html:9 templates/web/seesomething/js/translation_strings.html:9 templates/web/zurich/auth/general.html:3 templates/web/zurich/auth/general.html:8
msgid "Please enter your email"
msgstr ""
@@ -1566,23 +1742,27 @@ msgstr ""
msgid "Please enter your email address"
msgstr ""
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25 templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413 templates/web/default/js/translation_strings.html:7 templates/web/seesomething/js/translation_strings.html:4
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374 templates/web/default/js/translation_strings.html:7 templates/web/oxfordshire/js/translation_strings.html:7 templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Contact.pm:95 perllib/FixMyStreet/DB/Result/Comment.pm:142 perllib/FixMyStreet/DB/Result/Problem.pm:406 perllib/FixMyStreet/DB/Result/User.pm:108 templates/web/default/js/translation_strings.html:6
+#: perllib/FixMyStreet/App/Controller/Contact.pm:95 perllib/FixMyStreet/DB/Result/Comment.pm:123 perllib/FixMyStreet/DB/Result/Problem.pm:367 perllib/FixMyStreet/DB/Result/User.pm:108 templates/web/default/js/translation_strings.html:6 templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr ""
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+msgid "Please enter your phone number"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:26 templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr ""
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24 templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr ""
@@ -1679,11 +1859,11 @@ msgstr ""
msgid "Please take a look at the updates that have been left."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr ""
@@ -1715,7 +1895,7 @@ msgstr ""
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97 templates/web/default/admin/body_edit.html:40 templates/web/default/admin/report_edit.html:79
+#: templates/web/default/admin/body.html:173 templates/web/default/admin/body_edit.html:40 templates/web/default/admin/report_edit.html:79
msgid "Private"
msgstr ""
@@ -1739,11 +1919,11 @@ msgstr ""
msgid "Problem %s sent to council %s"
msgstr ""
-#: templates/web/default/admin/index.html:28 templates/web/zurich/admin/index.html:9
+#: templates/web/default/admin/index.html:36 templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr ""
@@ -1751,7 +1931,7 @@ msgstr ""
msgid "Problem state change based on survey results"
msgstr ""
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr ""
@@ -1823,7 +2003,7 @@ msgstr ""
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr ""
-#: templates/web/default/admin/body.html:42 templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60 templates/web/default/admin/body.html:73
msgid "Public"
msgstr ""
@@ -1831,15 +2011,15 @@ msgstr ""
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178 templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198 templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78 templates/web/zurich/admin/stats.html:38
+#: templates/web/zurich/admin/report_edit.html:80 templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -1943,7 +2123,7 @@ msgstr ""
msgid "Report Empty Homes"
msgstr ""
-#: templates/web/barnet/footer.html:16 templates/web/bromley/footer.html:17 templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31 templates/web/fiksgatami/footer.html:5 templates/web/fiksgatami/nn/footer.html:5 templates/web/fixmystreet/footer.html:44 templates/web/oxfordshire/footer.html:19 templates/web/reading/footer.html:6 templates/web/seesomething/footer.html:11 templates/web/stevenage/footer.html:39 templates/web/zurich/footer.html:17 templates/web/zurich/nav_over_content.html:4
+#: templates/web/barnet/footer.html:16 templates/web/bromley/footer.html:17 templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31 templates/web/fiksgatami/footer.html:5 templates/web/fiksgatami/nn/footer.html:5 templates/web/fixmindelo/footer.html:37 templates/web/fixmystreet/footer.html:44 templates/web/oxfordshire/footer.html:19 templates/web/reading/footer.html:6 templates/web/seesomething/footer.html:11 templates/web/stevenage/footer.html:39 templates/web/zurich/footer.html:17 templates/web/zurich/nav_over_content.html:4
msgid "Report a problem"
msgstr ""
@@ -1971,7 +2151,7 @@ msgstr ""
msgid "Reported %s, to %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593 templates/web/default/contact/index.html:45 templates/web/fixmystreet/contact/index.html:58
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559 templates/web/default/contact/index.html:45 templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
msgstr ""
@@ -1979,48 +2159,48 @@ msgstr ""
msgid "Reported before"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582 templates/web/default/contact/index.html:47 templates/web/fixmystreet/contact/index.html:60
+msgid "Reported by %s at %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616 templates/web/default/contact/index.html:47 templates/web/fixmystreet/contact/index.html:60
-msgid "Reported by %s at %s"
+#: templates/web/zurich/report/_main.html:2
+msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
+msgid "Reported in the %s category anonymously at %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
+msgid "Reported in the %s category by %s at %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
msgstr ""
-#: templates/web/zurich/report/_main.html:2
-msgid "Reported in the %s category"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
-msgid "Reported in the %s category anonymously at %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
-msgid "Reported in the %s category by %s at %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
msgstr ""
-#: templates/web/default/around/around_index.html:1 templates/web/default/js/translation_strings.html:35 templates/web/default/report/new/fill_in_details.html:0 templates/web/default/report/new/fill_in_details.html:3 templates/web/default/report/new/fill_in_details_form.html:1 templates/web/emptyhomes/report/new/fill_in_details_form.html:1 templates/web/fixmystreet/around/around_index.html:2 templates/web/fixmystreet/report/new/fill_in_details.html:0 templates/web/fixmystreet/report/new/fill_in_details.html:5 templates/web/fixmystreet/report/new/fill_in_details_form.html:2 templates/web/seesomething/around/around_index.html:1 templates/web/seesomething/report/new/fill_in_details_form.html:3 templates/web/zurich/report/new/fill_in_details_form.html:2
+#: templates/web/default/around/around_index.html:1 templates/web/default/js/translation_strings.html:41 templates/web/default/report/new/fill_in_details.html:0 templates/web/default/report/new/fill_in_details.html:3 templates/web/default/report/new/fill_in_details_form.html:1 templates/web/emptyhomes/report/new/fill_in_details_form.html:1 templates/web/fixmystreet/around/around_index.html:2 templates/web/fixmystreet/report/new/fill_in_details.html:0 templates/web/fixmystreet/report/new/fill_in_details.html:5 templates/web/fixmystreet/report/new/fill_in_details_form.html:2 templates/web/oxfordshire/js/translation_strings.html:35 templates/web/seesomething/around/around_index.html:1 templates/web/seesomething/report/new/fill_in_details_form.html:3 templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145 perllib/FixMyStreet/Cobrand/Zurich.pm:201 templates/web/seesomething/admin/stats.html:1 templates/web/zurich/header.html:60
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177 perllib/FixMyStreet/Cobrand/Zurich.pm:242 templates/web/seesomething/admin/stats.html:1 templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393 perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2039,7 +2219,7 @@ msgstr ""
msgid "Resend report"
msgstr ""
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28 templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2051,11 +2231,11 @@ msgstr ""
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344 perllib/FixMyStreet/App/Controller/Admin.pm:1355 templates/web/default/admin/report_edit.html:85 templates/web/zurich/admin/report_edit.html:74
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377 perllib/FixMyStreet/App/Controller/Admin.pm:1388 templates/web/default/admin/report_edit.html:85 templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344 templates/web/default/admin/report_edit.html:86 templates/web/zurich/admin/report_edit.html:75
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377 templates/web/default/admin/report_edit.html:86 templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2063,7 +2243,7 @@ msgstr ""
msgid "Save changes"
msgstr ""
-#: templates/web/default/admin/flagged.html:1 templates/web/default/admin/reports.html:1 templates/web/zurich/admin/reports.html:1
+#: templates/web/default/admin/reports.html:1 templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
msgstr ""
@@ -2075,15 +2255,23 @@ msgstr ""
msgid "Search reports"
msgstr ""
-#: templates/web/default/admin/reports.html:5 templates/web/default/admin/users.html:5 templates/web/zurich/admin/reports.html:5
+#: templates/web/default/admin/reports.html:5 templates/web/default/admin/users.html:8 templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr ""
-#: templates/web/default/admin/body-form.html:11 templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+msgid "Searching found no reports."
+msgstr ""
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33 templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21 templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71 templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2091,7 +2279,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr ""
@@ -2143,6 +2331,12 @@ msgstr ""
msgid "Some categories may require additional information."
msgstr ""
+#: templates/web/default/admin/body-form.html:145 templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42 templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
msgstr ""
@@ -2172,26 +2366,18 @@ msgid "Source code"
msgstr ""
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
+msgid "Start Date:"
msgstr ""
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr ""
-
-#: templates/web/bromley/report/display.html:78 templates/web/default/admin/flagged.html:13 templates/web/default/admin/list_updates.html:7 templates/web/default/admin/reports.html:15 templates/web/fixmystreet/report/update-form.html:26
+#: templates/web/bromley/report/display.html:78 templates/web/default/admin/flagged.html:18 templates/web/default/admin/list_updates.html:11 templates/web/default/admin/reports.html:15 templates/web/fixmystreet/report/update-form.html:26
msgid "State"
msgstr ""
-#: templates/web/default/admin/report_edit.html:34 templates/web/default/admin/update_edit.html:27 templates/web/default/report/update-form.html:28 templates/web/zurich/admin/report_edit-sdm.html:53 templates/web/zurich/admin/report_edit.html:85 templates/web/zurich/admin/update_edit.html:17
+#: templates/web/default/admin/report_edit.html:34 templates/web/default/admin/update_edit.html:27 templates/web/default/report/update-form.html:28 templates/web/zurich/admin/report_edit-sdm.html:56 templates/web/zurich/admin/report_edit.html:87 templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150 perllib/FixMyStreet/Cobrand/Zurich.pm:216 templates/web/default/admin/stats.html:1 templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182 perllib/FixMyStreet/Cobrand/Zurich.pm:257 templates/web/default/admin/stats.html:1 templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
msgstr ""
@@ -2203,7 +2389,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -2215,15 +2401,15 @@ msgstr ""
msgid "Subject"
msgstr ""
-#: templates/web/default/admin/report_edit.html:19 templates/web/default/contact/index.html:83 templates/web/default/report/new/fill_in_details_form.html:52 templates/web/emptyhomes/report/new/fill_in_details_form.html:70 templates/web/zurich/admin/report_edit.html:35
+#: templates/web/default/admin/report_edit.html:19 templates/web/default/contact/index.html:83 templates/web/default/report/new/fill_in_details_form.html:52 templates/web/emptyhomes/report/new/fill_in_details_form.html:70 templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr ""
-#: templates/web/bromley/report/new/fill_in_details_form.html:140 templates/web/bromley/report/new/fill_in_details_form.html:190 templates/web/bromley/report/new/fill_in_details_form.html:204 templates/web/default/questionnaire/creator_fixed.html:19 templates/web/default/report/new/fill_in_details_form.html:114 templates/web/default/report/new/fill_in_details_form.html:154 templates/web/default/report/new/fill_in_details_form.html:176 templates/web/emptyhomes/report/new/fill_in_details_form.html:144 templates/web/fixmystreet/report/new/fill_in_details_form.html:142 templates/web/fixmystreet/report/new/fill_in_details_form.html:167 templates/web/fixmystreet/report/new/fill_in_details_form.html:212 templates/web/seesomething/report/new/fill_in_details_form.html:93 templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/bromley/report/new/fill_in_details_form.html:140 templates/web/bromley/report/new/fill_in_details_form.html:190 templates/web/bromley/report/new/fill_in_details_form.html:204 templates/web/default/questionnaire/creator_fixed.html:19 templates/web/default/report/new/fill_in_details_form.html:114 templates/web/default/report/new/fill_in_details_form.html:154 templates/web/default/report/new/fill_in_details_form.html:176 templates/web/emptyhomes/report/new/fill_in_details_form.html:144 templates/web/fixmystreet/report/new/fill_in_details_form.html:142 templates/web/fixmystreet/report/new/fill_in_details_form.html:167 templates/web/fixmystreet/report/new/fill_in_details_form.html:212 templates/web/seesomething/report/new/fill_in_details_form.html:93 templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr ""
-#: templates/web/default/admin/report_edit.html:92 templates/web/default/admin/update_edit.html:60 templates/web/default/admin/user-form.html:17 templates/web/zurich/admin/report_edit-sdm.html:64 templates/web/zurich/admin/report_edit.html:204 templates/web/zurich/admin/update_edit.html:38
+#: templates/web/default/admin/report_edit.html:92 templates/web/default/admin/update_edit.html:60 templates/web/default/admin/user-form.html:55 templates/web/zurich/admin/report_edit-sdm.html:67 templates/web/zurich/admin/report_edit.html:224 templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr ""
@@ -2231,7 +2417,7 @@ msgstr ""
msgid "Submit questionnaire"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:6 templates/web/zurich/admin/index-dm.html:23 templates/web/zurich/admin/index-dm.html:6 templates/web/zurich/admin/index-sdm.html:21 templates/web/zurich/admin/report_edit.html:87 templates/web/zurich/admin/report_edit.html:88 templates/web/zurich/admin/reports.html:13 templates/web/zurich/report/banner.html:9
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111 templates/web/zurich/admin/header.html:1 templates/web/zurich/admin/header.html:6 templates/web/zurich/admin/index-dm.html:23 templates/web/zurich/admin/index-dm.html:6 templates/web/zurich/admin/index-sdm.html:21 templates/web/zurich/admin/report_edit.html:89 templates/web/zurich/admin/report_edit.html:90 templates/web/zurich/admin/reports.html:13 templates/web/zurich/report/banner.html:9
msgid "Submitted"
msgstr ""
@@ -2247,7 +2433,7 @@ msgstr ""
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143 perllib/FixMyStreet/Cobrand/Zurich.pm:200 templates/web/default/admin/index.html:1 templates/web/zurich/admin/index-dm.html:1 templates/web/zurich/admin/index-sdm.html:1 templates/web/zurich/admin/index.html:1 templates/web/zurich/footer.html:12 templates/web/zurich/header.html:57
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175 perllib/FixMyStreet/Cobrand/Zurich.pm:241 templates/web/default/admin/index.html:1 templates/web/zurich/admin/index-dm.html:1 templates/web/zurich/admin/index-sdm.html:1 templates/web/zurich/admin/index.html:1 templates/web/zurich/footer.html:12 templates/web/zurich/header.html:57
msgid "Summary"
msgstr ""
@@ -2255,7 +2441,7 @@ msgstr ""
msgid "Summary reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -2263,7 +2449,7 @@ msgstr ""
msgid "Survey Results"
msgstr ""
-#: templates/web/default/admin/list_updates.html:15 templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12 templates/web/zurich/admin/list_updates.html:10 templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr ""
@@ -2311,7 +2497,7 @@ msgstr ""
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr ""
@@ -2327,7 +2513,7 @@ msgstr ""
msgid "That postcode was not recognised, sorry."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr ""
@@ -2339,10 +2525,40 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr ""
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119 templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132 templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90 templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr ""
+#: templates/web/default/admin/body-form.html:11 templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19 templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
msgstr ""
@@ -2359,6 +2575,10 @@ msgstr ""
msgid "The details of your problem are available on the right hand side of this page."
msgstr ""
+#: templates/web/default/admin/edit-league.html:3 templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60 perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
msgstr ""
@@ -2415,6 +2635,10 @@ msgstr ""
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr ""
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12 templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
msgstr ""
@@ -2431,10 +2655,16 @@ msgstr ""
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr ""
+#: templates/web/default/admin/user-form.html:12 templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr ""
@@ -2463,19 +2693,45 @@ msgstr ""
msgid "There were problems with your update. Please see below."
msgstr ""
+#: templates/web/default/admin/body-form.html:108 templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52 templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:894 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131 perllib/FixMyStreet/Cobrand/UK.pm:58
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:894 perllib/FixMyStreet/App/Controller/Report/New.pm:964 perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131 perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
msgstr ""
@@ -2519,7 +2775,7 @@ msgstr ""
msgid "This problem is old and of unknown status."
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67 perllib/FixMyStreet/Cobrand/Zurich.pm:68 templates/web/zurich/report/_main.html:14
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108 perllib/FixMyStreet/Cobrand/Zurich.pm:109 templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -2535,19 +2791,19 @@ msgstr ""
msgid "This report is currently marked as open."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146 templates/web/default/admin/timeline.html:1
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178 templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr ""
-#: templates/web/default/admin/flagged.html:10 templates/web/default/admin/reports.html:12
+#: templates/web/default/admin/flagged.html:15 templates/web/default/admin/reports.html:12
msgid "Title"
msgstr ""
@@ -2559,11 +2815,11 @@ msgstr ""
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr ""
-#: templates/web/default/admin/index.html:36 templates/web/default/admin/questionnaire.html:24 templates/web/default/admin/stats.html:24 templates/web/default/admin/stats.html:43 templates/web/zurich/admin/stats.html:30
+#: templates/web/default/admin/index.html:44 templates/web/default/admin/questionnaire.html:24 templates/web/default/admin/stats.html:24 templates/web/default/admin/stats.html:43 templates/web/zurich/admin/stats.html:30
msgid "Total"
msgstr ""
@@ -2571,7 +2827,7 @@ msgstr ""
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29 templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -2579,7 +2835,7 @@ msgstr ""
msgid "Unable to fix"
msgstr ""
-#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:51 templates/web/default/admin/update_edit.html:28 templates/web/zurich/admin/report_edit-sdm.html:45 templates/web/zurich/admin/report_edit.html:59 templates/web/zurich/admin/update_edit.html:18
+#: templates/web/default/admin/report_edit.html:35 templates/web/default/admin/report_edit.html:51 templates/web/default/admin/update_edit.html:28 templates/web/zurich/admin/report_edit-sdm.html:48 templates/web/zurich/admin/report_edit.html:61 templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr ""
@@ -2591,7 +2847,7 @@ msgstr ""
msgid "Unknown alert type"
msgstr ""
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39 templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -2615,11 +2871,11 @@ msgstr ""
msgid "Update below added by %s at %s"
msgstr ""
-#: templates/web/default/admin/body-form.html:82 templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233 templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr ""
@@ -2639,7 +2895,7 @@ msgstr ""
msgid "Update reopened problem"
msgstr ""
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr ""
@@ -2651,15 +2907,15 @@ msgstr ""
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011 perllib/FixMyStreet/App/Controller/Admin.pm:775 perllib/FixMyStreet/App/Controller/Admin.pm:919 perllib/FixMyStreet/App/Controller/Admin.pm:972 perllib/FixMyStreet/Cobrand/Zurich.pm:424 perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042 perllib/FixMyStreet/App/Controller/Admin.pm:796 perllib/FixMyStreet/App/Controller/Admin.pm:940 perllib/FixMyStreet/App/Controller/Admin.pm:998 perllib/FixMyStreet/Cobrand/Zurich.pm:487 perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr ""
-#: templates/web/default/admin/list_updates.html:2 templates/web/default/report/update.html:3 templates/web/fixmystreet/report/update.html:3 templates/web/zurich/admin/list_updates.html:2 templates/web/zurich/report/updates.html:2
+#: templates/web/default/admin/list_updates.html:2 templates/web/default/report/update.html:3 templates/web/fixmystreet/report/update.html:3 templates/web/zurich/admin/list_updates.html:24 templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -2671,19 +2927,31 @@ msgstr ""
msgid "Updates to this problem, FixMyStreet"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30 templates/web/zurich/admin/list_updates.html:9
+msgid "User"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148 perllib/FixMyStreet/Cobrand/Zurich.pm:215 templates/web/default/admin/flagged.html:24 templates/web/zurich/header.html:69
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180 perllib/FixMyStreet/Cobrand/Zurich.pm:256 templates/web/default/admin/flagged.html:29 templates/web/zurich/header.html:69
msgid "Users"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357 perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371 perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr ""
@@ -2735,7 +3003,7 @@ msgstr ""
msgid "We never show your email address or phone number."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr ""
@@ -2759,7 +3027,7 @@ msgstr ""
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr ""
-#: templates/web/default/admin/body.html:43 templates/web/default/admin/body_edit.html:82 templates/web/zurich/admin/body.html:17
+#: templates/web/default/admin/body.html:61 templates/web/default/admin/body_edit.html:82 templates/web/zurich/admin/body.html:17
msgid "When edited"
msgstr ""
@@ -2795,7 +3063,7 @@ msgstr ""
msgid "Year"
msgstr ""
-#: templates/web/default/admin/body.html:50 templates/web/default/admin/body.html:51 templates/web/default/admin/body.html:52 templates/web/default/admin/body_edit.html:5 templates/web/default/admin/list_updates.html:37 templates/web/default/admin/list_updates.html:38 templates/web/default/admin/list_updates.html:39 templates/web/default/admin/problem_row.html:20 templates/web/default/admin/report_edit.html:63 templates/web/default/admin/report_edit.html:77 templates/web/default/admin/update_edit.html:24 templates/web/default/admin/users.html:26 templates/web/default/questionnaire/creator_fixed.html:14 templates/web/default/questionnaire/index.html:109 templates/web/default/questionnaire/index.html:66 templates/web/fixmystreet/questionnaire/index.html:60 templates/web/fixmystreet/questionnaire/index.html:99
+#: templates/web/default/admin/bodies.html:57 templates/web/default/admin/body.html:68 templates/web/default/admin/body.html:69 templates/web/default/admin/body.html:70 templates/web/default/admin/body_edit.html:5 templates/web/default/admin/flagged.html:47 templates/web/default/admin/list_updates.html:32 templates/web/default/admin/list_updates.html:34 templates/web/default/admin/list_updates.html:35 templates/web/default/admin/problem_row.html:20 templates/web/default/admin/report_edit.html:63 templates/web/default/admin/report_edit.html:77 templates/web/default/admin/update_edit.html:24 templates/web/default/admin/users.html:29 templates/web/default/questionnaire/creator_fixed.html:14 templates/web/default/questionnaire/index.html:109 templates/web/default/questionnaire/index.html:66 templates/web/fixmystreet/questionnaire/index.html:60 templates/web/fixmystreet/questionnaire/index.html:99
msgid "Yes"
msgstr ""
@@ -2815,11 +3083,26 @@ msgstr ""
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11 templates/web/default/report/new/councils_text_none.html:13 templates/web/default/report/new/councils_text_some.html:20 templates/web/default/report/new/councils_text_some.html:22
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr ""
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36 templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -2875,6 +3158,17 @@ msgstr ""
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr ""
@@ -2891,7 +3185,7 @@ msgstr ""
msgid "Your email (optional)"
msgstr ""
-#: templates/web/bromley/report/display.html:132 templates/web/fixmystreet/auth/general.html:26 templates/web/fixmystreet/report/update-form.html:80 templates/web/seesomething/auth/general.html:26 templates/web/zurich/auth/general.html:30 templates/web/zurich/auth/general.html:56
+#: templates/web/bromley/report/display.html:132 templates/web/fixmystreet/auth/general.html:26 templates/web/fixmystreet/report/update-form.html:80 templates/web/seesomething/auth/general.html:26 templates/web/zurich/auth/general.html:30 templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr ""
@@ -2915,7 +3209,7 @@ msgstr ""
msgid "Your last name"
msgstr ""
-#: templates/web/fixmystreet/auth/general.html:57 templates/web/fixmystreet/contact/index.html:77 templates/web/fixmystreet/report/new/fill_in_details_form.html:124 templates/web/fixmystreet/report/new/fill_in_details_form.html:192 templates/web/fixmystreet/report/update-form.html:140 templates/web/seesomething/report/new/fill_in_details_form.html:79 templates/web/zurich/auth/general.html:59 templates/web/zurich/report/new/fill_in_details_form.html:104
+#: templates/web/fixmystreet/auth/general.html:57 templates/web/fixmystreet/contact/index.html:77 templates/web/fixmystreet/report/new/fill_in_details_form.html:124 templates/web/fixmystreet/report/new/fill_in_details_form.html:192 templates/web/fixmystreet/report/update-form.html:140 templates/web/seesomething/report/new/fill_in_details_form.html:79 templates/web/zurich/auth/general.html:61 templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr ""
@@ -2931,7 +3225,7 @@ msgstr ""
msgid "Your password has been changed"
msgstr ""
-#: templates/web/bromley/report/new/fill_in_details_form.html:137 templates/web/bromley/report/new/fill_in_details_form.html:184 templates/web/fixmystreet/report/new/fill_in_details_form.html:139 templates/web/fixmystreet/report/new/fill_in_details_form.html:206 templates/web/seesomething/report/new/fill_in_details_form.html:90 templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/bromley/report/new/fill_in_details_form.html:137 templates/web/bromley/report/new/fill_in_details_form.html:184 templates/web/fixmystreet/report/new/fill_in_details_form.html:139 templates/web/fixmystreet/report/new/fill_in_details_form.html:206 templates/web/seesomething/report/new/fill_in_details_form.html:90 templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr ""
@@ -2943,7 +3237,7 @@ msgstr ""
msgid "Your report has been created and will shortly be sent."
msgstr ""
-#: templates/web/barnet/footer.html:18 templates/web/bromley/footer.html:19 templates/web/bromley/header.html:75 templates/web/default/footer.html:9 templates/web/fiksgatami/footer.html:6 templates/web/fiksgatami/nn/footer.html:6 templates/web/fixmystreet/footer.html:46 templates/web/oxfordshire/footer.html:21 templates/web/oxfordshire/header.html:63 templates/web/reading/footer.html:7 templates/web/stevenage/footer.html:41
+#: templates/web/barnet/footer.html:18 templates/web/bromley/footer.html:19 templates/web/bromley/header.html:75 templates/web/default/footer.html:9 templates/web/fiksgatami/footer.html:6 templates/web/fiksgatami/nn/footer.html:6 templates/web/fixmindelo/footer.html:39 templates/web/fixmystreet/footer.html:46 templates/web/oxfordshire/footer.html:21 templates/web/oxfordshire/header.html:63 templates/web/reading/footer.html:7 templates/web/stevenage/footer.html:41
msgid "Your reports"
msgstr ""
@@ -2963,11 +3257,11 @@ msgstr ""
msgid "council"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr ""
-#: templates/web/default/admin/report_edit.html:28 templates/web/zurich/admin/report_edit-sdm.html:40 templates/web/zurich/admin/report_edit.html:55
+#: templates/web/default/admin/report_edit.html:28 templates/web/zurich/admin/report_edit-sdm.html:43 templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr ""
@@ -2975,11 +3269,15 @@ msgstr ""
msgid "e.g. ‘%s’ or ‘%s’"
msgstr ""
-#: templates/web/default/admin/index.html:15 templates/web/zurich/admin/index.html:5
+#: templates/web/default/admin/flagged.html:51
+msgid "edit user"
+msgstr ""
+
+#: templates/web/default/admin/index.html:23 templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr ""
-#: templates/web/fixmystreet/report/_item.html:12 templates/web/zurich/report/_item.html:16
+#: templates/web/bromley/report/_item.html:12 templates/web/fixmystreet/report/_item.html:12 templates/web/zurich/report/_item.html:16
msgid "last updated %s"
msgstr ""
@@ -3027,7 +3325,7 @@ msgstr ""
msgid "marked as unable to fix"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128 templates/web/default/admin/questionnaire.html:15 templates/web/default/admin/questionnaire.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130 templates/web/default/admin/questionnaire.html:15 templates/web/default/admin/questionnaire.html:16
msgid "n/a"
msgstr ""
@@ -3035,11 +3333,11 @@ msgstr ""
msgid "or"
msgstr ""
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27 templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
-#: templates/web/default/admin/report_edit.html:24 templates/web/default/admin/report_edit.html:26 templates/web/zurich/admin/report_edit-sdm.html:27 templates/web/zurich/admin/report_edit-sdm.html:29 templates/web/zurich/admin/report_edit-sdm.html:36 templates/web/zurich/admin/report_edit-sdm.html:38 templates/web/zurich/admin/report_edit.html:28 templates/web/zurich/admin/report_edit.html:30 templates/web/zurich/admin/report_edit.html:39 templates/web/zurich/admin/report_edit.html:41 templates/web/zurich/admin/report_edit.html:51 templates/web/zurich/admin/report_edit.html:53
+#: templates/web/default/admin/report_edit.html:24 templates/web/default/admin/report_edit.html:26 templates/web/zurich/admin/report_edit-sdm.html:30 templates/web/zurich/admin/report_edit-sdm.html:32 templates/web/zurich/admin/report_edit-sdm.html:39 templates/web/zurich/admin/report_edit-sdm.html:41 templates/web/zurich/admin/report_edit.html:30 templates/web/zurich/admin/report_edit.html:32 templates/web/zurich/admin/report_edit.html:41 templates/web/zurich/admin/report_edit.html:43 templates/web/zurich/admin/report_edit.html:53 templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -3063,7 +3361,7 @@ msgstr ""
msgid "there is no pin shown as the user did not use the map"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr ""
@@ -3071,7 +3369,7 @@ msgstr ""
msgid "today"
msgstr ""
-#: templates/web/default/admin/report_edit.html:28 templates/web/zurich/admin/report_edit-sdm.html:40 templates/web/zurich/admin/report_edit.html:55
+#: templates/web/default/admin/report_edit.html:28 templates/web/zurich/admin/report_edit-sdm.html:43 templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr ""
diff --git a/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po b/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po
index 941e70a9a..36b2f3546 100644
--- a/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po
+++ b/locale/cy_GB.UTF-8/LC_MESSAGES/EmptyHomes.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
"PO-Revision-Date: 2013-05-03 09:41-0000\n"
"Last-Translator: Mark Smith <Mark.Smith@trosol.co.uk>\n"
"Language-Team: mySociety\n"
@@ -21,8 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 1.5.5\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr " and "
@@ -43,28 +43,28 @@ msgstr " a <strong>byddwn nawr yn ei anfon at y cyngor</strong>"
msgid " or "
msgstr "neu"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d addresses"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d confirmed alerts, %d unconfirmed"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d council contacts &ndash; %d confirmed, %d unconfirmed"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d edits by %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d live updates"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d questionnaires sent &ndash; %d answered (%s%%)"
@@ -77,7 +77,7 @@ msgstr "%d to %d of %d"
msgid "%s - Summary reports"
msgstr "%s - Adroddiadau cryno"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -85,7 +85,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "%s ward, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr "%s, reported at %s"
@@ -106,7 +106,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr "(Don't worry &mdash; we'll hang on to your update while you're checking your email.)"
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Email in abuse table)"
@@ -120,6 +120,7 @@ msgstr "(pellter rhagosodedig sy'n cynnwys tua 200,000 o bobl)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(fel arall, gellir addasu'r porthiant RSS yn bersonol, o fewn"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -127,6 +128,7 @@ msgstr "(fel arall, gellir addasu'r porthiant RSS yn bersonol, o fewn"
msgid "(closed)"
msgstr "(closed)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -139,6 +141,7 @@ msgstr "(wedi'i adfer i'w ddefnyddio)"
msgid " "
msgstr " "
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -150,6 +153,7 @@ msgstr "(not sent to council)"
msgid "(optional)"
msgstr "(dewisol)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -165,12 +169,12 @@ msgstr "(we never show your email)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Pick a category --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Dewiswch fath o eiddo --"
@@ -178,6 +182,14 @@ msgstr "-- Dewiswch fath o eiddo --"
msgid "<big>%s</big> reports"
msgstr "<big>%s</big> adroddiadau"
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been returned to use.</p>"
msgstr "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been returned to use.</p>"
@@ -283,7 +295,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live empty properties"
msgstr "<strong>%d</strong> live empty properties"
@@ -297,7 +309,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>No</strong> Let me confirm my update by email"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>No</strong> let me sign in by email"
@@ -344,19 +356,31 @@ msgstr "Amdanom ni"
msgid "Action Scheduled"
msgstr "Action Scheduled"
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which empty property reports can be sent. You can add one or more contacts (for different\n"
+" categories of empty property) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr "Add body"
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Add new category"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr "Add user"
@@ -394,6 +418,7 @@ msgstr "All Reports"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -445,7 +470,7 @@ msgstr "Bydd yr holl wybodaeth a ddarparwch fan hyn yn cael ei hanfon at <stron
msgid "An update marked this empty property as returned to use."
msgstr "Fe wnaeth diweddariad gofnodi bod yr eiddo hwn wedi cael ei adfer i'w ddefnyddio."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Di-enw"
@@ -469,26 +494,26 @@ msgstr "Are you a developer?"
msgid "Are you from a council?"
msgstr "Are you from a council?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr "Area covered"
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr "Assign to different category:"
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr "Assign to external body:"
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr "Assign to subdivision:"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr "Assigned to %s"
@@ -501,12 +526,13 @@ msgstr "At most %d requests are returned in each query. The returned requests a
msgid "At the moment only searching for and looking at reports work."
msgstr "At the moment only searching for and looking at reports work."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr "Awaiting moderation"
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr "Back"
@@ -518,20 +544,20 @@ msgstr "Ban email address"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Be sure to choose the right category, because we use that to determine to whom the report is sent."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr "Bodies"
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr "Body"
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr "Body:"
@@ -550,9 +576,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Os na allwch weld y map, gallwch <a href='%s' rel='nofollow'>hepgor y cam hwn</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -566,22 +592,22 @@ msgstr "Os na allwch weld y map, gallwch <a href='%s' rel='nofollow'>hepgor y c
msgid "Category"
msgstr "Category"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for empty properties > 4 weeks old"
msgstr "Category fix rate for empty properties > 4 weeks old"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Categori:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Category: %s"
@@ -591,12 +617,51 @@ msgstr "Category: %s"
msgid "Change Password"
msgstr "Change Password"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-empty property page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-empty property page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report an empty property"
msgstr "Sut i roi gwybod am eiddo gwag"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report an empty property"
+msgstr "Sut i roi gwybod am eiddo gwag"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -606,14 +671,14 @@ msgstr "Sut i roi gwybod am eiddo gwag"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Closed"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Closed by council"
@@ -631,12 +696,12 @@ msgid "Closest nearby empty properties <small>(within&nbsp;%skm)</small>"
msgstr "Yr eiddo gwag cyfagos agosaf <small>(within&nbsp;%skm)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Co-ordinates:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Cobrand"
@@ -650,7 +715,12 @@ msgstr "Cobrand data:"
msgid "Cobrand:"
msgstr "Cobrand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Cadarnhau"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Configuration updated - contacts will be generated automatically later"
@@ -658,7 +728,7 @@ msgstr "Configuration updated - contacts will be generated automatically later"
msgid "Configure Endpoint"
msgstr "Configure Endpoint"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Confirm"
@@ -685,8 +755,8 @@ msgstr "Confirm by email below, providing a new password at that point. When you
msgid "Confirmation"
msgstr "Cadarnhau"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -697,6 +767,7 @@ msgstr "Confirmed"
msgid "Confirmed reports between %s and %s"
msgstr "Confirmed reports between %s and %s"
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -727,16 +798,17 @@ msgstr "Cysylltwch â Ni"
msgid "Contact the team"
msgstr "Cysylltu â'r tîm"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Could not find user"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr "Could not look up location"
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Council"
@@ -761,21 +833,22 @@ msgstr "Count"
msgid "Create a report"
msgstr "Create a report"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Create category"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Created"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Created:"
@@ -784,6 +857,12 @@ msgstr "Created:"
msgid "Current state"
msgstr "Current state"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Ni roddwyd gwybod eto am unrhyw eiddo gwag."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -793,8 +872,9 @@ msgstr "Dashboard"
msgid "Dealt with by subdivision within 5 working days"
msgstr "Dealt with by subdivision within 5 working days"
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -807,8 +887,9 @@ msgid "Description"
msgstr "Description"
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -817,17 +898,17 @@ msgstr "Manylion"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Manylion:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr "Devolved"
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Diligency prize league table"
@@ -858,14 +939,22 @@ msgstr "Ddim yn gwybod"
msgid "Duplicate"
msgstr "Duplicate"
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Edit"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr "Edit body details"
@@ -892,27 +981,31 @@ msgid "Editor"
msgstr "Editor"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "Email"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Email added to abuse list"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Your email address:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "Email already in abuse list"
@@ -924,20 +1017,19 @@ msgstr "Anfonwch fanylion eiddo gwag lleol newydd ataf i drwy'r e-bost"
msgid "Email me updates"
msgstr "Anfonwch ddiweddariadau ataf i drwy'r e-bost"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "E-bost:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr "Email: %s"
@@ -965,23 +1057,33 @@ msgstr "Tafarn neu far gwag"
msgid "Empty public building - school, hospital, etc."
msgstr "Adeilad cyhoeddus gwag - ysgol, ysbyty, ac ati."
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "End Year:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "End day:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" empty property must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "End month:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "End day:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr "Endpoint"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr "Enter a Z&uuml;rich street name"
@@ -1013,7 +1115,7 @@ msgstr "Enter a new password:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Enter a password"
@@ -1069,6 +1171,10 @@ msgstr "First Name"
msgid "First time"
msgstr "Y tro cyntaf"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1111,7 +1217,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1143,17 +1249,34 @@ msgstr "Fixed reports"
msgid "Fixed:"
msgstr "Fixed:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Flag user"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Flagged"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Flagged:"
@@ -1166,6 +1289,10 @@ msgstr "Follow a ward link to view only reports within that ward."
msgid "For council(s):"
msgstr "For council(s):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How reportemptyhomes.com uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1222,7 +1349,7 @@ msgstr "Ewch"
msgid "Going to send questionnaire?"
msgstr "Going to send questionnaire?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of empty property creation by status over time"
msgstr "Graph of empty property creation by status over time"
@@ -1245,6 +1372,7 @@ msgstr "Ydych chi wedi rhoi gwybod i gyngor am eiddo gwag erioed o'r blaen, neu
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1279,8 +1407,8 @@ msgstr "Hi %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1298,7 +1426,8 @@ msgstr "Cuddio pinnau"
msgid "History"
msgstr "History"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr "Home"
@@ -1306,11 +1435,12 @@ msgstr "Home"
msgid "How to report an empty property"
msgstr "Sut i roi gwybod am eiddo gwag"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr "How to send successful reports"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "I am afraid you cannot confirm unconfirmed reports."
@@ -1326,16 +1456,30 @@ msgstr "I'm afraid we couldn't validate that token, as the report was made too l
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Yn anffodus, ni fu modd i ni ddilysu'r dynodiad hwnnw. Os ydych wedi copïo'r URL o neges e-bost, gwnewch yn siwr eich bod wedi'i gopïo'n union.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, reportemptyhomes.com combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr "If you do not, your alert will not be activated."
@@ -1377,6 +1521,33 @@ msgstr ""
"(sylwer na fydd yn cael ei anfon at y cyngor). Er enghraifft, beth oedd eich profiad\n"
"o gael yr eiddo gwag yn ôl mewn defnydd?"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" reportemptyhomes.com <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "ID Anghyfreithlon"
@@ -1396,17 +1567,22 @@ msgstr "Dewis porthiant annilys"
msgid "In Progress"
msgstr "In Progress"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Email in abuse table)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "In progress"
@@ -1415,7 +1591,7 @@ msgstr "In progress"
msgid "Incident Category"
msgstr "Incident Category"
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr "Include reporter personal details"
@@ -1427,9 +1603,9 @@ msgstr "Include unconfirmed reports"
msgid "Incorrect has_photo value \"%s\""
msgstr "Incorrect has_photo value \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+#, fuzzy
+msgid "Internal notes"
msgstr "Internal notes:"
#: templates/web/default/admin/report_edit.html:35
@@ -1442,7 +1618,7 @@ msgstr "Internal notes:"
msgid "Invalid agency_responsible value %s"
msgstr "Invalid agency_responsible value %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Invalid end date"
@@ -1450,7 +1626,7 @@ msgstr "Invalid end date"
msgid "Invalid format %s specified."
msgstr "Invalid format %s specified."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Invalid start date"
@@ -1483,7 +1659,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Keep me signed in on this computer"
@@ -1493,7 +1669,7 @@ msgstr "Keep me signed in on this computer"
msgid "Last Name"
msgstr "Last Name"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Last editor"
@@ -1506,6 +1682,10 @@ msgstr "Last update:"
msgid "Last&nbsp;update:"
msgstr "Last&nbsp;update:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported empty properties"
@@ -1548,6 +1728,7 @@ msgstr "Local RSS feeds and email alerts for ‘%s’"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1560,7 +1741,8 @@ msgstr "Gweld adroddiadau lleol"
msgid "Locate the empty property on a map of the area"
msgstr "Chwiliwch am leoliad yr eiddo gwag ar fap o'r ardal"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr "MAP"
@@ -1568,6 +1750,10 @@ msgstr "MAP"
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Message"
@@ -1592,13 +1778,13 @@ msgstr "Month"
msgid "More empty properties nearby"
msgstr "Mwy o eiddo gwag cyfagos"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1609,7 +1795,7 @@ msgstr "Mwy o eiddo gwag cyfagos"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Enw"
@@ -1620,14 +1806,14 @@ msgstr "Name (optional)"
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Enw:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr "Enw: %s"
@@ -1667,14 +1853,20 @@ msgstr "Bron â gorffen! Nawr, ewch at eich negeseuon e-bost..."
msgid "New <br>empty properties"
msgstr "New <br>empty properties"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr "New body added"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "New category contact added"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+#, fuzzy
+msgid "New internal note:"
+msgstr "Internal notes:"
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local empty properties on reportemptyhomes.com"
msgstr "Eiddo gwag lleol diweddar, reportemptyhomes.com"
@@ -1737,7 +1929,7 @@ msgstr "Adroddiadau newydd o fewn ffin {{NAME}} ar reportemptyhomes.com"
msgid "New state"
msgstr "New state"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr "New update:"
@@ -1751,13 +1943,13 @@ msgstr "Newydd!"
msgid "Next"
msgstr "Next"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1770,7 +1962,7 @@ msgstr "Next"
msgid "No"
msgstr "Dim"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr "No body"
@@ -1778,23 +1970,25 @@ msgstr "No body"
msgid "No council"
msgstr "No council"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Ni ddewiswyd cyngor"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "No edits have yet been made."
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged empty properties found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged empty properties found."
msgstr "No flagged empty properties found"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "No flagged users found"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr "No further updates"
@@ -1808,25 +2002,42 @@ msgstr "Ni ddaethpwyd o hyd i unrhyw eiddo gwag."
msgid "No empty properties have been reported yet."
msgstr "Ni roddwyd gwybod eto am unrhyw eiddo gwag."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr "No result returned"
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "No supporters"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr "Non Public"
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "None"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1846,11 +2057,11 @@ msgstr "Not for my subdivision"
msgid "Not reported before"
msgstr "Not reported before"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Ni roddwyd gwybod i'r cyngor am hyn"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1860,7 +2071,7 @@ msgstr "Note"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1886,7 +2097,8 @@ msgstr "Now to submit your update&hellip;"
msgid "Now to submit your update&hellip; do you have a reportemptyhomes.com password?"
msgstr "Now to submit your update&hellip; do you have a reportemptyhomes.com password?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr "OK"
@@ -1930,7 +2142,7 @@ msgstr "Wedi'u hadfer i'w defnyddio ers amser"
msgid "Older empty property reports"
msgstr "Adroddiadau hŷn o eiddo gwag"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1941,8 +2153,8 @@ msgstr "Adroddiadau hŷn o eiddo gwag"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1974,15 +2186,15 @@ msgstr "Neu eiddo gwag y rhoddwyd gwybod amdanynt i:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Neu, gallwch danysgrifio am hysbysiad yn ôl pa ward neu gyngor yr ydych yn byw ynddo:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Arall"
@@ -1990,7 +2202,7 @@ msgstr "Arall"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Owner"
@@ -1999,8 +2211,8 @@ msgstr "Owner"
msgid "Page Not Found"
msgstr "Page Not Found"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr "Parent"
@@ -2015,7 +2227,7 @@ msgstr "Partial"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Password (optional)"
@@ -2023,25 +2235,29 @@ msgstr "Password (optional)"
msgid "Password:"
msgstr "Password:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Your phone number"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Phone number (optional)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Rhif ffôn:"
@@ -2053,6 +2269,7 @@ msgstr "Rhif ffôn:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2070,7 +2287,8 @@ msgstr "Ffotograff:"
msgid "Photos of recent nearby reports"
msgstr "Ffotograffau o adroddiadau cyfagos diweddar"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr "Place pin on map"
@@ -2081,8 +2299,8 @@ msgstr "Place pin on map"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planned"
@@ -2120,12 +2338,13 @@ msgstr "Rhowch gyfeiriad e-bost dilys"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Dewiswch gategori"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Dewiswch fath o eiddo"
@@ -2161,25 +2380,32 @@ msgstr "Please do not be abusive&nbsp;&mdash; abusing your council devalues the
msgid "Please do not give address or personal information in this section."
msgstr "Peidiwch â rhoi cyfeiriad na gwybodaeth bersonol yn yr adran hon"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Ychwanegwch neges"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Please enter a password"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Rhowch enw'r pwnc"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2190,8 +2416,9 @@ msgstr "Cofnodwch gyfeiriad e-bost dilys"
msgid "Please enter a valid email address"
msgstr "Cofnodwch gyfeiriad e-bost dilys"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Cofnodwch fanylion"
@@ -2204,6 +2431,8 @@ msgstr "Cofnodwch fanylion"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2219,29 +2448,39 @@ msgstr "Cofnodwch eich cyfeiriad e-bost"
msgid "Please enter your email address"
msgstr "Cofnodwch eich cyfeiriad e-bost"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Cofnodwch eich enw"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Cofnodwch eich enw llawn - os nad ydych yn dymuno bod eich enw'n cael ei ddangos ar y safle, cliciwch i ddileu'r tic o'r bocs"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Cofnodwch eich enw"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Please enter your second name"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Please enter your second name"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Please enter your title"
@@ -2373,11 +2612,11 @@ msgstr "Cofnodwch a yw'r eiddo gwag wedi cael ei adfer i'w ddefnyddio, ai peidio
msgid "Please take a look at the updates that have been left."
msgstr "Ewch i fwrw golwg ar y diweddariadau sydd wedi cael eu gadael."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Dim ond llun JPEG y dylech lwytho i fyny."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Please upload a JPEG image only\n"
@@ -2420,7 +2659,7 @@ msgstr "Cofnodwyd gan %s am %s"
msgid "Previous"
msgstr "Previous"
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2446,12 +2685,12 @@ msgstr "Empty property %s confirmed"
msgid "Empty property %s sent to council %s"
msgstr "Empty property %s sent to council %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Empty property breakdown by state"
msgstr "Empty property breakdown by state"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Empty property marked as open."
msgstr "Ewch i fwrw golwg "
@@ -2459,7 +2698,7 @@ msgstr "Ewch i fwrw golwg "
msgid "Empty property state change based on survey results"
msgstr "Empty property state change based on survey results"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Empty properties"
msgstr "Eiddo gwag"
@@ -2551,8 +2790,8 @@ msgstr "Providing a password is optional, but doing so will allow you to more ea
msgid "Providing a password is optional, but doing so will allow you to more easily report empty properties, leave updates and manage your reports."
msgstr "Providing a password is optional, but doing so will allow you to more easily report empty properties, leave updates and manage your reports."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr "Public"
@@ -2560,17 +2799,17 @@ msgstr "Public"
msgid "Public information (shown on site)"
msgstr "Gwybodaeth gyhoeddus (caiff ei dangos ar y safle)"
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr "Public response:"
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr "Publish photo"
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr "Publish the response"
@@ -2718,6 +2957,7 @@ msgstr "Rhoi gwybod am eiddo gwag"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2758,7 +2998,7 @@ msgstr "Reported %s"
msgid "Reported %s, to %s"
msgstr "Reported %s, to %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2770,42 +3010,42 @@ msgstr "Adroddwyd yn ddi-enw am %s"
msgid "Reported before"
msgstr "Wedi adrodd o'r blaen"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Adroddwyd gan %s yn ddi-enw am %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Adroddwyd gan %s am %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Adroddwyd gan %s trwy %s am %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Adroddwyd am hyn gan %s yn y categori %s yn ddi-enw, am %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Adroddwyd gan %s yn y categori %s trwy %s am %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr "Reported in the %s category"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Adroddiwyd yn y categori %s yn ddi-enw am %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Adroddwyd yn y categori %s gan %s am %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Adroddwyd gan %s yn ddi-enw am %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Adroddwyd gan %s trwy %s am %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Adroddwyd am hyn gan %s yn y categori %s yn ddi-enw, am %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Adroddwyd gan %s yn y categori %s trwy %s am %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2814,21 +3054,24 @@ msgstr "Adroddwyd yn y categori %s gan %s am %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting an empty property"
msgstr "Adrodd am eiddo gwag"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr "Adroddiadau"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+#, fuzzy
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr "Reports are limited to 2000 characters in length. Please shorten your report"
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2847,7 +3090,8 @@ msgstr "Reports published"
msgid "Resend report"
msgstr "Resend report"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr "Right place?"
@@ -2859,16 +3103,16 @@ msgstr "Road operator for this named road (derived from road reference number an
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Road operator for this named road (from OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr "Rotate Left"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr "Rotate Right"
@@ -2876,7 +3120,6 @@ msgstr "Rotate Right"
msgid "Save changes"
msgstr "Save changes"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2891,18 +3134,27 @@ msgid "Search reports"
msgstr "Search reports"
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Search:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Search reports"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr "Select a body"
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr "Select an area"
@@ -2911,7 +3163,7 @@ msgstr "Select an area"
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Dewiswch y math o hysbysiad yr hoffech ei gael a chliciwch y botwm ar gyfer porthiant RSS,neu rhowch eich cyfeiriad e-bost i danysgrifio am hysbysiad e-bost."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Anfonwyd at %s %s yn ddiweddarach"
@@ -3002,6 +3254,13 @@ msgstr "Rydych chi wedi mewngofnodi fel"
msgid "Some categories may require additional information."
msgstr "Some categories may require additional information."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your reportemptyhomes.com installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -3039,20 +3298,13 @@ msgid "Source code"
msgstr "Source code"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Start Year:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Start day:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Start month:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3061,14 +3313,14 @@ msgstr "State"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "State:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3084,7 +3336,7 @@ msgstr "Status"
msgid "Still open, via questionnaire, %s"
msgstr "Still open, via questionnaire, %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr "Subcategory: %s"
@@ -3102,7 +3354,7 @@ msgstr "Subject"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Pwnc:"
@@ -3118,15 +3370,15 @@ msgstr "Pwnc:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Anfon"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Submit changes"
@@ -3136,14 +3388,14 @@ msgstr "Submit changes"
msgid "Submit questionnaire"
msgstr "Anfon yr holiadur"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3167,8 +3419,8 @@ msgstr "Dymunaf danysgrifio i rybuddion drwy e-bost"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3187,7 +3439,7 @@ msgstr "Summary"
msgid "Summary reports"
msgstr "Adroddiadau cryno"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr "Survey"
@@ -3195,8 +3447,9 @@ msgstr "Survey"
msgid "Survey Results"
msgstr "Survey Results"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Text"
@@ -3258,7 +3511,7 @@ msgstr "Diolch am eich adborth. Byddwn yn eich ateb cyn gynted ag y gallwn!"
msgid "Thanks, glad to hear it's been returned to use! Could we just ask if you have ever reported an empty property to a council before?"
msgstr "Diolch, falch o glywed ei fod wedi cael ei adfer i'w ddefnyddio! Fyddai modd i ni'ch holi chi, a ydych erioed wedi rhoi gwybod i'r cyngor am eiddo gwag cyn hyn?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Nid yw'n ymddangos bod y ddelwedd honno wedi llwytho i fyny'n gywir (%s), rhowch gynnig arni eto."
@@ -3275,7 +3528,7 @@ msgstr "That location does not appear to be in the UK; please try again."
msgid "That postcode was not recognised, sorry."
msgstr "Ni chafodd y cod post hwnnw ei gydnabod, sori."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That empty property will now be resent."
msgstr "That empty property will now be resent."
@@ -3287,10 +3540,44 @@ msgstr "That report cannot be viewed on %s."
msgid "That report has been removed from reportemptyhomes.com."
msgstr "Mae'r adroddiad hwnnw wedi cael ei dynnu oddi ar reportemptyhomes.com"
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that reportemptyhomes.com will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how empty property reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the empty property report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "The Open311 v2 attribute agency_responsible is used to list the administrations that received the empty property report, which is not quite the way the attribute is defined in the Open311 v2 specification."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3309,6 +3596,11 @@ msgstr "Mae manylion eich eiddo gwag ar gael ar ochr dde'r dudalen hon."
msgid "The details of your empty property are available on the right hand side of this page."
msgstr "Mae manylion eich eiddo gwag ar gael ar ochr dde'r dudalen hon."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3367,6 +3659,10 @@ msgstr "Yr adroddiadau diweddaraf ar gyfer cyngor {{COUNCIL}}, yn ward {{WARD}}
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Yr adroddiadau diweddaraf o fewn ffin {{NAME}} y mae defnyddwyr wedi rhoi gwybod amdanynt"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3391,10 +3687,17 @@ msgstr "Yr hysbysiad symlaf yw ein hysbysiad daearyddol:"
msgid "The subject and details of the empty property will be public, plus your name if you give us permission."
msgstr "The subject and details of the empty property will be public, plus your name if you give us permission."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the empty property on a map, but to see the area around the location they entered"
msgstr "Ni allai'r defnyddiwr leoli'r eiddo gwag ar fap, ond i weld yr ardal o gwmpas y lleoliad a gofnodwyd ganddynt "
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was an empty property showing the All Reports page. Please try again later."
msgstr "There was an empty property showing the All Reports page. Please try again later."
@@ -3429,19 +3732,48 @@ msgstr "Cafwyd anhawsterau gyda'ch adroddiad. Gweler isod."
msgid "There were problems with your update. Please see below."
msgstr "Cafwyd anhawsterau gyda'ch diweddariad. Gweler isod"
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive empty property reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over empty properties reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report empty properties.\n"
+" Currently, users <strong>cannot report empty properties to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently empty properties reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for empty properties that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the empty property, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of empty property this is so we can add it to our system."
msgstr "This email has been sent to both councils covering the location of the empty property, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of empty property this is so we can add it to our system."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the empty property, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "This email has been sent to several councils covering the location of the empty property, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3496,8 +3828,8 @@ msgstr "This empty property is in progress"
msgid "This empty property is old and of unknown status."
msgstr "Mae'r eiddo gwag hwn yn hen ac nid yw ei statws yn hysbys."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr "This report is awaiting moderation."
@@ -3514,20 +3846,20 @@ msgstr "This report is currently marked as returned to use."
msgid "This report is currently marked as open."
msgstr "This report is currently marked as open."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr "Cyflwynwyd yr adroddiad hwn yn ddi-enw"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the empty property, provided by the user."
msgstr "Mae'r dudalen we hon hefyd yn cynnwys ffotograff o'r eiddo gwag, wedi'i ddarparu gan y defnyddiwr."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Timeline"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Title"
@@ -3540,11 +3872,11 @@ msgstr "I <strong> roi gwybod am broblem</strong>, cliciwch ar y lleoliad cywir
msgid "To find out what local alerts we have in your area, council or ward, please enter your postcode or street name and area"
msgstr "To find out what local alerts we have in your area, council or ward, please enter your postcode or street name and area"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "Gweld map o union leoliad y broblem hon"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3556,7 +3888,8 @@ msgstr "Total"
msgid "Transport Category"
msgstr "Transport Category"
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr "Try again"
@@ -3574,8 +3907,8 @@ msgstr "Unable to fix"
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Unconfirmed"
@@ -3588,7 +3921,8 @@ msgstr "Unknown"
msgid "Unknown alert type"
msgstr "Unknown alert type"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr "Unknown error"
@@ -3615,12 +3949,12 @@ msgstr "Update below added anonymously at %s"
msgid "Update below added by %s at %s"
msgstr "Update below added by %s at %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr "Update body"
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Update breakdown by state"
@@ -3641,7 +3975,7 @@ msgstr "Update marked empty property as returned to use"
msgid "Update reopened empty property"
msgstr "Update reopened empty property"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Update statuses"
@@ -3655,24 +3989,24 @@ msgstr "Diweddariad:"
msgid "Updated"
msgstr "Updated"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Updated!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Diweddariadau"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr "Updates are limited to 2000 characters in length. Please shorten your update"
@@ -3689,23 +4023,37 @@ msgstr "Diweddariadau am {{title}}"
msgid "Updates to this empty property, reportemptyhomes.com"
msgstr "Diweddariadau i'r eiddo gwag hwn, reportemptyhomes.com"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Users"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "User flag removed"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "User flagged"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Users"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Values updated"
@@ -3775,7 +4123,7 @@ msgstr "We never show your email"
msgid "We never show your email address or phone number."
msgstr "We never show your email address or phone number."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this empty property might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "We realise this empty property might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
@@ -3805,7 +4153,7 @@ msgstr ""
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Byddai'n dda gennym glywed eich barn am y wefan hon. Llenwch y ffurflen, neu anfonwch neges e-bost at <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3849,18 +4197,20 @@ msgstr "Writing your message entirely in block capitals makes it hard to read, a
msgid "Year"
msgstr "Year"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3893,6 +4243,17 @@ msgstr "You are reporting the following update for being abusive, containing per
msgid "You can <a href=\"%s%s\">view the empty property on this site</a>."
msgstr "Gallwch <a href=\"%s\">weld yr eiddo gwag ar y safle hwn</a>."
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3900,7 +4261,12 @@ msgstr "Gallwch <a href=\"%s\">weld yr eiddo gwag ar y safle hwn</a>."
msgid "You can help us by finding a contact email address for local empty properties for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "You can help us by finding a contact email address for local empty properties for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr "You declined; please fill in the box above"
@@ -3975,6 +4341,17 @@ msgstr "You have successfully signed in; please check and confirm your details a
msgid "You must now click the link in the email we've just sent you."
msgstr "Rhaid i chi nawr glicio ar y ddolen yn y neges e-bost rydym newydd ei hanfon atoch chi."
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of empty properties they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "You really want to resend?"
@@ -4010,7 +4387,7 @@ msgstr "Your email (optional)"
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Your email address"
@@ -4048,7 +4425,7 @@ msgstr "Your last name"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Your name"
@@ -4080,7 +4457,7 @@ msgstr "Your password has been changed"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Your phone number"
@@ -4096,6 +4473,7 @@ msgstr "Your report has been created and will shortly be sent."
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4120,13 +4498,13 @@ msgstr "by %s"
msgid "council"
msgstr "cyngor"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr "council ref:&nbsp;%s"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "didn't use map"
@@ -4136,11 +4514,17 @@ msgstr "didn't use map"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "e.g. ‘%s’ or ‘%s’"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Add user"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "from %d different users"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4200,7 +4584,7 @@ msgstr "marked as %s"
msgid "marked as unable to fix"
msgstr "cofnodwyd bod hyn wedi'i adfer i'w ddefnyddio"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4212,22 +4596,23 @@ msgstr "n/a"
msgid "or"
msgstr "neu"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr "neu dewch o hyd i mi’n awtomatig"
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr "originally entered: &ldquo;%s&rdquo;"
@@ -4266,7 +4651,7 @@ msgstr "y cyngor lleol"
msgid "there is no pin shown as the user did not use the map"
msgstr "there is no pin shown as the user did not use the map"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local empty property"
msgstr "math hwn o eiddo gwag lleol"
@@ -4275,8 +4660,8 @@ msgid "today"
msgstr "heddiw"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "used map"
@@ -4370,6 +4755,22 @@ msgid_plural "%d days"
msgstr[0] "%d diwrnod"
msgstr[1] "%d diwrnod"
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Mae’r wybodaeth hon yn ofynnol"
+
+#~ msgid "End Year:"
+#~ msgstr "End Year:"
+
+#~ msgid "End month:"
+#~ msgstr "End month:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Start Year:"
+
+#~ msgid "Start month:"
+#~ msgstr "Start month:"
+
#~ msgid "no further action"
#~ msgstr "unrhyw gamau pellach"
diff --git a/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po
index 05a9f1581..56539f994 100644
--- a/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/de_CH.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -1,23 +1,25 @@
+# FixMyStreet original .po file, autogenerated by gettext-extract.
# Copyright (C) 2011 UK Citizens Online Democracy
# This file is distributed under the same license as the main FixMyStreet code.
# Matthew Somerville <matthew@mysociety.org>, 2011-06-03.
#
+# Translators:
msgid ""
msgstr ""
-"Project-Id-Version: 1.0\n"
+"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-06-03 11:59+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <team@fixmystreet.com>\n"
-"Language: \n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
+"Last-Translator: mysociety <transifex@mysociety.org>\n"
+"Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/fixmystreet/language/de_CH/)\n"
+"Language: de_CH\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr "und"
@@ -38,28 +40,28 @@ msgstr ""
msgid " or "
msgstr "oder"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d Adressen"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr ""
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr ""
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr ""
@@ -72,7 +74,7 @@ msgstr "%d bis %d von %d"
msgid "%s - Summary reports"
msgstr "Alle Meldungen"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr ""
@@ -80,7 +82,7 @@ msgstr ""
msgid "%s ward, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr "Gemeldet von %s um %s"
@@ -101,7 +103,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr ""
@@ -115,6 +117,7 @@ msgstr ""
msgid "(alternatively the RSS feed can be customised, within"
msgstr ""
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -122,6 +125,7 @@ msgstr ""
msgid "(closed)"
msgstr "(beantwortet)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -134,6 +138,7 @@ msgstr "(beantwortet)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(z.B. illegale Deponien, Strassensch&auml;den, Graffitis usw.)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -145,6 +150,7 @@ msgstr ""
msgid "(optional)"
msgstr "(optional)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -160,19 +166,26 @@ msgstr "(Ihre E-Mail Adresse wird nie angezeigt)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Wählen Sie eine Kategorie --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr ""
#: templates/web/emptyhomes/front/stats.html:5
-#, fuzzy
msgid "<big>%s</big> reports"
-msgstr "<big>%s</big> Meldung bearbeitet"
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
@@ -243,7 +256,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "Karte nicht sichtbar? <a href='%s' rel='nofollow'>&Uuml;berspringen</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> Meldungen Total"
@@ -257,7 +270,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr ""
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "Neu Registrieren"
@@ -304,19 +317,31 @@ msgstr "&Uuml;ber uns"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr "Adresse hinzuf&uuml;gen"
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "F&uuml;ge neue Kategorie hinzu"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr "User hinzuf&uuml;gen"
@@ -354,6 +379,7 @@ msgstr "Alle Meldungen"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -405,7 +431,7 @@ msgstr ""
msgid "An update marked this problem as fixed."
msgstr ""
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonym"
@@ -429,26 +455,26 @@ msgstr ""
msgid "Are you from a council?"
msgstr ""
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr "Gebiet"
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr "Einer anderen Kategorie (DA) zuweisen:"
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr "Einer externen Stelle zuweisen:"
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr "An Fachbereich zuweisen:"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr "Besten Dank f&uuml;r Ihre Meldung. Wir haben Ihr Anliegen an %s weitergeleitet, da es nicht in den Zust&auml;ndigkeitsbereich der am Pilot beteiligten Fachbereiche f&auml;llt.<br/>Freundliche Gr&uuml;sse <br/>Ihre Stadt Z&uuml;rich"
@@ -461,12 +487,13 @@ msgstr ""
msgid "At the moment only searching for and looking at reports work."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr "Überprüfung ausstehend"
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr "Zur&uuml;ck"
@@ -478,20 +505,20 @@ msgstr ""
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr "Externe Adressen"
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr "Organisation"
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr "Organisation:"
@@ -510,9 +537,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Karte nicht sichtbar? <a href='%s' rel='nofollow'>&Uuml;berspringen Sie diesen Schritt</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -526,22 +553,22 @@ msgstr "Karte nicht sichtbar? <a href='%s' rel='nofollow'>&Uuml;berspringen Sie
msgid "Category"
msgstr "Kategorie"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr ""
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Kategorie:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Kategorie: %s"
@@ -551,12 +578,51 @@ msgstr "Kategorie: %s"
msgid "Change Password"
msgstr "Passwort &auml;ndern"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Mangel lokalisieren"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Mangel lokalisieren"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -566,14 +632,14 @@ msgstr "Mangel lokalisieren"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Beantwortet"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr ""
@@ -591,12 +657,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr ""
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Koordinaten:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr ""
@@ -610,7 +676,11 @@ msgstr ""
msgid "Cobrand:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+msgid "Configuration"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Aktualisiert"
@@ -618,7 +688,7 @@ msgstr "Aktualisiert"
msgid "Configure Endpoint"
msgstr ""
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Best&auml;tigen"
@@ -645,8 +715,8 @@ msgstr ""
msgid "Confirmation"
msgstr "Bestätigung"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -657,6 +727,7 @@ msgstr "Best&auml;tigt"
msgid "Confirmed reports between %s and %s"
msgstr ""
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -687,16 +758,17 @@ msgstr ""
msgid "Contact the team"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr ""
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr ""
@@ -721,21 +793,22 @@ msgstr ""
msgid "Create a report"
msgstr "Erfasse eine Meldung"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr ""
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Erstellt"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Erstellt:"
@@ -744,6 +817,11 @@ msgstr "Erstellt:"
msgid "Current state"
msgstr "Aktueller Status"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+msgid "Currently no bodies have been created."
+msgstr "Bisher wurden noch keine Organisationseinheiten erfasst."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -753,8 +831,9 @@ msgstr ""
msgid "Dealt with by subdivision within 5 working days"
msgstr "Innerhalb von f&uuml;nf Arbeitstagen abgeschlossen"
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -767,8 +846,9 @@ msgid "Description"
msgstr "Beschreibung"
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -777,17 +857,17 @@ msgstr "Beschreibung"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Beschreibung:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr ""
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Weiss ich nicht"
@@ -818,14 +898,22 @@ msgstr ""
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr ""
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr "Details editieren"
@@ -852,27 +940,31 @@ msgid "Editor"
msgstr ""
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "E-Mail"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Ihre E-Mail Adresse:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr ""
@@ -884,20 +976,19 @@ msgstr ""
msgid "Email me updates"
msgstr "Schicken Sie mir Aktualisierungen"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "E-mail:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr "E-mail:"
@@ -925,23 +1016,32 @@ msgstr ""
msgid "Empty public building - school, hospital, etc."
msgstr ""
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
+#: templates/web/default/admin/stats.html:70
+msgid "End Date:"
msgstr ""
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr "Ungef&auml;hre Adresse des Mangels"
@@ -973,7 +1073,7 @@ msgstr ""
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Ihr Passwort"
@@ -1029,6 +1129,10 @@ msgstr ""
msgid "First time"
msgstr ""
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1062,7 +1166,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1094,17 +1198,34 @@ msgstr ""
msgid "Fixed:"
msgstr ""
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr "Als gel&#246;scht markieren"
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr ""
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr ""
@@ -1117,6 +1238,10 @@ msgstr ""
msgid "For council(s):"
msgstr ""
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1173,7 +1298,7 @@ msgstr "Los"
msgid "Going to send questionnaire?"
msgstr ""
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Grafik der Meldungen nach Status und Zeit"
@@ -1196,6 +1321,7 @@ msgstr ""
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1230,8 +1356,8 @@ msgstr "Hallo %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1249,7 +1375,8 @@ msgstr "Stecknadeln ausblenden"
msgid "History"
msgstr "History"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1257,11 +1384,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Erfassen Sie eine neue Meldung:"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr "Anleitung"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr ""
@@ -1277,16 +1405,30 @@ msgstr ""
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Leider konnte Ihre URL nicht aufgel&ouml;st werden. Falls Sie die URL aus einer Mail kopiert haben, &uuml;berpr&uuml;fen Sie bitte ob Sie die gesamte URL kopiert haben.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1321,6 +1463,33 @@ msgid ""
"your experience of getting the problem fixed?"
msgstr ""
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Unbekannt ID"
@@ -1340,17 +1509,21 @@ msgstr ""
msgid "In Progress"
msgstr "In Bearbeitung"
+#: templates/web/default/admin/flagged.html:39
+msgid "In abuse table?"
+msgstr ""
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "In Bearbeitung"
@@ -1359,7 +1532,7 @@ msgstr "In Bearbeitung"
msgid "Incident Category"
msgstr "Kategorie"
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr "Pers&ouml;nliche Angaben des Meldenden mitsenden"
@@ -1371,22 +1544,20 @@ msgstr ""
msgid "Incorrect has_photo value \"%s\""
msgstr ""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr "Interne Notizen"
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:48
-#, fuzzy
msgid "Internal referral"
-msgstr "Interne Notizen"
+msgstr ""
#: perllib/FixMyStreet/App/Controller/Open311.pm:339
msgid "Invalid agency_responsible value %s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Ung&ultiges Enddatum"
@@ -1394,7 +1565,7 @@ msgstr "Ung&ultiges Enddatum"
msgid "Invalid format %s specified."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Ung&ultiges Startdatum"
@@ -1425,7 +1596,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Angemeldet bleiben"
@@ -1435,7 +1606,7 @@ msgstr "Angemeldet bleiben"
msgid "Last Name"
msgstr "Letzte Bearbeitung"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Letzter Bearbeiter"
@@ -1448,6 +1619,10 @@ msgstr "Letzte Bearbeitung"
msgid "Last&nbsp;update:"
msgstr "Letzte Bearbeitung"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1490,6 +1665,7 @@ msgstr ""
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1502,7 +1678,8 @@ msgstr "RSS"
msgid "Locate the problem on a map of the area"
msgstr "Lokalisieren Sie den Mangel auf der Karte"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1510,6 +1687,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr ""
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Nachricht"
@@ -1534,13 +1715,13 @@ msgstr "Monat"
msgid "More problems nearby"
msgstr "Meldungen in der Nähe"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1551,7 +1732,7 @@ msgstr "Meldungen in der Nähe"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Name"
@@ -1562,14 +1743,14 @@ msgstr "(optional)"
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Name:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr "Name: %s"
@@ -1607,14 +1788,19 @@ msgstr "Fast Fertig! Bitte checken Sie Ihre Mailbox..."
msgid "New <br>problems"
msgstr "Neue <br>Meldungen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr "Neue Organisation hinzugef&uuml;gt"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr ""
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr "Neue interne Notiz"
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr ""
@@ -1677,7 +1863,7 @@ msgstr ""
msgid "New state"
msgstr "Neuer Status"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr "Neue Antwort"
@@ -1691,13 +1877,13 @@ msgstr "Neu!"
msgid "Next"
msgstr "Weiter"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1710,7 +1896,7 @@ msgstr "Weiter"
msgid "No"
msgstr "Nein"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1718,23 +1904,25 @@ msgstr ""
msgid "No council"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr ""
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Noch keine Antwort"
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
-msgstr ""
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
+msgstr "Keine Meldungen gefunden."
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
-msgstr ""
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
+msgstr "Keine Meldungen gefunden."
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr "Bearbeitung abschliessen"
@@ -1748,25 +1936,42 @@ msgstr "Keine Meldungen gefunden."
msgid "No problems have been reported yet."
msgstr "Bisher wurden noch keine Meldungen erfasst."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr ""
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr ""
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Keine"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1786,11 +1991,11 @@ msgstr "Anderer Fachbereich zust&auml;ndig"
msgid "Not reported before"
msgstr ""
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr ""
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1800,7 +2005,7 @@ msgstr ""
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr ""
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1826,7 +2031,8 @@ msgstr ""
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr ""
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1870,7 +2076,7 @@ msgstr ""
msgid "Older problems"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1881,8 +2087,8 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1914,15 +2120,15 @@ msgstr ""
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr ""
@@ -1930,7 +2136,7 @@ msgstr ""
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr ""
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Besitzer"
@@ -1939,8 +2145,8 @@ msgstr "Besitzer"
msgid "Page Not Found"
msgstr ""
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr "Geh&ouml;rt zu"
@@ -1955,7 +2161,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Passwort"
@@ -1963,25 +2169,28 @@ msgstr "Passwort"
msgid "Password:"
msgstr ""
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+msgid "Phone number"
+msgstr "Telefonnummer"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefonnummer (optional)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefonnummer:"
@@ -1993,6 +2202,7 @@ msgstr "Telefonnummer:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2010,7 +2220,8 @@ msgstr "Foto:"
msgid "Photos of recent nearby reports"
msgstr "Fotos von neuen Meldungen in der N&auml;he"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr "Pin auf der Karte absetzen"
@@ -2021,8 +2232,8 @@ msgstr "Pin auf der Karte absetzen"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Rückmeldung ausstehend"
@@ -2060,24 +2271,23 @@ msgstr "Bitte &uuml;berpr&uuml;fen Sie ob Ihre E-Mail Adresse korrekt ist"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Bitte w&auml;hlen Sie eine Kategorie"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr ""
#: templates/web/seesomething/js/translation_strings.html:6
-#, fuzzy
msgid "Please choose a transport category"
-msgstr "Bitte w&auml;hlen Sie eine Kategorie"
+msgstr ""
#: templates/web/seesomething/js/translation_strings.html:7
-#, fuzzy
msgid "Please choose an incident category"
-msgstr "Bitte w&auml;hlen Sie eine Kategorie"
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:64
msgid "Please describe the exact location of the report. Example: “2 dumped mattresses outside Number 19 Stockwell Close”"
@@ -2100,25 +2310,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr ""
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
-msgstr ""
+msgstr "Obligatorisches Feld"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr ""
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2129,8 +2346,9 @@ msgstr "Bitte geben Sie eine g&uuml;ltige E-Mail Adresse an"
msgid "Please enter a valid email address"
msgstr "Bitte geben Sie eine g&uuml;ltige E-Mail Adresse an"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Bitte geben Sie einige Details an"
@@ -2143,6 +2361,8 @@ msgstr "Bitte geben Sie einige Details an"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2158,29 +2378,38 @@ msgstr "Ihre E-Mail Adresse"
msgid "Please enter your email address"
msgstr "Ihre E-Mail Adresse"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Bitte geben Sie Ihren Namen an"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr ""
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Bitte geben Sie Ihren Namen an"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+msgid "Please enter your phone number"
+msgstr "Obligatorisches Feld"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Bitte geben Sie Ihren Namen an"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Bitte geben Sie Ihre E-Mail-Adresse an"
@@ -2299,11 +2528,11 @@ msgstr ""
msgid "Please take a look at the updates that have been left."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Bitte laden Sie nur JPEG Bilder hoch."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Bitte laden Sie nur JPEG Bilder hoch\n"
@@ -2346,7 +2575,7 @@ msgstr ""
msgid "Previous"
msgstr "Zur&uuml;ck"
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2372,12 +2601,12 @@ msgstr ""
msgid "Problem %s sent to council %s"
msgstr ""
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Meldungen nach Status sortiert"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr ""
@@ -2385,7 +2614,7 @@ msgstr ""
msgid "Problem state change based on survey results"
msgstr ""
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Meldungen"
@@ -2442,9 +2671,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:32
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:115
-#, fuzzy
msgid "Property address:"
-msgstr "Ihre E-Mail Adresse:"
+msgstr ""
#: templates/web/default/report/new/category.html:8
msgid "Property type:"
@@ -2477,8 +2705,8 @@ msgstr ""
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr ""
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr ""
@@ -2486,17 +2714,17 @@ msgstr ""
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr "Offizielle Antwort"
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr "Foto ver&ouml;ffentlichen"
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr "Antwort ver&ouml;ffentlichen"
@@ -2644,6 +2872,7 @@ msgstr ""
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2662,9 +2891,8 @@ msgstr "Missbrauch melden"
#: templates/web/default/report_created.html:3
#: templates/web/seesomething/report_created.html:0
#: templates/web/seesomething/report_created.html:8
-#, fuzzy
msgid "Report created"
-msgstr "Missbrauch melden"
+msgstr ""
#: perllib/FixMyStreet/App/Controller/Rss.pm:295
msgid "Report on %s"
@@ -2685,7 +2913,7 @@ msgstr ""
msgid "Reported %s, to %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2697,42 +2925,42 @@ msgstr "Anonym gemeldet um"
msgid "Reported before"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Anonym gemeldet von %s um %s "
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Gemeldet von %s um %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr ""
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr ""
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr ""
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr "In der Kategorie %s gemeldet"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "In der Kategorie %s um %s gemeldet"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Gemeldet in der Kategorie %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Anonym gemeldet von %s um %s "
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr ""
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr ""
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr ""
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2741,21 +2969,23 @@ msgstr "Gemeldet in der Kategorie %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Ihre Meldung"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr "Meldungen"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2774,7 +3004,8 @@ msgstr "Beantwortet"
msgid "Resend report"
msgstr ""
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr "Richtiger Ort?"
@@ -2786,16 +3017,16 @@ msgstr ""
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr "Links drehen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr "Rechts drehen"
@@ -2803,7 +3034,6 @@ msgstr "Rechts drehen"
msgid "Save changes"
msgstr "Speichern"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2818,18 +3048,27 @@ msgid "Search reports"
msgstr "Meldungen suchen"
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Suchen:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Meldungen suchen"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr "Organisation wählen"
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr "Gebiet wählen"
@@ -2838,7 +3077,7 @@ msgstr "Gebiet wählen"
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr ""
@@ -2929,6 +3168,13 @@ msgstr ""
msgid "Some categories may require additional information."
msgstr ""
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -2966,20 +3212,13 @@ msgid "Source code"
msgstr ""
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr ""
+#, fuzzy
+msgid "Start Date:"
+msgstr "Status:"
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -2988,14 +3227,14 @@ msgstr "Status"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Status:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3011,10 +3250,9 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
-#, fuzzy
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
-msgstr "Kategorie: %s"
+msgstr ""
#: templates/web/zurich/admin/index-dm.html:27
msgid "Subdivision/Body"
@@ -3030,7 +3268,7 @@ msgstr "Titel"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Titel:"
@@ -3046,15 +3284,15 @@ msgstr "Titel:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Abschicken"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Speichern"
@@ -3064,14 +3302,14 @@ msgstr "Speichern"
msgid "Submit questionnaire"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3095,8 +3333,8 @@ msgstr ""
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3115,7 +3353,7 @@ msgstr "Zusammenfassung"
msgid "Summary reports"
msgstr "Alle Meldungen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3123,8 +3361,9 @@ msgstr ""
msgid "Survey Results"
msgstr ""
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr ""
@@ -3177,7 +3416,7 @@ msgstr ""
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr ""
@@ -3194,7 +3433,7 @@ msgstr ""
msgid "That postcode was not recognised, sorry."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr ""
@@ -3206,10 +3445,44 @@ msgstr "Diese Meldung wurde von Z&uuml;ri wie neu entfernt."
msgid "That report has been removed from FixMyStreet."
msgstr "Diese Meldung wurde von Z&uuml;ri wie neu entfernt."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr ""
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3228,6 +3501,11 @@ msgstr ""
msgid "The details of your problem are available on the right hand side of this page."
msgstr ""
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3286,6 +3564,10 @@ msgstr ""
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr ""
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3310,10 +3592,17 @@ msgstr ""
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr ""
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr ""
@@ -3348,19 +3637,48 @@ msgstr ""
msgid "There were problems with your update. Please see below."
msgstr ""
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr ""
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3414,8 +3732,8 @@ msgstr "Dieser Mangel ist in Bearbeitung"
msgid "This problem is old and of unknown status."
msgstr "Dieses Problem ist alt und hat einen unbekannten Status"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr "&Uuml;berpr&uuml;fung ausstehend"
@@ -3432,21 +3750,20 @@ msgstr ""
msgid "This report is currently marked as open."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
-#, fuzzy
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
-msgstr "%s, gemeldet um %s"
+msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr ""
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Titel"
@@ -3459,11 +3776,11 @@ msgstr ""
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Geben Sie eine Adresse an"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr ""
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3475,7 +3792,8 @@ msgstr "Total"
msgid "Transport Category"
msgstr "Kategorie"
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr "Erneut versuchen"
@@ -3493,8 +3811,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Unbest&auml;tigt"
@@ -3507,7 +3825,8 @@ msgstr "Unbekannt"
msgid "Unknown alert type"
msgstr ""
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr "Unbekannter Fehler"
@@ -3534,12 +3853,12 @@ msgstr ""
msgid "Update below added by %s at %s"
msgstr ""
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr "Speichern"
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr ""
@@ -3560,7 +3879,7 @@ msgstr ""
msgid "Update reopened problem"
msgstr ""
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr ""
@@ -3574,24 +3893,24 @@ msgstr ""
msgid "Updated"
msgstr "Aktualisiert"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Aktualisiert!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Antwort"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3608,23 +3927,36 @@ msgstr ""
msgid "Updates to this problem, FixMyStreet"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+msgid "User"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr ""
@@ -3669,9 +4001,8 @@ msgid "We found more than one match for that location. We show up to ten matches
msgstr "Ihre Anfrage ergab mehr als eine m&ouml;gliche Adresse. Die ersten zehn Treffer werden unten aufgelistet."
#: templates/web/default/auth/token.html:8
-#, fuzzy
msgid "We have not been able to confirm your account - sorry."
-msgstr "Sie werden in K&uuml;rze ein E-Mail erhalten um Ihren Account zu best&auml;tigen."
+msgstr ""
#: templates/web/default/auth/token.html:16
msgid "We have sent you an email containing a link to confirm your account."
@@ -3695,7 +4026,7 @@ msgstr "Ihr E-Mail wird nie angezeigt"
msgid "We never show your email address or phone number."
msgstr "Ihre E-Mail Adresse oder Telefonnummer werden nie angezeigt"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr ""
@@ -3722,7 +4053,7 @@ msgstr ""
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr ""
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3766,18 +4097,20 @@ msgstr "Meldungen g&auml;nzlich in Grossbuchstaben zu schreiben macht diese unle
msgid "Year"
msgstr "Jahr"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3810,6 +4143,17 @@ msgstr ""
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr "Danke! Sie k&ouml;nnen Ihre aktualisierte Meldung <a href=\"%s%s\">auf der Webseite anschauen</a>."
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3817,7 +4161,12 @@ msgstr "Danke! Sie k&ouml;nnen Ihre aktualisierte Meldung <a href=\"%s%s\">auf d
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr ""
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr "Nicht freigeschaltet; Bitte geben Sie eine Adresse an"
@@ -3892,6 +4241,17 @@ msgstr ""
msgid "You must now click the link in the email we've just sent you."
msgstr "Sie k&ouml;nnen Ihre Meldung best&auml;tigen, indem Sie auf den Link im E-Mail klicken."
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr ""
@@ -3919,16 +4279,15 @@ msgid "Your email"
msgstr "E-Mail Adresse"
#: templates/web/seesomething/report/new/fill_in_details_form.html:81
-#, fuzzy
msgid "Your email (optional)"
-msgstr "Passwort"
+msgstr ""
#: templates/web/bromley/report/display.html:132
#: templates/web/fixmystreet/auth/general.html:26
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Ihre E-Mail Adresse"
@@ -3966,7 +4325,7 @@ msgstr "Ihr Name"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Ihr Name"
@@ -3998,7 +4357,7 @@ msgstr "Ihr Passwort wurde ge&auml;ndert"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Ihre Telefonnummer"
@@ -4014,6 +4373,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4038,13 +4398,13 @@ msgstr ""
msgid "council"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr ""
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "hat Karte nicht verwendet"
@@ -4054,11 +4414,17 @@ msgstr "hat Karte nicht verwendet"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "z.B. ‘%s’ oder ‘%s’"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "User hinzuf&uuml;gen"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "von %d verschiedenen Personen"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4069,23 +4435,20 @@ msgid "less than a minute"
msgstr "weniger als einer Minute"
#: templates/web/default/report/updates.html:57
-#, fuzzy
msgid "marked as a duplicate report"
-msgstr "Erfasse eine Meldung"
+msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "als beantwortet markiert"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "als beantwortet markiert"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4093,30 +4456,26 @@ msgid "marked as fixed"
msgstr "als beantwortet markiert"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Dieser Mangel ist in Bearbeitung"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "als beantwortet markiert"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "als beantwortet markiert"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "als beantwortet markiert"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4128,22 +4487,23 @@ msgstr ""
msgid "or"
msgstr "oder"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr "oder automatisch lokalisieren"
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr "Originaltext: &ldquo;%s&rdquo;"
@@ -4182,7 +4542,7 @@ msgstr ""
msgid "there is no pin shown as the user did not use the map"
msgstr "Es wird keine Stecknadel angezeigt, da der User die Karte nicht ben&uuml;tzt hat"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr ""
@@ -4191,8 +4551,8 @@ msgid "today"
msgstr "heute"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "Karte verwendet"
@@ -4249,6 +4609,7 @@ msgstr[1] "<big>%s</big> Meldungen bearbeitet"
msgid "We do not yet have details for the council that covers this location."
msgid_plural "We do not yet have details for the councils that cover this location."
msgstr[0] ""
+msgstr[1] ""
#: perllib/Utils.pm:278
#, perl-format
@@ -4285,24 +4646,6 @@ msgid_plural "%d days"
msgstr[0] "%d Tag"
msgstr[1] "%d Tage"
-#~ msgid "no further action"
-#~ msgstr "Abschliessen"
-
-#~ msgid "Enter a nearby GB postcode, or street name and area"
-#~ msgstr "Geben Sie die ungef&auml;hre Adresse des Mangels an"
-
-#~ msgid "*unknown*"
-#~ msgstr "*unbekannt*"
-
#, fuzzy
-#~ msgid "Problem ID"
-#~ msgstr "Meldung"
-
-#~ msgid "All confirmed"
-#~ msgstr "Alle best&auml;tigten"
-
-#~ msgid "No info at all"
-#~ msgstr "Keine Informationen"
-
-#~ msgid "the map was not used so pin location may be inaccurate"
-#~ msgstr "Die Karte wurde nicht verwendet und die Stecknadel k&ouml;nnte demnach ungenau sein"
+#~ msgid "The email field is required"
+#~ msgstr "Diese Information wird ben&ouml;tigt"
diff --git a/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po
index 89d7763fd..14f994ebb 100644
--- a/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/de_DE.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: German (Germany) (http://www.transifex.com/projects/p/fixmystreet/language/de_DE/)\n"
"Language: de_DE\n"
@@ -18,8 +18,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr "und"
@@ -40,28 +40,28 @@ msgstr ""
msgid " or "
msgstr "oder"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d Adressen"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr ""
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr ""
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr ""
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr ""
@@ -74,7 +74,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr ""
@@ -82,7 +82,7 @@ msgstr ""
msgid "%s ward, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -103,7 +103,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr ""
@@ -117,6 +117,7 @@ msgstr ""
msgid "(alternatively the RSS feed can be customised, within"
msgstr ""
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -124,6 +125,7 @@ msgstr ""
msgid "(closed)"
msgstr ""
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -136,6 +138,7 @@ msgstr "(gel&ouml;st)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(z.B. illegale Deponien, Strassensch&auml;den, Graffitis usw.)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -147,6 +150,7 @@ msgstr ""
msgid "(optional)"
msgstr "(optional)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -162,12 +166,12 @@ msgstr "(ihre eMail-Adresse wird nie angezeigt)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- W&auml;hlen Sie eine Kategorie --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr ""
@@ -175,6 +179,14 @@ msgstr ""
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr ""
@@ -244,7 +256,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr ""
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr ""
@@ -258,7 +270,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr ""
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr ""
@@ -305,19 +317,31 @@ msgstr "&Uuml;ber uns"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "F&uuml;ge neue Kategorie hinzu"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -355,6 +379,7 @@ msgstr "Alle Meldungen"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -406,7 +431,7 @@ msgstr ""
msgid "An update marked this problem as fixed."
msgstr ""
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonym"
@@ -430,26 +455,26 @@ msgstr ""
msgid "Are you from a council?"
msgstr ""
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -462,12 +487,13 @@ msgstr ""
msgid "At the moment only searching for and looking at reports work."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -479,20 +505,20 @@ msgstr ""
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -511,9 +537,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -527,22 +553,22 @@ msgstr ""
msgid "Category"
msgstr "Kategorie"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr ""
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Kategorie:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Kategorie: %s"
@@ -552,12 +578,51 @@ msgstr "Kategorie: %s"
msgid "Change Password"
msgstr "Passwort &auml;ndern"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Klicken Sie in die Karte um eine Meldung zu erfassen"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Klicken Sie in die Karte um eine Meldung zu erfassen"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -567,14 +632,14 @@ msgstr "Klicken Sie in die Karte um eine Meldung zu erfassen"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Geschlossen"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr ""
@@ -592,12 +657,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr ""
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Koordinaten:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr ""
@@ -611,7 +676,12 @@ msgstr ""
msgid "Cobrand:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Best&auml;tigung"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr ""
@@ -619,7 +689,7 @@ msgstr ""
msgid "Configure Endpoint"
msgstr ""
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Best&auml;tigen"
@@ -646,8 +716,8 @@ msgstr ""
msgid "Confirmation"
msgstr "Best&auml;tigung"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -658,6 +728,7 @@ msgstr "Best&auml;tigt"
msgid "Confirmed reports between %s and %s"
msgstr ""
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -688,16 +759,17 @@ msgstr ""
msgid "Contact the team"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr ""
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr ""
@@ -722,21 +794,22 @@ msgstr ""
msgid "Create a report"
msgstr "Erfasse eine Meldung"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr ""
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Erstellt"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Erstellt:"
@@ -745,6 +818,12 @@ msgstr "Erstellt:"
msgid "Current state"
msgstr ""
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Bisher wurden noch keine Meldungen erfasst."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -754,8 +833,9 @@ msgstr ""
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -768,8 +848,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -778,17 +859,17 @@ msgstr "Beschreibung"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Beschreibung:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr ""
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Weiss ich nicht"
@@ -819,14 +900,22 @@ msgstr ""
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr ""
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -853,27 +942,31 @@ msgid "Editor"
msgstr ""
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Ihre eMail-Adresse:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr ""
@@ -885,20 +978,19 @@ msgstr ""
msgid "Email me updates"
msgstr "Schicken sie mir Aktualisierungen"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -926,23 +1018,32 @@ msgstr ""
msgid "Empty public building - school, hospital, etc."
msgstr ""
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
+#: templates/web/default/admin/stats.html:70
+msgid "End Date:"
msgstr ""
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -974,7 +1075,7 @@ msgstr ""
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr ""
@@ -1030,6 +1131,10 @@ msgstr ""
msgid "First time"
msgstr ""
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1063,7 +1168,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1095,17 +1200,34 @@ msgstr ""
msgid "Fixed:"
msgstr ""
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr ""
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr ""
@@ -1118,6 +1240,10 @@ msgstr ""
msgid "For council(s):"
msgstr ""
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1174,7 +1300,7 @@ msgstr "Los"
msgid "Going to send questionnaire?"
msgstr ""
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr ""
@@ -1197,6 +1323,7 @@ msgstr ""
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1231,8 +1358,8 @@ msgstr "Hallo %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1250,7 +1377,8 @@ msgstr "Stecknadeln ausblenden"
msgid "History"
msgstr "History"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1258,11 +1386,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Erfasse eine neue Meldung:"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr ""
@@ -1278,16 +1407,30 @@ msgstr ""
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Leider konnte ihre URL nicht aufgel&ouml;st werden. Falls sie die URL aus einer Mail kopiert haben, &uuml;berpr&uuml;fen sie bitte ob sie die gesamte URL kopiert haben.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1322,6 +1465,33 @@ msgid ""
"your experience of getting the problem fixed?"
msgstr ""
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Unbekannt ID"
@@ -1341,17 +1511,21 @@ msgstr ""
msgid "In Progress"
msgstr "In Bearbeitung"
+#: templates/web/default/admin/flagged.html:39
+msgid "In abuse table?"
+msgstr ""
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "In Bearbeitung"
@@ -1360,7 +1534,7 @@ msgstr "In Bearbeitung"
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1372,9 +1546,8 @@ msgstr ""
msgid "Incorrect has_photo value \"%s\""
msgstr ""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1386,7 +1559,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Ung&ultiges Enddatum"
@@ -1394,7 +1567,7 @@ msgstr "Ung&ultiges Enddatum"
msgid "Invalid format %s specified."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Ung&ultiges Startdatum"
@@ -1425,7 +1598,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr ""
@@ -1435,7 +1608,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Letzter Bearbeiter"
@@ -1448,6 +1621,10 @@ msgstr "Letzte Bearbeitung"
msgid "Last&nbsp;update:"
msgstr ""
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1490,6 +1667,7 @@ msgstr ""
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1502,7 +1680,8 @@ msgstr "RSS"
msgid "Locate the problem on a map of the area"
msgstr "Identifizieren Sie den Mangel auf der Karte"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1510,6 +1689,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr ""
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Nachricht"
@@ -1534,13 +1717,13 @@ msgstr "Monat"
msgid "More problems nearby"
msgstr "Meldungen in der Nähe"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1551,7 +1734,7 @@ msgstr "Meldungen in der Nähe"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Name"
@@ -1562,14 +1745,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Name:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1607,14 +1790,19 @@ msgstr "Fast Fertig! Bitte checken Sie ihre Mailbox..."
msgid "New <br>problems"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr ""
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr ""
@@ -1677,7 +1865,7 @@ msgstr ""
msgid "New state"
msgstr ""
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1691,13 +1879,13 @@ msgstr "Neu!"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1710,7 +1898,7 @@ msgstr ""
msgid "No"
msgstr "Nein"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1718,23 +1906,25 @@ msgstr ""
msgid "No council"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr ""
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Noch keine Antwort"
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
-msgstr ""
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
+msgstr "Keine Meldungen gefunden."
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
-msgstr ""
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
+msgstr "Keine Meldungen gefunden."
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1748,25 +1938,42 @@ msgstr "Keine Meldungen gefunden."
msgid "No problems have been reported yet."
msgstr "Bisher wurden noch keine Meldungen erfasst."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr ""
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr ""
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Keine"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1786,11 +1993,11 @@ msgstr ""
msgid "Not reported before"
msgstr ""
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr ""
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1800,7 +2007,7 @@ msgstr ""
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr ""
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1826,7 +2033,8 @@ msgstr ""
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr ""
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1870,7 +2078,7 @@ msgstr ""
msgid "Older problems"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1881,8 +2089,8 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1914,15 +2122,15 @@ msgstr ""
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr ""
@@ -1930,7 +2138,7 @@ msgstr ""
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr ""
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Besitzer"
@@ -1939,8 +2147,8 @@ msgstr "Besitzer"
msgid "Page Not Found"
msgstr ""
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1955,7 +2163,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr ""
@@ -1963,25 +2171,29 @@ msgstr ""
msgid "Password:"
msgstr ""
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Ihre Telefonnummer"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefonnummer (optional)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefonnummer:"
@@ -1993,6 +2205,7 @@ msgstr "Telefonnummer:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2010,7 +2223,8 @@ msgstr "Foto:"
msgid "Photos of recent nearby reports"
msgstr "Fotos von neuen Meldungen in der N&auml;he"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
@@ -2021,8 +2235,8 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Geplant"
@@ -2060,12 +2274,13 @@ msgstr "Bitte &uuml;berpr&uuml;fen Sie ob Ihre eMail-Adresse korrekt ist"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Bitte w&auml;hlen Sie eine Kategorie"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr ""
@@ -2098,25 +2313,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr ""
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr ""
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr ""
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2127,8 +2349,9 @@ msgstr "Bitte geben Sie eine g&uuml;ltige eMail-Adresse an"
msgid "Please enter a valid email address"
msgstr "Bitte geben Sie eine g&uuml;ltige eMail-Adresse an"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Bitte geben Sie einiges Details an"
@@ -2141,6 +2364,8 @@ msgstr "Bitte geben Sie einiges Details an"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2156,29 +2381,39 @@ msgstr "Bitte geben Sie Ihre eMail-Adresse an"
msgid "Please enter your email address"
msgstr "Bitte geben Sie eine Ihre eMail-Adresse an"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr ""
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Bitte geben Sie Ihren Namen an"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Bitte geben Sie Ihren Namen an"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr ""
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr ""
@@ -2297,11 +2532,11 @@ msgstr ""
msgid "Please take a look at the updates that have been left."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr ""
@@ -2344,7 +2579,7 @@ msgstr ""
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2370,12 +2605,12 @@ msgstr ""
msgid "Problem %s sent to council %s"
msgstr ""
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr ""
@@ -2383,7 +2618,7 @@ msgstr ""
msgid "Problem state change based on survey results"
msgstr ""
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Meldungen"
@@ -2474,8 +2709,8 @@ msgstr ""
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr ""
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr ""
@@ -2483,17 +2718,17 @@ msgstr ""
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2641,6 +2876,7 @@ msgstr ""
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2681,7 +2917,7 @@ msgstr ""
msgid "Reported %s, to %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2693,42 +2929,42 @@ msgstr "Anonym gemeldet um"
msgid "Reported before"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Anonym gemeldet von %s um %s "
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Gemeldet von %s um %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr ""
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr ""
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr ""
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr ""
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Anonym gemeldet von %s um %s "
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Gemeldet von %s um %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Anonym gemeldet von %s um %s "
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Gemeldet von %s um %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2737,21 +2973,23 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Verfassen Sie eine Meldung"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2770,7 +3008,8 @@ msgstr ""
msgid "Resend report"
msgstr ""
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2782,16 +3021,16 @@ msgstr ""
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2799,7 +3038,6 @@ msgstr ""
msgid "Save changes"
msgstr "&Auml;nderungen speichern"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2814,18 +3052,26 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Suchen:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+msgid "Searching found no reports."
+msgstr ""
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2834,7 +3080,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr ""
@@ -2925,6 +3171,13 @@ msgstr ""
msgid "Some categories may require additional information."
msgstr ""
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -2962,20 +3215,13 @@ msgid "Source code"
msgstr ""
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr ""
+#, fuzzy
+msgid "Start Date:"
+msgstr "Letzte Bearbeitung"
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -2984,14 +3230,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3007,7 +3253,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3025,7 +3271,7 @@ msgstr "Titel"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Titel:"
@@ -3041,15 +3287,15 @@ msgstr "Titel:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Abschicken"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr ""
@@ -3059,14 +3305,14 @@ msgstr ""
msgid "Submit questionnaire"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3090,8 +3336,8 @@ msgstr ""
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3110,7 +3356,7 @@ msgstr "Zusammenfassung"
msgid "Summary reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3118,8 +3364,9 @@ msgstr ""
msgid "Survey Results"
msgstr ""
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr ""
@@ -3172,7 +3419,7 @@ msgstr ""
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr ""
@@ -3189,7 +3436,7 @@ msgstr ""
msgid "That postcode was not recognised, sorry."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr ""
@@ -3201,10 +3448,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr "Diese Meldung wurde von Fix My Z&uuml;rich entfernt."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr ""
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3223,6 +3504,11 @@ msgstr ""
msgid "The details of your problem are available on the right hand side of this page."
msgstr ""
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3281,6 +3567,10 @@ msgstr ""
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr ""
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3305,10 +3595,17 @@ msgstr ""
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr ""
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr ""
@@ -3343,19 +3640,48 @@ msgstr ""
msgid "There were problems with your update. Please see below."
msgstr ""
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr ""
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3409,8 +3735,8 @@ msgstr "Dieser Mangel ist in Bearbeitung"
msgid "This problem is old and of unknown status."
msgstr "Dieses Problem ist alt und hat einen unbekannten Status"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3427,20 +3753,20 @@ msgstr ""
msgid "This report is currently marked as open."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr ""
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Titel"
@@ -3453,11 +3779,11 @@ msgstr ""
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr ""
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3469,7 +3795,8 @@ msgstr "Total"
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3487,8 +3814,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Unbest&auml;tigt"
@@ -3501,7 +3828,8 @@ msgstr "Unbekannt"
msgid "Unknown alert type"
msgstr ""
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -3528,12 +3856,12 @@ msgstr ""
msgid "Update below added by %s at %s"
msgstr ""
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr ""
@@ -3554,7 +3882,7 @@ msgstr ""
msgid "Update reopened problem"
msgstr ""
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr ""
@@ -3568,24 +3896,24 @@ msgstr ""
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr ""
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3602,23 +3930,36 @@ msgstr ""
msgid "Updates to this problem, FixMyStreet"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+msgid "User"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr ""
@@ -3688,7 +4029,7 @@ msgstr "Ihre eMail wird nie angezeigt"
msgid "We never show your email address or phone number."
msgstr "Ihre eMail-Adresse oder Telefonnummer werden nie angezeigt"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr ""
@@ -3715,7 +4056,7 @@ msgstr ""
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr ""
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3759,18 +4100,20 @@ msgstr "Meldungen g&auml;nzlich in Grossbuchstaben zu schreiben macht diese unle
msgid "Year"
msgstr "Jahr"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3803,6 +4146,17 @@ msgstr ""
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3810,7 +4164,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr ""
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -3885,6 +4244,17 @@ msgstr ""
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr ""
@@ -3920,7 +4290,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Ihre eMail-Adresse"
@@ -3958,7 +4328,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Ihr Name"
@@ -3990,7 +4360,7 @@ msgstr "Ihr Passwort wurde ge&auml;ndert"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Ihre Telefonnummer"
@@ -4006,6 +4376,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4030,13 +4401,13 @@ msgstr ""
msgid "council"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr ""
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "hat Karte nicht verwendet"
@@ -4046,11 +4417,17 @@ msgstr "hat Karte nicht verwendet"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr ""
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "hat Karte nicht verwendet"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr ""
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4065,18 +4442,16 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "als gel&ouml;st markiert"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "als gel&ouml;st markiert"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4084,30 +4459,26 @@ msgid "marked as fixed"
msgstr "als gel&ouml;st markiert"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Dieser Mangel ist in Bearbeitung"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "als gel&ouml;st markiert"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "als gel&ouml;st markiert"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "als gel&ouml;st markiert"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4119,22 +4490,23 @@ msgstr ""
msgid "or"
msgstr "oder"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4173,7 +4545,7 @@ msgstr ""
msgid "there is no pin shown as the user did not use the map"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr ""
@@ -4182,8 +4554,8 @@ msgid "today"
msgstr "heute"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr ""
@@ -4276,3 +4648,7 @@ msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Diese Information wird ben&ouml;tigt"
diff --git a/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po
index 161530706..8533f6c21 100644
--- a/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/es.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/fixmystreet/language/es/)\n"
"Language: es\n"
@@ -18,8 +18,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr " y "
@@ -40,28 +40,28 @@ msgstr " y <strong>ahora lo enviaremos al Ayuntamiento </ strong>"
msgid " or "
msgstr " o "
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d direcciones"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d confirmado alertas, %d sin confirmar"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d contactos en Ayuntamiento &ndash; %d confirmados, %d sin confirmar"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d ediciones por %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d actualizaciones en vivo"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d cuestionarios enviados &ndash; %d respondidos (%s%%)"
@@ -74,7 +74,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr "%s - Informes de notificación"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -82,7 +82,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "%s barrio, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -103,7 +103,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Correo electrónico en el cuadro abuso)"
@@ -117,6 +117,7 @@ msgstr "(Una distancia predeterminada que cubre aproximadamente 200.000 personas
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(O bien la fuente RSS se pueden personalizar, dentro de"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -124,6 +125,7 @@ msgstr "(O bien la fuente RSS se pueden personalizar, dentro de"
msgid "(closed)"
msgstr "(cerrado)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -136,6 +138,7 @@ msgstr "(arreglado)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(como graffitis, basura ilegal, pavimentación o alumbrado roto)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -147,6 +150,7 @@ msgstr "(sin enviar al Ayuntamiento)"
msgid "(optional)"
msgstr "(opcional)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -162,12 +166,12 @@ msgstr "(nunca se muestra su dirección de correo electrónico)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Elige una categoría --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Escoja un tipo de propiedad --"
@@ -175,6 +179,14 @@ msgstr "-- Escoja un tipo de propiedad --"
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\"> Muchas gracias por rellenar el cuestionario; alegra saber que ha sido arreglado </ p>."
@@ -279,7 +291,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Si no puede ver el mapa, <a href='%s' rel='nofollow'> omita este paso</ a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</ strong> notificaciones en curso"
@@ -293,7 +305,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>No</strong> permítanme confirmar mi actualización por email"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>No</ strong> permítanme registrarme por email"
@@ -340,19 +352,31 @@ msgstr "¿Quiénes somos?"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Agregar nueva categoría"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -390,6 +414,7 @@ msgstr "Todas las notificaciones"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -441,7 +466,7 @@ msgstr "Toda la información proporcionada será enviada a <strong>%s</strong>."
msgid "An update marked this problem as fixed."
msgstr "Una actualización marcó esta notificación como arreglada."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anónimo"
@@ -465,26 +490,26 @@ msgstr "¿Eres programador?"
msgid "Are you from a council?"
msgstr "¿Pertenece al Ayuntamiento?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -497,12 +522,13 @@ msgstr "Se devuelven como máximo %d solicitudes por cada consulta. Las solicitu
msgid "At the moment only searching for and looking at reports work."
msgstr "Por el momento sólo funcionan las búsquedas y las vistas de notificaciones."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -514,20 +540,20 @@ msgstr "Prohibir dirección de email"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -546,9 +572,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "¿No puedes ver el mapa? <a href='%s' rel='nofollow'>Salte este paso</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -562,22 +588,22 @@ msgstr "¿No puedes ver el mapa? <a href='%s' rel='nofollow'>Salte este paso</a>
msgid "Category"
msgstr "Categoría"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Categoría ratio de arreglo de problemas > 4 semanas"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Categoría:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Categoría: %s"
@@ -587,12 +613,51 @@ msgstr "Categoría: %s"
msgid "Change Password"
msgstr "Cambiar contraseña"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Haga clic en el mapa para notificar un problema"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Haga clic en el mapa para notificar un problema"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -602,14 +667,14 @@ msgstr "Haga clic en el mapa para notificar un problema"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Cerrada"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Cerrado por el Ayuntamiento"
@@ -627,12 +692,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Problemas cercanos <small>(dentro de %%s km)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Coordenadas:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Cobrand"
@@ -646,7 +711,12 @@ msgstr "Datos cobrand:"
msgid "Cobrand:"
msgstr "Cobrand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Confirmación"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Configuración actualizada - los contactos se generarán automáticamente más tarde"
@@ -654,7 +724,7 @@ msgstr "Configuración actualizada - los contactos se generarán automáticament
msgid "Configure Endpoint"
msgstr ""
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Confirmar"
@@ -681,8 +751,8 @@ msgstr ""
msgid "Confirmation"
msgstr "Confirmación"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -693,6 +763,7 @@ msgstr "Confirmado"
msgid "Confirmed reports between %s and %s"
msgstr ""
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -723,16 +794,17 @@ msgstr "Contáctenos"
msgid "Contact the team"
msgstr "Contactar con el equipo"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "No se pudo encontrar usuario"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Ayuntamiento"
@@ -757,21 +829,22 @@ msgstr "Total"
msgid "Create a report"
msgstr "Crear una notificación"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Crear una categoría"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Creado"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Creado:"
@@ -780,6 +853,12 @@ msgstr "Creado:"
msgid "Current state"
msgstr "Estado actual"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "No se han notificado problemas todavía."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -789,8 +868,9 @@ msgstr "Cuadro de mando"
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -803,8 +883,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -813,17 +894,17 @@ msgstr "Detalles"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Detalles:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr ""
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Ranking de premios a la constancia"
@@ -854,14 +935,22 @@ msgstr "No lo se"
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Editar"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -888,27 +977,31 @@ msgid "Editor"
msgstr "Editor"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "Email:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Email añadido a lista de abusos"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Su dirección de email:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "Email ya incluido en lista de abusos"
@@ -920,20 +1013,19 @@ msgstr "Reciba por email nuevos problemas locales"
msgid "Email me updates"
msgstr "Recibir por email actualizaciones"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "Email:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -961,23 +1053,33 @@ msgstr "Pub o bar vacío"
msgid "Empty public building - school, hospital, etc."
msgstr "Edificio público vacío - escuela, hospital, etc"
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Año de Fin:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Día de fin:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Mes de fin:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Día de fin:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -1009,7 +1111,7 @@ msgstr "Introduzca una nueva contraseña:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Introduzca una contraseña"
@@ -1065,6 +1167,10 @@ msgstr "Nombre"
msgid "First time"
msgstr "Primera vez"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1107,7 +1213,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1139,17 +1245,34 @@ msgstr "Notificaciones arregladas"
msgid "Fixed:"
msgstr "Arreglado:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Marca usuario"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Marcado"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Marcado:"
@@ -1162,6 +1285,10 @@ msgstr "Clic en el enlace de un barrio para ver solo las notificaciones en ese b
msgid "For council(s):"
msgstr "Por Concejalía(s):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1218,7 +1345,7 @@ msgstr "Ir"
msgid "Going to send questionnaire?"
msgstr "¿Va a enviar cuestionario?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Gráfico temporal de creación problemas por estado"
@@ -1241,6 +1368,7 @@ msgstr "¿Alguna vez informó de un problema a un Ayuntamiento antes, o es tu pr
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1275,8 +1403,8 @@ msgstr "Hola %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1294,7 +1422,8 @@ msgstr "Ocultar pines"
msgid "History"
msgstr "Historial"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1302,11 +1431,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Cómo notificar un problema"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Me temo que no puede confirmar informes no confirmados."
@@ -1322,16 +1452,30 @@ msgstr "Me temo que no ha podido verificar token, ya que el informe se hizo hace
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Me temo que no ha podido verificar token. Si ha copiado la URL de un correo electrónico, por favor compruebe que lo copió correctamente.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1369,6 +1513,33 @@ msgstr ""
"(tenga en cuenta que no se enviará al Ayuntamiento). Por ejemplo, ¿cómo fue su experiencia\n"
"su de que su problema fuera solucionado?"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "ID ilegal"
@@ -1388,17 +1559,22 @@ msgstr "Selección de feed ilegal"
msgid "In Progress"
msgstr "En Progreso"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Correo electrónico en el cuadro abuso)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "Además, los siguientes atributos que no forman parte de la especificación Open311 v2 son devueltos: agency_sent_datetime, título (también se devuelve como parte de la descripción), interface_used, comment_count, requestor_name (sólo presente si solicitante permitió que el nombre que se mostrará en el sitio)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "En Progreso"
@@ -1407,7 +1583,7 @@ msgstr "En Progreso"
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1419,9 +1595,8 @@ msgstr "Incluir notificaciones no confirmadas"
msgid "Incorrect has_photo value \"%s\""
msgstr "Valor incorrecto para has_photo \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1433,7 +1608,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Valor inválido para agency_responsible %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Fecha de fin inválida"
@@ -1441,7 +1616,7 @@ msgstr "Fecha de fin inválida"
msgid "Invalid format %s specified."
msgstr "Formato no válido %s especificado."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Fecha de inicio no válida"
@@ -1472,7 +1647,7 @@ msgstr "Cabe señalar sin embargo que el proceso puede ser lento, especialmente
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Recordar mi contraseña en este ordenador"
@@ -1482,7 +1657,7 @@ msgstr "Recordar mi contraseña en este ordenador"
msgid "Last Name"
msgstr "Apellido"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Último editor"
@@ -1495,6 +1670,10 @@ msgstr "Última actualización:"
msgid "Last&nbsp;update:"
msgstr "Última actualización:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1537,6 +1716,7 @@ msgstr "Feeds RSS locales y alertas por email para '%s'"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1549,7 +1729,8 @@ msgstr "Alertas locales"
msgid "Locate the problem on a map of the area"
msgstr "Busque el problema en un mapa de la zona"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1557,6 +1738,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Mapa © <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</ a> y colaboradores, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Mensaje:"
@@ -1581,13 +1766,13 @@ msgstr "Mes"
msgid "More problems nearby"
msgstr "Más problemas cercanos"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1598,7 +1783,7 @@ msgstr "Más problemas cercanos"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Nombre"
@@ -1609,14 +1794,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Nombre:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1656,14 +1841,19 @@ msgstr "¡Casi terminado! Ahora compruebe su correo electrónico ..."
msgid "New <br>problems"
msgstr "Nuevos <br>problemas"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Añadida nueva categoría de contactos"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Nuevos problemas locales en FixMyStreet"
@@ -1726,7 +1916,7 @@ msgstr "Nuevas notificaciones dentro de los límites de {{NAME}} en reportemptyh
msgid "New state"
msgstr "Nuevo estado"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1740,13 +1930,13 @@ msgstr "¡Nuevo!"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1759,7 +1949,7 @@ msgstr ""
msgid "No"
msgstr "No"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1767,23 +1957,25 @@ msgstr ""
msgid "No council"
msgstr "Sin Ayuntamiento"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Ningún Ayuntamiento seleccionado"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "No se han hecho ediciones aún-"
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "No se encontraron problemas marcados"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "No se encontraron usuarios marcados"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1797,25 +1989,42 @@ msgstr "No se han encontrado problemas."
msgid "No problems have been reported yet."
msgstr "No se han notificado problemas todavía."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "No hay seguidores"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr ""
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Nada"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1835,11 +2044,11 @@ msgstr ""
msgid "Not reported before"
msgstr "No se notificó antes"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Sin comunicar al Ayuntamiento"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1849,7 +2058,7 @@ msgstr "Nota"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Tenga en cuenta que al incluir notificaciones no confirmadas usamos la fecha de creación de la notificación y puede no coincidir con el mes en el que fue confirmado, así que los números pueden variar un poco."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1875,7 +2084,8 @@ msgstr "Y ahora a enviar tu actualización ..."
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "Y ahora a enviar tu actualización ... no tienes contraseña en FixMyStreet?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1919,7 +2129,7 @@ msgstr "Antiguo arreglado"
msgid "Older problems"
msgstr "Problemas antiguos"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1930,8 +2140,8 @@ msgstr "Problemas antiguos"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1963,15 +2173,15 @@ msgstr "O problemas notificados a:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "O puede suscribirse a una alerta basada en el barrio o Ayuntamiento en el que estás:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Otros"
@@ -1979,7 +2189,7 @@ msgstr "Otros"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Nuestro código es open source y <a href=\"http://github.com/mysociety/fixmystreet\"> está disponible en GitHub </a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Propietario"
@@ -1988,8 +2198,8 @@ msgstr "Propietario"
msgid "Page Not Found"
msgstr "Página no encontrada"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -2004,7 +2214,7 @@ msgstr "Parcial"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Contraseña (opcional)"
@@ -2012,25 +2222,29 @@ msgstr "Contraseña (opcional)"
msgid "Password:"
msgstr "Contraseña:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Su número de teléfono"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Número de teléfono (opcional)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Teléfono:"
@@ -2042,6 +2256,7 @@ msgstr "Teléfono:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2059,7 +2274,8 @@ msgstr "Foto:"
msgid "Photos of recent nearby reports"
msgstr "Fotos notificaciones cercanas recientes"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
@@ -2070,8 +2286,8 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planificado"
@@ -2109,12 +2325,13 @@ msgstr "Por favor, compruebe que su dirección de email es correcta"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Por favor, elija una categoría"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Por favor, elija un tipo de propiedad"
@@ -2150,25 +2367,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Por favor, rellene un mensaje."
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Por favor, introduzca una contraseña"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Por favor, introduzca un título"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2179,8 +2403,9 @@ msgstr "Por favor, introduce una dirección de email válida"
msgid "Please enter a valid email address"
msgstr "Por favor, introduzca una dirección válida de email"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Por favor, introduzca algunos detalles"
@@ -2193,6 +2418,8 @@ msgstr "Por favor, introduzca algunos detalles"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2208,29 +2435,39 @@ msgstr "Por favor, introduzca su dirección de email"
msgid "Please enter your email address"
msgstr "Email"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Por favor, indica tu nombre."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Por favor escriba su nombre completo, los Ayuntamientos necesitan esta información - si usted no desea que su nombre aparecerá en la página, desactive la casilla de abajo"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Por favor, introduzca su nombre"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Introduzca su segundo nombre"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Introduzca su segundo nombre"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Por favor, introduzca su título"
@@ -2359,11 +2596,11 @@ msgstr "Por favor, indique si el problema se ha solucionado"
msgid "Please take a look at the updates that have been left."
msgstr "Por favor eche un vistazo a las actualizaciones que se han dejado."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Por favor, suba una imagen JPEG"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Por favor, suba una imagen JPEG\n"
@@ -2406,7 +2643,7 @@ msgstr "Publicado por %s en %s"
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2432,12 +2669,12 @@ msgstr "Problema %s confirmado"
msgid "Problem %s sent to council %s"
msgstr "Problema %s enviado al Ayuntamiento %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Desglose de problemas según estado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problema marcado como abierto."
@@ -2445,7 +2682,7 @@ msgstr "Problema marcado como abierto."
msgid "Problem state change based on survey results"
msgstr "El estado del problema cambió debido a los resultados de encuesta"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problemas"
@@ -2521,9 +2758,8 @@ msgid "Provide an update"
msgstr "Proporcionar una actualización"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Proporcionar una contraseña es opcional, pero al hacerlo le permitirá informar problemas con mayor facilidad, deje actualizaciones y administrar sus notificaciones."
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2537,8 +2773,8 @@ msgstr "Proporcionar una contraseña es opcional, pero al hacerlo le permitirá
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Proporcionar una contraseña es opcional, pero al hacerlo le permitirá informar problemas con mayor facilidad, deje actualizaciones y administrar sus notificaciones."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr ""
@@ -2546,17 +2782,17 @@ msgstr ""
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2704,6 +2940,7 @@ msgstr "Notificar viviendas vacías"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2744,7 +2981,7 @@ msgstr "Notificado %s"
msgid "Reported %s, to %s"
msgstr "Notificados %s, a %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2756,42 +2993,42 @@ msgstr "Notificado anónimamente en %s"
msgid "Reported before"
msgstr "Notificado con anterioridad"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Notificado por %s de forma anónima en %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Notificado por %s en %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Notificado por %s por %s en %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Notificado anonimamente por %s en la categoría %s en %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Notificado por %s en la categoría %s por %s en %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Notificado anonimamente en la categoría %s en %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Notificado en la categoría %s por %s en %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Notificado por %s de forma anónima en %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Notificado por %s por %s en %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Notificado anonimamente por %s en la categoría %s en %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Notificado por %s en la categoría %s por %s en %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2800,21 +3037,23 @@ msgstr "Notificado en la categoría %s por %s en %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Notificar un problema"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2833,7 +3072,8 @@ msgstr ""
msgid "Resend report"
msgstr "Vuelva a enviar la notificación"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2845,16 +3085,16 @@ msgstr "Operador de camino operador para este camino (derivado del número de re
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Operador de ruta para esta ruta con nombre (de OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2862,7 +3102,6 @@ msgstr ""
msgid "Save changes"
msgstr "Guardar cambios"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2877,18 +3116,27 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Buscar:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Buscar Notificaciones"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2897,7 +3145,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Seleccione el tipo de alerta que desea y haga clic en el botón correspondiente a un feed RSS o introduzca su dirección de e-mail para suscribirse a alerta por correo electrónico."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Enviado a %s %s después"
@@ -2988,6 +3236,13 @@ msgstr "Conectado como %s"
msgid "Some categories may require additional information."
msgstr "Algunas categorías pueden requerir información adicional."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -3025,20 +3280,13 @@ msgid "Source code"
msgstr "Código fuente"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Año de Inicio:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Día de inicio:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Mes de inicio:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3047,14 +3295,14 @@ msgstr "Estado"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Estado/Prov.:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3070,7 +3318,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr "Sigue abierta, a través de cuestionario, %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3088,7 +3336,7 @@ msgstr "Título:"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Título:"
@@ -3104,15 +3352,15 @@ msgstr "Título:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Enviar"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Enviar Cambios"
@@ -3122,14 +3370,14 @@ msgstr "Enviar Cambios"
msgid "Submit questionnaire"
msgstr "Enviar cuestionario"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3153,8 +3401,8 @@ msgstr "Suscríbeme a alertas por email"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr "Suscríbeme a una alerta basada en la baranagay en la que estás:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3173,7 +3421,7 @@ msgstr "Resumen"
msgid "Summary reports"
msgstr "Resumen de notificaciones"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3181,8 +3429,9 @@ msgstr ""
msgid "Survey Results"
msgstr "Resultados de la Encuesta"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Texto"
@@ -3239,7 +3488,7 @@ msgstr "Gracias por tus comentarios. ¡Nos pondremos en contacto con usted tan p
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Gracias, me alegro de oír que fue arreglado! ¿Podríamos preguntar si alguna vez ha notificado de un problema a un Ayuntamiento con anterioridad?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Esa imagen no parece que haya cargado correctamente (%s), por favor inténtelo de nuevo."
@@ -3256,7 +3505,7 @@ msgstr "Esa localización no parece ser de UK, por favor inténtelo de nuevo."
msgid "That postcode was not recognised, sorry."
msgstr "Ese código postal no fue reconocido, lo siento."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "El problema ahora será reenviado."
@@ -3268,10 +3517,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr "Esa notificación ha sido eliminada de FixMyStreet."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "El atributo Open311 v2 agency_responsible se utiliza para listar las administraciones que han recibido la notificación de problemas, que no es exactamente la forma en que se define dicho atributo en la especificación Open311 v2."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3290,6 +3573,11 @@ msgstr "Los detalles de su problema están disponibles en la otra pestaña de ar
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Los detalles de su problema están disponibles en el lado derecho de esta página."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3348,6 +3636,10 @@ msgstr "Últimas notificaciones de {{COUNCIL}} en el barrio de {{WARD}} notifica
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Últimas notificaciones en los límites de {{NAME}} 's notificadas por los usuarios"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3372,10 +3664,17 @@ msgstr "La alerta más sencilla es nuestra alerta geográfica:"
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr "El título y detalles del problema serán públicos, además de su nombre, si nos da su permiso."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "El usuario no pudo situar el problema en el mapa, salvo para ver el área alrededor de la localización que introdujo."
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Hubo un problema mostrando la página de Todas las Notificaciones. Por favor, inténtelo de nuevo más tarde."
@@ -3410,19 +3709,48 @@ msgstr "Hubo problemas con su notificación. Por favor, vea más abajo."
msgid "There were problems with your update. Please see below."
msgstr "Hubo problemas con la actualización. Por favor, vea más abajo."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Esta implementación de la API es un trabajo aún progreso y no es estable todavía. Se cambiará sin advertencias en el futuro."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Este correo electrónico ha sido enviado a los dos Ayuntamientos que cubren la ubicación del problema, ya que el usuario no lo categorizar, por favor, hacer caso omiso de él si usted no es el consejo correcto para hacer frente al problema, o háganos saber qué clase de problema es por lo que podemos añadir a nuestro sistema."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Este correo electrónico ha sido enviado a varios consejos que cubren la ubicación del problema, como la categoría seleccionada se proporciona para todos ellos, por favor, hacer caso omiso de él si usted no es el consejo correcto para hacer frente a la cuestión."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3437,9 +3765,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr ""
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Este es un resumen de todas las notificaciones sobre este sitio, seleccione un Ayuntamiento especial para ver los informes enviados allí."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3477,8 +3804,8 @@ msgstr "Este problema se encuentra en progreso"
msgid "This problem is old and of unknown status."
msgstr "Este problema es antiguo y de estatus desconocido."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3495,20 +3822,20 @@ msgstr "Esta notificación está actualmente marcada como arreglada."
msgid "This report is currently marked as open."
msgstr "Esta notificación está marcada como abierta."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Esta página web también contiene una foto del problema, proporcionada por el usuario."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Cronología"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Título"
@@ -3521,11 +3848,11 @@ msgstr "Para <strong>notificar de un problema</strong>, haz clic en el mapa en l
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Para saber cuáles son las alertas locales que tenemos para usted, por favor introduzca su código postal o el nombre de la calle y el área"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "Para ver un mapa de la ubicación precisa de este problema"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3537,7 +3864,8 @@ msgstr "Total"
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3555,8 +3883,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Sin confirmar"
@@ -3569,7 +3897,8 @@ msgstr "Desconocido"
msgid "Unknown alert type"
msgstr "Tipo de alerta desconocida"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -3596,12 +3925,12 @@ msgstr "La actualización de abajo fue añadida de forma anónima en %s"
msgid "Update below added by %s at %s"
msgstr "La actualización de abajo fue añadida por %s en %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Actualizar desglose por estado"
@@ -3622,7 +3951,7 @@ msgstr "La actualización marcó el problema como arreglado"
msgid "Update reopened problem"
msgstr "La actualización reabrió el problema"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Actualización de estados"
@@ -3636,24 +3965,24 @@ msgstr "Actualizar:"
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "¡Actualizado!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Actualizaciones"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3670,23 +3999,37 @@ msgstr "Actualizaciones en {{title}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Actualizaciones para este problema, FixMyStreet"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Usuarios"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Eliminada marca de usuario"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Usuario marcado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Usuarios"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Valores actualizados"
@@ -3756,7 +4099,7 @@ msgstr "Nunca mostramos su dirección de email"
msgid "We never show your email address or phone number."
msgstr "Nunca mostramos su dirección de email o número de teléfono."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Somos conscientes de este problema podría ser responsabilidad de %s , sin embargo, actualmente no tenemos ningún datos de contacto de ellos. Si sabe de alguna dirección de contacto adecuada, por favor póngase contáctenos."
@@ -3783,7 +4126,7 @@ msgstr "Nos encantaría saber lo que piensas acerca de este sitio web. Sólo tie
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Nos encantaría saber lo que piensas acerca de este sitio. Sólo tienes que rellenar el formulario o enviar un correo electrónico a <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3827,18 +4170,20 @@ msgstr "Escribir su mensaje completamente en mayúsculas hace que sea difícil d
msgid "Year"
msgstr "Año"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3871,6 +4216,17 @@ msgstr "Estás reportando por abusiva la siguiente actualización, que contiene
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3878,7 +4234,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Usted puede ayudarnos a encontrar una dirección de correo electrónico de contacto para los problemas locales para %s y enviarlanosla por correo electrónico a <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -3953,6 +4314,17 @@ msgstr "Ha iniciado sesión correctamente, por favor revise y confirme si sus de
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "¿De verdad quiere volver a enviar?"
@@ -3988,7 +4360,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Su dirección de email"
@@ -4026,7 +4398,7 @@ msgstr "Sus Apellidos"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Su Nombre"
@@ -4058,7 +4430,7 @@ msgstr "Su contraseña ha cambiado."
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Su número de teléfono"
@@ -4074,6 +4446,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4098,13 +4471,13 @@ msgstr "por %s"
msgid "council"
msgstr "Ayuntamiento"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr ""
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "no utilizó mapa"
@@ -4114,11 +4487,17 @@ msgstr "no utilizó mapa"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "por ejemplo, '%s' o '%s'"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Editando usuario %d"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "de %d usuarios diferentes"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4133,18 +4512,16 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "marcado como arreglado"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "marcado como %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4152,30 +4529,26 @@ msgid "marked as fixed"
msgstr "marcado como arreglado"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Este problema se encuentra en progreso"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "Investigando"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "marcado como arreglado"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "marcado como arreglado"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4187,22 +4560,23 @@ msgstr "n/a"
msgid "or"
msgstr "o"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4241,7 +4615,7 @@ msgstr "el Ayuntamiento local"
msgid "there is no pin shown as the user did not use the map"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "este tipo de problema local"
@@ -4250,8 +4624,8 @@ msgid "today"
msgstr "hoy"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "mapa utilizado"
@@ -4344,3 +4718,19 @@ msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Esta información es necesaria"
+
+#~ msgid "End Year:"
+#~ msgstr "Año de Fin:"
+
+#~ msgid "End month:"
+#~ msgstr "Mes de fin:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Año de Inicio:"
+
+#~ msgid "Start month:"
+#~ msgstr "Mes de inicio:"
diff --git a/locale/fr_FR.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/fr_FR.UTF-8/LC_MESSAGES/FixMyStreet.po
index e9da21155..b3e3514dd 100644
--- a/locale/fr_FR.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/fr_FR.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: French (France) (http://www.transifex.com/projects/p/fixmystreet/language/fr_FR/)\n"
"Language: fr_FR\n"
@@ -19,8 +19,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr " et "
@@ -41,28 +41,28 @@ msgstr " et <strong>nous allons maintenant l'envoyer à l'administration</strong
msgid " or "
msgstr " ou "
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d adresses"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d alertes confirmées, %d non confirmées "
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d contacts administratifs &ndash; %d confirmés, %d non confirmés"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d changements par %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d mises à jour en temps réel"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d questionnaires envoyés &ndash; %d complétés (%s%%)"
@@ -75,7 +75,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr "%s - Rapports sommaires"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s réf&nbsp;:&nbsp;%s"
@@ -83,7 +83,7 @@ msgstr "%s réf&nbsp;:&nbsp;%s"
msgid "%s ward, %s"
msgstr "Localité %s, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -104,7 +104,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(email dans la liste des abus)"
@@ -118,6 +118,7 @@ msgstr "(une distance par défaut qui couvre environs 200 000 personnes)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(sinon, le flux RSS peut être personnalisé, dans l&rsquo;intervalle de'"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -125,6 +126,7 @@ msgstr "(sinon, le flux RSS peut être personnalisé, dans l&rsquo;intervalle de
msgid "(closed)"
msgstr "(fermé)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -137,6 +139,7 @@ msgstr "(résolu)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(comme des graffitis, immondices, trottoirs abimés ou éclairage public)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -148,6 +151,7 @@ msgstr "(non signalé à l&rsquo;administration)"
msgid "(optional)"
msgstr "(facultatif)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -163,12 +167,12 @@ msgstr "(nous n&rsquo;affichons jamais votre email)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Choisissez une catégorie --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Choisissez un type de propriété --"
@@ -176,6 +180,14 @@ msgstr "-- Choisissez un type de propriété --"
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\">Merci beaucoup d'avoir répondu à nos questions ; heureux d&rsquo;entendre que ça a été résolu.</p>"
@@ -248,7 +260,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Si vous ne pouvez pas voir le plan, <a href='%s' rel='nofollow'>sautez cette étape</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> problèmes actifs"
@@ -262,7 +274,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>Non</strong>, laissez-moi confirmer ma mise à jour par email :"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>Non</strong>, laissez-moi m'authentifier par email :"
@@ -309,19 +321,31 @@ msgstr "À propos"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Ajouter une catégorie"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -359,6 +383,7 @@ msgstr "Tous les rapports"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -410,7 +435,7 @@ msgstr "Toutes les informations que vous fournissez ici seront envoyées à <str
msgid "An update marked this problem as fixed."
msgstr "Une mise à jour a marqué ce problème comme résolu"
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonyme"
@@ -434,26 +459,26 @@ msgstr "Vous êtes un développeur ?"
msgid "Are you from a council?"
msgstr "Vous faites partie d'une administration ?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -466,12 +491,13 @@ msgstr "Un maximum de %d requètes sont renvoyées pour chaque requète. Les req
msgid "At the moment only searching for and looking at reports work."
msgstr "Pour le moment, seul la recherche et la consultation de rapports sont supportés."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -483,20 +509,20 @@ msgstr "Bannir l'adresse mail"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Vérifiez bien la catégorie, car nous l'utilisons pour bien choisir le destinataire de votre rapport."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -515,9 +541,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Vous ne pouvez pas voir le plan ? <a href='%s' rel='nofollow'>Sautez cette étape</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -531,22 +557,22 @@ msgstr "Vous ne pouvez pas voir le plan ? <a href='%s' rel='nofollow'>Sautez ce
msgid "Category"
msgstr "Catégorie"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Taux de résolution pour problèmes > 4 semaines"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Catégorie :"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Catégorie : %s"
@@ -556,12 +582,51 @@ msgstr "Catégorie : %s"
msgid "Change Password"
msgstr "Changer le mot de passe"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Cliquez sur le plan pour signaler un problème"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Cliquez sur le plan pour signaler un problème"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -571,14 +636,14 @@ msgstr "Cliquez sur le plan pour signaler un problème"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Clos"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Clos par l'administration"
@@ -596,12 +661,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Problèmes clos à proximité <small>(dans l'intervalle de&nbsp;%skm)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Coordonnées"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Collaboration"
@@ -615,7 +680,12 @@ msgstr "Données de collaboration :"
msgid "Cobrand:"
msgstr "Collaboration :"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Confirmation"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Configuration mise à jour - les contacts seront génerés automatiquement par la suite"
@@ -623,7 +693,7 @@ msgstr "Configuration mise à jour - les contacts seront génerés automatiqueme
msgid "Configure Endpoint"
msgstr "Configurez Endpoint"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Confirmer"
@@ -650,8 +720,8 @@ msgstr ""
msgid "Confirmation"
msgstr "Confirmation"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -662,6 +732,7 @@ msgstr "Confirmé"
msgid "Confirmed reports between %s and %s"
msgstr ""
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -692,16 +763,17 @@ msgstr "Nous contacter"
msgid "Contact the team"
msgstr "Contacter l'équipe"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Impossible de trouver l'utilisateur"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Administration"
@@ -726,21 +798,22 @@ msgstr "Nombre"
msgid "Create a report"
msgstr "Créer un rapport"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Créer une catégorie"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Créé"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Créé :"
@@ -749,6 +822,12 @@ msgstr "Créé :"
msgid "Current state"
msgstr "État actuel"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Aucun problème n'a encore été signalé."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -758,8 +837,9 @@ msgstr ""
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -772,8 +852,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -782,17 +863,17 @@ msgstr "Détails :"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Détails :"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr ""
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Tableau d'honneur de la réactivité"
@@ -823,14 +904,22 @@ msgstr "Je ne sais pas"
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Éditer"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -857,27 +946,31 @@ msgid "Editor"
msgstr "Éditeur"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "Email"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Email rajouté à la liste des abus"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Votre adresse mail:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "Email déjà présent dans la liste des abus"
@@ -889,20 +982,19 @@ msgstr "Envoyez-moi les nouveaux problèmes locaux"
msgid "Email me updates"
msgstr "Envoyez-moi les mises à jour"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "Email :"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -930,23 +1022,33 @@ msgstr ""
msgid "Empty public building - school, hospital, etc."
msgstr ""
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Fin année :"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Fin jour :"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Fin mois :"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Fin jour :"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -978,7 +1080,7 @@ msgstr "Entrez un nouveau mot de passe :"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Entrez un mot de passe :"
@@ -1034,6 +1136,10 @@ msgstr ""
msgid "First time"
msgstr "Première fois"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1075,7 +1181,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1107,17 +1213,34 @@ msgstr "Rapports résolus"
msgid "Fixed:"
msgstr "Résolu :"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Signaler l'usager"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Signalé"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Signalé :"
@@ -1130,6 +1253,10 @@ msgstr "Suivez un lien de localité pour voir uniquement les rapports à l'inté
msgid "For council(s):"
msgstr "Pour la ou les administration(s) :"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1186,7 +1313,7 @@ msgstr "C'est parti&nbsp;!"
msgid "Going to send questionnaire?"
msgstr "Envoi du questionnaire ?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Graphique historique des problèmes créés, par statut"
@@ -1209,6 +1336,7 @@ msgstr "Est-ce que vous aviez déjà signalé un problème à une administration
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1243,8 +1371,8 @@ msgstr "Moien %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1262,7 +1390,8 @@ msgstr "Cacher les épingles"
msgid "History"
msgstr "Historique"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1270,11 +1399,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Comment signaler un problème"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Je suis désolé, vous ne pouvez pas confirmer des rapports non confirmés"
@@ -1290,16 +1420,30 @@ msgstr "Je suis désolé, nous n'avons pas pu valider cet accusé de réception
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Je suis désolé, nous n'avons pas pu valider cet accusé de réception. Si vous avez copié cette adresse d'un email, merci de vérifier que vous n'avez pas fait d'erreur.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1337,6 +1481,33 @@ msgstr ""
"(merci de noter que la mise à jour ne sera pas envoyée à l'administration). Par exemple, quelle\n"
"était votre impression de la résolution de problème ?"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "ID invalide"
@@ -1356,17 +1527,22 @@ msgstr "Sélection de flux invalide"
msgid "In Progress"
msgstr "En cours"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(email dans la liste des abus)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "En plus, les attributs suivants qui ne font pas partie de la spécification Open311 v2 sont renvoyés : agency_sent_datetime, title (qui est aussi renvoyé dans la description), interface_used, comment_count, requestor_name (seulement s'il est présent et que le requérant nous a autorisé à l'afficher sur le site)"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "En cours"
@@ -1375,7 +1551,7 @@ msgstr "En cours"
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1387,9 +1563,8 @@ msgstr "Inclure les rapports non confirmés"
msgid "Incorrect has_photo value \"%s\""
msgstr "Valeur has_photo invalide \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1401,7 +1576,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Valeur agency_responsible invalide \"%s\""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Date de fin invalide"
@@ -1409,7 +1584,7 @@ msgstr "Date de fin invalide"
msgid "Invalid format %s specified."
msgstr "Format spécifié %s invalide"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Date de début invalide"
@@ -1440,7 +1615,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Se souvenir de moi sur cet ordinateur"
@@ -1450,7 +1625,7 @@ msgstr "Se souvenir de moi sur cet ordinateur"
msgid "Last Name"
msgstr ""
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Dernier auteur"
@@ -1463,6 +1638,10 @@ msgstr "Dernière actualisation :"
msgid "Last&nbsp;update:"
msgstr "Dernière&nbsp;actualisation :"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1505,6 +1684,7 @@ msgstr "Flux RSS et alertes email locales pour « %s »"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1517,7 +1697,8 @@ msgstr "Alertes locales"
msgid "Locate the problem on a map of the area"
msgstr "Localisez le problème sur un plan des alentours"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1525,6 +1706,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Plan &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.lu/\">OpenStreetMap</a> et contributeurs, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Message"
@@ -1549,13 +1734,13 @@ msgstr "Mois"
msgid "More problems nearby"
msgstr "Encore plus de problèmes aux alentours"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1566,7 +1751,7 @@ msgstr "Encore plus de problèmes aux alentours"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Nom"
@@ -1577,14 +1762,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Nom :"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1624,14 +1809,19 @@ msgstr "Presque fini! Maintenant allez voir vos emails…"
msgid "New <br>problems"
msgstr "Nouveaux <br />problèmes"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Nouveau contact de catégorie rajouté"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Nouveaux problèmes locaux sur Fix.lu"
@@ -1694,7 +1884,7 @@ msgstr ""
msgid "New state"
msgstr "Nouvel état"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1708,13 +1898,13 @@ msgstr "Nouveau !"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1727,7 +1917,7 @@ msgstr ""
msgid "No"
msgstr "Non"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1735,23 +1925,25 @@ msgstr ""
msgid "No council"
msgstr "Pas d'administration"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Aucune administration sélectionnée"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Pas encore de modifications."
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Aucun problème signalé n'a été trouvé"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Aucun utilisateur signalé n'a été trouvé"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1765,25 +1957,42 @@ msgstr "Aucun problème trouvé."
msgid "No problems have been reported yet."
msgstr "Aucun problème n'a encore été signalé."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr ""
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr ""
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Aucun"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1803,11 +2012,11 @@ msgstr ""
msgid "Not reported before"
msgstr "Jamais signalé"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Pas signalé à l'administration"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1817,7 +2026,7 @@ msgstr "Note"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Notez que quand les rapports non confirmés sont inclus nous utilisons la date de création du rapport, qui peut être dans un autre mois que la date de confirmation, ce qui peut légèrement faire varier les chiffres."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1843,7 +2052,8 @@ msgstr "Now to submit your mise à jour&hellip;"
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "Maintenant pour envoyer votre mise à jour&hellip; avez-vous un mot de passe Fix.lu ?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1887,7 +2097,7 @@ msgstr "Anciens résolus"
msgid "Older problems"
msgstr "Anciens problèmes"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1898,8 +2108,8 @@ msgstr "Anciens problèmes"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1931,15 +2141,15 @@ msgstr "Ou problèmes signalés à :"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Ou vous pouvez vous abonner à une alerte en fonction de la commune dans laquelle vous êtes :"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Autres"
@@ -1947,7 +2157,7 @@ msgstr "Autres"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Notre code est open source et <a href=\"http://github.com/grischard/fixmystreet\">disponible sur GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Propriétaire"
@@ -1956,8 +2166,8 @@ msgstr "Propriétaire"
msgid "Page Not Found"
msgstr "Page Introuvable"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1972,7 +2182,7 @@ msgstr "Partiel"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Mot de passe (facultatif)"
@@ -1980,25 +2190,29 @@ msgstr "Mot de passe (facultatif)"
msgid "Password:"
msgstr "Mot de passe :"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Votre numéro de téléphone"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Téléphone (facultatif)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Téléphone"
@@ -2010,6 +2224,7 @@ msgstr "Téléphone"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2027,7 +2242,8 @@ msgstr "Photo :"
msgid "Photos of recent nearby reports"
msgstr "Photos de rapports récents à proximité"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
@@ -2038,8 +2254,8 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planifié"
@@ -2077,12 +2293,13 @@ msgstr "Merci de vérifier que votre adresse email est correcte"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Merci de sélectionner une catégorie"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Merci de choisir un type de propriété"
@@ -2118,25 +2335,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Merci d'entrer un message"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Merci d'entrer un mot de passe :"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Merci d'enter un sujet"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2147,8 +2371,9 @@ msgstr "Merci d'entrer un email valide"
msgid "Please enter a valid email address"
msgstr "Merci d'entrer une adresse email valide"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Merci d'entrer quelques détails"
@@ -2161,6 +2386,8 @@ msgstr "Merci d'entrer quelques détails"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2176,29 +2403,39 @@ msgstr "Merci d'entrer votre email"
msgid "Please enter your email address"
msgstr "Merci d'entrer votre adresse email"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Merci d'entrer votre nom complet, les administrations ont besoin de cette information. Si vous ne souhaitez pas que votre nom soit affiché sur ce site, décochez la case ci-dessous"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Merci d'entrer votre nom"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Merci d'entrer votre nom"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr ""
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr ""
@@ -2322,11 +2559,11 @@ msgstr "Merci de préciser si le problème a été réglé ou non."
msgid "Please take a look at the updates that have been left."
msgstr "Merci de consulter les mises à jour qui ont été laissées."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Merci de charger uniquement des images JPEG"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr ""
@@ -2369,7 +2606,7 @@ msgstr "Signalé par %s à %s"
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2395,12 +2632,12 @@ msgstr "Problème %d confirmé"
msgid "Problem %s sent to council %s"
msgstr "Problème %d signalé à l&rsquo;administration %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Répartition des problèmes par état"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problème signalé comme ouvert."
@@ -2408,7 +2645,7 @@ msgstr "Problème signalé comme ouvert."
msgid "Problem state change based on survey results"
msgstr "Changement état des problèmes d'après résultats sondage"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problèmes"
@@ -2484,9 +2721,8 @@ msgid "Provide an update"
msgstr "Apporter une mise à jour"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Un mot de passe n'est pas obligatoire, mais vous permettra de créer, mettre à jour et administrer vos rapports plus facilement."
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2500,8 +2736,8 @@ msgstr ""
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Un mot de passe n'est pas obligatoire, mais vous permettra de créer, mettre à jour et administrer vos rapports plus facilement."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr ""
@@ -2509,17 +2745,17 @@ msgstr ""
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2667,6 +2903,7 @@ msgstr ""
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2707,7 +2944,7 @@ msgstr "Signalé %s"
msgid "Reported %s, to %s"
msgstr "Signalé %s, à %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2719,42 +2956,42 @@ msgstr "Signalé anonymement à %s"
msgid "Reported before"
msgstr "Signalé avant"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Signalé par %s anonymement à %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Signalé par %s à %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Signalé par %s par %s à %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Signalé par %s dans la catégorie %s anonymement à %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Signalé par %s dans la catégorie %s par %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Signalé dans la catégorie %s anonymement à %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Signalé dans la catégorie %s par %s à %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Signalé par %s anonymement à %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Signalé par %s par %s à %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Signalé par %s dans la catégorie %s anonymement à %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Signalé par %s dans la catégorie %s par %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2763,21 +3000,23 @@ msgstr "Signalé dans la catégorie %s par %s à %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Signalisation d'un problème"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2796,7 +3035,8 @@ msgstr ""
msgid "Resend report"
msgstr "Renvoyer le rapport"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2808,16 +3048,16 @@ msgstr "Opérateur pour cette route (déterminé à partir de la référence et
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Opérateur pour cette route (selon OpenStreetMAp): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2825,7 +3065,6 @@ msgstr ""
msgid "Save changes"
msgstr "Enregistrer les modifications"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2840,18 +3079,27 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Rechercher :"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Rechercher rapports"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2860,7 +3108,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Sélectionnez le type d'alerte que vous souhaitez et cliquez sur le bouton d'un flux RSS, ou entrez votre adresse e-mail pour vous abonner à une alerte e-mail."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Envoyé à %s %s plus tard)"
@@ -2951,6 +3199,13 @@ msgstr "Connecté en tant que %s"
msgid "Some categories may require additional information."
msgstr "Certaines catégories peuvent exiger des renseignements supplémentaires."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -2988,20 +3243,13 @@ msgid "Source code"
msgstr "Code source"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Année de début :"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Jour de début :"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Mois de début :"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3010,14 +3258,14 @@ msgstr "État actuel"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "État actuel :"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3033,7 +3281,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr "Encore ouvert, via questionnaire, %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3051,7 +3299,7 @@ msgstr "Sujet"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Sujet :"
@@ -3067,15 +3315,15 @@ msgstr "Sujet :"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Envoyer"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Envoyer les modifications"
@@ -3085,14 +3333,14 @@ msgstr "Envoyer les modifications"
msgid "Submit questionnaire"
msgstr "Envoi du questionnaire"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3116,8 +3364,8 @@ msgstr "M'abonner à une alerte par email"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3136,7 +3384,7 @@ msgstr "Sommaires"
msgid "Summary reports"
msgstr "Rapports sommaires"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3144,8 +3392,9 @@ msgstr ""
msgid "Survey Results"
msgstr "Résultats de l'enquête"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Texte"
@@ -3198,7 +3447,7 @@ msgstr "Merci pour vos commentaires. Nous reviendrons vers vous dès que nous le
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Merci, heureux d'entendre que ça a été résolu ! Pourrions-nous juste vous demander si vous avez déjà signalé un problème à une administration auparavant ?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Cette image ne ​​semble pas avoir été chargés correctement (% s), réessayez s'il vous plaît."
@@ -3215,7 +3464,7 @@ msgstr ""
msgid "That postcode was not recognised, sorry."
msgstr "Ce code postal n'a pas été reconnu, désolé."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "Ce problème va maintenant être renvoyé."
@@ -3227,10 +3476,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr "Ce rapport a été retiré de Fix.lu."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "L'attribut Open311 v2 agency_responsible est utilisé pour lister les administrations qui ont reçu le rapport de problème, ce qui n'est pas tout à fait la façon dont l'attribut est défini dans la spécification Open311 v2."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3249,6 +3532,11 @@ msgstr "Les détails de votre problème sont disponibles à partir de l'onglet a
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Les détails de votre problème sont disponibles sur le côté droit de cette page."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3307,6 +3595,10 @@ msgstr "Les derniers rapports pour {{COUNCIL}} dans {{WARD}} rapportés par les
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Les derniers rapports à l'intérieur de {{NAME}} rapportés par les utilisateurs"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3331,10 +3623,17 @@ msgstr "La plus simple de nos alertes est la géographique :"
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr "Le sujet et les détails du problème seront rendus publics, ainsi que votre nom si vous nous donnez la permission."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "L'utilisateur n'a pas pu localiser le problème sur une carte, mais pour voir la zone autour de l'endroit qu'il ou elle a entré"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Il y a eu un problème pour montrer la page tous les rapports. Réessayez s'il vous plaît ultérieurement."
@@ -3369,19 +3668,48 @@ msgstr "Il y a un problème avec votre rapport. Voir s'il vous plaît plus bas."
msgid "There were problems with your update. Please see below."
msgstr "Il y a un problème avec votre mise à jour. Voir s'il vous plaît plus bas."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Cette implémentation de l'API est en cours de travaux en cours et n'est pas encore stabilisée. Elle est susceptible de changer sans avertissement préalable à l'avenir."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Cet email a été envoyé aux deux administrations couvrant l'emplacement du problème parce que l'utilisateur ne l'a pas classé ; ignorez-le s'il vous plaît si vous n'êtes pas l'administration responsable pour la question, ou faites-nous savoir la bonne catégorie de problèmes afin que nous puissions l'ajouter à notre système."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Cet email a été envoyé à plus d'une administration couvrant l'emplacement du problème, la catégorie de problème choisie par l'utilisateur étant présente pour chacune d'entre elles ; ignorez-le s'il vous plaît si vous n'êtes pas l'administration responsable pour la question."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3396,9 +3724,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr ""
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Ceci est un résumé de tous les rapports pour ce site ; sélectionnez une administration pour voir les rapports qui lui ont été envoyés."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3436,8 +3763,8 @@ msgstr "Ce problème est en cours"
msgid "This problem is old and of unknown status."
msgstr "Ce problème est vieux et de statut inconnu."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3454,20 +3781,20 @@ msgstr "Ce rapport est actuellement marqué comme résolu."
msgid "This report is currently marked as open."
msgstr "Ce rapport est actuellement marqué comme ouvert."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Cette page Web contient également une photo du problème, fournie par l'utilisateur."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Chronologie"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Titre"
@@ -3480,11 +3807,11 @@ msgstr "Pour <strong>signaler un problème</ strong>, cliquez sur la carte à l'
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "Pour voir une carte de l'emplacement précis de ce problème"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3496,7 +3823,8 @@ msgstr "Total"
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3514,8 +3842,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Non confirmé"
@@ -3528,7 +3856,8 @@ msgstr "Inconnu"
msgid "Unknown alert type"
msgstr "Type d'alerte inconnu"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -3555,12 +3884,12 @@ msgstr "Mise à jour ci-dessous ajoutée anonymement à %s"
msgid "Update below added by %s at %s"
msgstr "Mise à jour ci-dessous ajoutée par %s à %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Répartition des problèmes par état"
@@ -3581,7 +3910,7 @@ msgstr "Une mise à jour a marqué ce problème comme résolu"
msgid "Update reopened problem"
msgstr "Mettre a jour le problème réouvert"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Mettre à jour les statuts"
@@ -3595,24 +3924,24 @@ msgstr "Mise à jour :"
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Mis à jour !"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Mises à jour"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3629,23 +3958,37 @@ msgstr "Mises à jour sur {{title}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Mises à jour pour ce problème, Fix.lu"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Utilisateurs"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Utilisateur dé–signalé"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Utilisateur signalé"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Utilisateurs"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Valeurs mises à jour"
@@ -3715,7 +4058,7 @@ msgstr "Nous n&rsquo;affichons jamais votre email"
msgid "We never show your email address or phone number."
msgstr "Nous n&rsquo;affichons jamais votre email ou numéro de téléphone."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Nous sommes conscients que ce problème pourrait être la responsabilité de %s, mais nous n'avons actuellement pas leurs coordonnées. Si vous connaissez une adresse de contact approprié, faites-le nous savoir s'il vous plaît."
@@ -3742,7 +4085,7 @@ msgstr ""
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Nous aimerions beaucoup entendre ce que vous pensez de ce site. Il suffit de remplir ce formulaire, ou envoyez un email à <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3786,18 +4129,20 @@ msgstr "Si vous rédigez votre message entièrement en capitales, ou sans ponctu
msgid "Year"
msgstr "Année"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3830,6 +4175,17 @@ msgstr "Vous signalez la mise à jour suivante comme étant violente, contenant
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3837,7 +4193,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Vous pouvez nous aider en trouvant une adresse e-mail de contact pour les problèmes locaux pour %s et en nous l'envoyant à <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -3912,6 +4273,17 @@ msgstr "Vous avez réussi à vous connecter ; veuillez vérifier et confirmer qu
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Vous voulez vraiment renvoyer?"
@@ -3947,7 +4319,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Votre adresse email"
@@ -3985,7 +4357,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Votre nom"
@@ -4017,7 +4389,7 @@ msgstr "Votre mot de passe a été changé"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Votre numéro de téléphone"
@@ -4033,6 +4405,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4057,13 +4430,13 @@ msgstr "par %s"
msgid "council"
msgstr "administration"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr ""
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "n'a pas utilisé le plan"
@@ -4073,11 +4446,17 @@ msgstr "n'a pas utilisé le plan"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "Par exemple '%s' ou '%s'"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Édition de l'utilisateur %d'"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "de %d utilisateurs différents"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4092,18 +4471,16 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "marqué(s) comme réglé(s)"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "marqué(s) comme %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4111,30 +4488,26 @@ msgid "marked as fixed"
msgstr "marqué(s) comme réglé(s)"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Ce problème est en cours"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "En examen"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "marqué(s) comme réglé(s)"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "marqué(s) comme réglé(s)"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4146,22 +4519,23 @@ msgstr "s.o."
msgid "or"
msgstr " ou "
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4200,7 +4574,7 @@ msgstr "L'administration locale"
msgid "there is no pin shown as the user did not use the map"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "Ce type de problème local"
@@ -4209,8 +4583,8 @@ msgid "today"
msgstr "aujourd'hui"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "plan utilisé"
@@ -4303,3 +4677,19 @@ msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Ces renseignements sont nécessaires"
+
+#~ msgid "End Year:"
+#~ msgstr "Fin année :"
+
+#~ msgid "End month:"
+#~ msgstr "Fin mois :"
+
+#~ msgid "Start Year:"
+#~ msgstr "Année de début :"
+
+#~ msgid "Start month:"
+#~ msgstr "Mois de début :"
diff --git a/locale/hr.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/hr.UTF-8/LC_MESSAGES/FixMyStreet.po
index 64ce4826a..5d2f1bc6c 100644
--- a/locale/hr.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/hr.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Croatian (http://www.transifex.com/projects/p/fixmystreet/language/hr/)\n"
"Language: hr\n"
@@ -20,8 +20,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr "i"
@@ -42,28 +42,28 @@ msgstr "i <strong>mi to sad šaljemo odgovornim tijelima</strong>"
msgid " or "
msgstr "ili"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d adrese"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d potvrđena upozorenja, %d nepotvrđena"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d kontakti vijeća &ndash; %d potvrđeni, %d nepotvrđeni"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d izmjene od strane %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d ažuriranje uživo"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d Upitnici poslani &ndash; %d odgovoreno (%s%%)"
@@ -76,7 +76,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr "%s - Sažetak izvješća"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -84,7 +84,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -105,7 +105,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Email na crnoj listi)"
@@ -119,6 +119,7 @@ msgstr "(zadana udaljenost koja obuhvaća približno 200,000 stanovnika)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(u suprotnom RSS feed može biti podešen, unutar"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -126,6 +127,7 @@ msgstr "(u suprotnom RSS feed može biti podešen, unutar"
msgid "(closed)"
msgstr "(zatvoreno)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -138,6 +140,7 @@ msgstr "(popravljeno)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(grafiti, ilegalno odlaganje otpada, oštećeni kolnici, klupe, lampe...)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -149,6 +152,7 @@ msgstr "(nije poslano odgovornom tijelu)"
msgid "(optional)"
msgstr "(nije obavezno)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -164,12 +168,12 @@ msgstr "(vaš email držimo u tajnosti)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Izaberi kategoriju --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Izaberite vrstu posjeda --"
@@ -177,6 +181,14 @@ msgstr "-- Izaberite vrstu posjeda --"
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\">Hvala Vam puno što ste ispunili naš upitnik; drago nam je čuti da je popravljeno</p>"
@@ -260,7 +272,7 @@ msgstr "<p>Hvala Vam mnogo što ste ispunili naš upitnik; ukoliko⏎ dobijete v
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Ukoliko ne vidite kartu, <a href='%s' rel='nofollow'>preskočite ovaj korak</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> postojeći problemi"
@@ -274,7 +286,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>No</strong> Potvrdi moje ažuriranje e-mailom"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>No</strong> prijavi se e-mailom"
@@ -321,19 +333,31 @@ msgstr "O nama"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Dodaj novu kategoriju"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -371,6 +395,7 @@ msgstr "Sve Prijave"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -422,7 +447,7 @@ msgstr "Sve informacije koje nam dostavite bit će proslijeđene <strong>%s</str
msgid "An update marked this problem as fixed."
msgstr "Ažuriranjem je ovaj problem evidentiran kao popravljen."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonimno"
@@ -446,26 +471,26 @@ msgstr "Jeste li programer?"
msgid "Are you from a council?"
msgstr "Pripadate li odgovornom tijelu?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -478,12 +503,13 @@ msgstr "Većinom %d su zahtjevi vraćeni na query. Vraćeni zahtjevi poredani s
msgid "At the moment only searching for and looking at reports work."
msgstr "Trenutačno radi samo pretraživanje i pregledavanje prijava."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -495,20 +521,20 @@ msgstr "Onemogući e-mail adrese"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Pazite da odaberete pravu kategoriju jer je koristimo kako bismo utvrdili kome je izvješće poslano."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -527,9 +553,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Ne možete vidjeti mapu? <a href='%s' rel='nofollow'>Preskoči ovaj korak</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -543,22 +569,22 @@ msgstr "Ne možete vidjeti mapu? <a href='%s' rel='nofollow'>Preskoči ovaj kora
msgid "Category"
msgstr "Kategorija"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr " Postotak popravaka za kategoriju > staro 4 tjedna"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Kategorija:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Kategorija: %s"
@@ -568,12 +594,51 @@ msgstr "Kategorija: %s"
msgid "Change Password"
msgstr "Promijeni lozinku"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Kliknite mapu da prijavite problem"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Kliknite mapu da prijavite problem"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -583,14 +648,14 @@ msgstr "Kliknite mapu da prijavite problem"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Zatvoreno"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Zatvorilo je odgovorno tijelo"
@@ -608,12 +673,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Najbliži problemi <small>(within&nbsp;%skm)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Koordinate:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Cobrand"
@@ -627,7 +692,12 @@ msgstr "Cobrand podaci:"
msgid "Cobrand:"
msgstr "Cobrand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Potvrda"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Konfiguracija ažurirana - kontakti će biti automatski generirani naknadno"
@@ -635,7 +705,7 @@ msgstr "Konfiguracija ažurirana - kontakti će biti automatski generirani nakna
msgid "Configure Endpoint"
msgstr "Konfiguriraj Endpoint"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Potvrdi"
@@ -662,8 +732,8 @@ msgstr "Potvrdi pomoću dolje navedene e-mail adrese, a potom upiši novu lozink
msgid "Confirmation"
msgstr "Potvrda"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -674,6 +744,7 @@ msgstr "Potvrđeno"
msgid "Confirmed reports between %s and %s"
msgstr "Potvrđene prijave između %s i %s"
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -704,16 +775,17 @@ msgstr "Kontaktiraj nas"
msgid "Contact the team"
msgstr "Kontaktiraj tim"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Nepoznati korisnik"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Vijeće"
@@ -738,21 +810,22 @@ msgstr "Brojač"
msgid "Create a report"
msgstr "Kreiraj izvješće"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Kreiraj kategoriju"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Kreirano"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Kreirano:"
@@ -761,6 +834,12 @@ msgstr "Kreirano:"
msgid "Current state"
msgstr "Trenutno stanje"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Još uvijek nisu prijavljeni nikakvi problemi."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -770,8 +849,9 @@ msgstr "Nadzorna ploča"
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -784,8 +864,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -794,17 +875,17 @@ msgstr "Detalji"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Detalji:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr "Prenešeno"
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr ""
@@ -835,14 +916,22 @@ msgstr "Ne&rsquo;znam"
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Uredi"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -869,27 +958,31 @@ msgid "Editor"
msgstr "Urednik"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "E-mail"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "E-mail dodan na listu zloupotrebe"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Vaša e-mail adresa:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "E-mail je već na listi zloupotrebe"
@@ -901,20 +994,19 @@ msgstr "Pošalji nam e-mail o novom lokalnom problemu"
msgid "Email me updates"
msgstr "Pošalji mi e-mail o ažuriranjima"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "E-mail:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -942,23 +1034,33 @@ msgstr "Prazan kafić ili bar"
msgid "Empty public building - school, hospital, etc."
msgstr "Prazne javne zgrade - škola, bolnica, itd."
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Godina završetka:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Dan završetka:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Mjesec završetka:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Dan završetka:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -990,7 +1092,7 @@ msgstr "Unesi novu lozinku:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Unesi lozinku"
@@ -1046,6 +1148,10 @@ msgstr "Ime"
msgid "First time"
msgstr "Prvi put"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1087,7 +1193,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1119,17 +1225,34 @@ msgstr "Popravljene prijave"
msgid "Fixed:"
msgstr "Popravljeno:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Označi korisnika"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Označen"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Označen:"
@@ -1142,6 +1265,10 @@ msgstr ""
msgid "For council(s):"
msgstr "Za županiju(e):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1198,7 +1325,7 @@ msgstr "Idi"
msgid "Going to send questionnaire?"
msgstr "Pošalji upitnik?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Grafikon nastanka problema prema položaju tijekom vremena"
@@ -1221,6 +1348,7 @@ msgstr "Jeste li prije prijavljivali problem odgovornom tijelu ili je ovo prvi p
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1255,8 +1383,8 @@ msgstr "Zdravo %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1274,7 +1402,8 @@ msgstr "Sakrij pinove"
msgid "History"
msgstr "Povijest"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1282,11 +1411,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Kako prijaviti problem"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Nažalost, ne možeš potvrditi nepotvrđena izvješća"
@@ -1302,16 +1432,30 @@ msgstr "Nažalost, ne možemo provjeriti token jer je prijava davno izvršena."
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Nažalost, ne možemo provjeriti token. Ako ste kopirali URL iz e-maila, molimo provjeriti da ste ga točno kopirali. \n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1348,6 +1492,33 @@ msgstr ""
"Ako želite iznijeti javno ažuriranje o problemu, molimo unesite ga ovdje\n"
"(imajte na umu da neće biti poslano odgovornom tijelu). Na primjer, kakvo je vaše mišljenje o rješavanju problema?"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Ilegalan ID"
@@ -1367,17 +1538,22 @@ msgstr "Ilegalan odabir izvora"
msgid "In Progress"
msgstr "U tijeku"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Email na crnoj listi)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "Nadalje, sljedeća svojstva koja nisu dio Open311 v2 specifikacija su vraćena: agencijski _poslano_datum-vrijeme, naslov (također vraćen kao dio opisa), sučelje_korišteno, brojač_komentara, ime_pretražitelja(prisutno samo ako je tražitelj dopustio prikaz imena na ovoj stranici)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "U tijeku"
@@ -1386,7 +1562,7 @@ msgstr "U tijeku"
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1398,9 +1574,8 @@ msgstr "Uključi nepotvrđene prijave"
msgid "Incorrect has_photo value \"%s\""
msgstr "Pogrešno ima_foto vrijednost\"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1412,7 +1587,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Nevažeća odgovorna_vrijednost agencije %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Nevažeći datum završetka"
@@ -1420,7 +1595,7 @@ msgstr "Nevažeći datum završetka"
msgid "Invalid format %s specified."
msgstr "Naveden nevažeći %s format."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Nevažeći datum početka"
@@ -1451,7 +1626,7 @@ msgstr "Međutim, važno je napomenuti da proces ponekad može biti spor, osobit
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Ostani prijavljen na ovom računalu"
@@ -1461,7 +1636,7 @@ msgstr "Ostani prijavljen na ovom računalu"
msgid "Last Name"
msgstr "Prezime"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Posljednji "
@@ -1474,6 +1649,10 @@ msgstr "Posljednje ažuriranje"
msgid "Last&nbsp;update:"
msgstr "Posljednje&nbsp;ažuriranje:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1516,6 +1695,7 @@ msgstr "Lokalni RSS izvori i e-mail upozorenja za‘%s’"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1528,7 +1708,8 @@ msgstr "Lokalna upozorenja"
msgid "Locate the problem on a map of the area"
msgstr "Lociraj problem na mapi područja"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1536,6 +1717,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Mapiraj i kopiraj; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> i kontributori, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Poruka"
@@ -1560,13 +1745,13 @@ msgstr "Mjesec"
msgid "More problems nearby"
msgstr "Više problema u blizini"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1577,7 +1762,7 @@ msgstr "Više problema u blizini"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Ime"
@@ -1588,14 +1773,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Ime:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1635,14 +1820,19 @@ msgstr "Skoro učinjeno! Sada provjeri svoj e-mail..."
msgid "New <br>problems"
msgstr "Novi <br>problemi"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Novi kontakt dodan u kategoriju"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Novi lokalni problemi na Popravi.to"
@@ -1705,7 +1895,7 @@ msgstr "Nove prijave u djelokrugu {{IME}} na praznakuco.joj"
msgid "New state"
msgstr "Novo stanje"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1719,13 +1909,13 @@ msgstr "Novo"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1738,7 +1928,7 @@ msgstr ""
msgid "No"
msgstr "Ne"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1746,23 +1936,25 @@ msgstr ""
msgid "No council"
msgstr "Nema odgovornog tijela"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Nije odabrano odgovorno tijelo"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Nikakve izmjene još nisu napravljenje."
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Nisu pronađeni označeni problemi"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Nisu pronađeni označeni korisnici"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1776,25 +1968,42 @@ msgstr "Nisu pronađeni problemi."
msgid "No problems have been reported yet."
msgstr "Još uvijek nisu prijavljeni nikakvi problemi."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "Bez podrške"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr "Bez javnosti"
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Nijedan"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1814,11 +2023,11 @@ msgstr ""
msgid "Not reported before"
msgstr "Nije prethodno prijavljeno"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Nije prijavljeno odgovornom tijelu"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1828,7 +2037,7 @@ msgstr "Napomena"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Imajte na umu da kada uključujemo nepotvrđene prijave koristimo datum kada je prijava napravljena koji ne mora biti u istom mjesecu kada je prijava potvrđena pa stoga datumi mogu varirati"
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1854,7 +2063,8 @@ msgstr "Pošaljite svoje ažuriranje&hellip;"
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "Pošaljite svoje ažuriranje&hellip; imate li Popravi.to lozinku?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1898,7 +2108,7 @@ msgstr "Starije popravljeno"
msgid "Older problems"
msgstr "Stariji problemi"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1909,8 +2119,8 @@ msgstr "Stariji problemi"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1942,15 +2152,15 @@ msgstr "Ili problemi prijavljeni:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Ili se možete pretplatiti na upozorenja unutar vašeg vijeća &rsquo;:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Drugo"
@@ -1958,7 +2168,7 @@ msgstr "Drugo"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Naš kod je open source i <a href=\"http://github.com/mysociety/fixmystreet\">dostupan na GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Vlasnik"
@@ -1967,8 +2177,8 @@ msgstr "Vlasnik"
msgid "Page Not Found"
msgstr "Stranica nije pronađena"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1983,7 +2193,7 @@ msgstr "Djelomično"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Lozinka (neobvezno)"
@@ -1991,25 +2201,29 @@ msgstr "Lozinka (neobvezno)"
msgid "Password:"
msgstr "Lozinka:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Vaš broj telefona"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefonski broj (neobavezan)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefon:"
@@ -2021,6 +2235,7 @@ msgstr "Telefon:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2038,7 +2253,8 @@ msgstr "Slika:"
msgid "Photos of recent nearby reports"
msgstr "Fotografije posljednjih obližnjih prijava"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
@@ -2049,8 +2265,8 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planirano"
@@ -2088,12 +2304,13 @@ msgstr "Provjerite je li vaša e-mail adresa točna"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Izaberi kategoriju"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Izaberi tip imovine"
@@ -2129,25 +2346,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Unesi poruku"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Unesi lozinku"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Unesi predmet"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2158,8 +2382,9 @@ msgstr "Unesi valjani e-mail"
msgid "Please enter a valid email address"
msgstr "Unesi valjanu e-mail adresu"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Unesi detalje"
@@ -2172,6 +2397,8 @@ msgstr "Unesi detalje"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2187,29 +2414,39 @@ msgstr "Unesi svoj e-mail"
msgid "Please enter your email address"
msgstr "Unesi svoju e-mail adresu"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Unesi svoje ime"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Molimo unesite svoje puno ime, odgovorno tijelo treba ovu informaciju – ako ne želite da vaše ime bude prikazano na stranici, odznačite kvadratić ispod"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Unesite svoje ime"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Unesite svoje prezime"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Unesite svoje prezime"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Unesite svoju titulu"
@@ -2338,11 +2575,11 @@ msgstr "Navedite je li problem rješen "
msgid "Please take a look at the updates that have been left."
msgstr "Pregledajte ažuriranja"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Molimo učitajte samo JPEG slike"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Molimo učitajte samo JPEG slike\n"
@@ -2385,7 +2622,7 @@ msgstr "Objavio %s na %s"
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2411,12 +2648,12 @@ msgstr "Problem %s potvrđen"
msgid "Problem %s sent to council %s"
msgstr "Problem %s poslan odgovornom tijelu %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Analiza problema prema stanju"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problem označen kao otvoren."
@@ -2424,7 +2661,7 @@ msgstr "Problem označen kao otvoren."
msgid "Problem state change based on survey results"
msgstr "Stanje problema izmijenjeno na temelju rezultata ankete"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problemi"
@@ -2500,9 +2737,8 @@ msgid "Provide an update"
msgstr "Ažuriranje"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Lozinka nije obvezna, ali će vam omogućiti lakše prijavljivanje problema, ažuriranja i upravljanje vašim izvješćima."
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2516,8 +2752,8 @@ msgstr "Lozinka nije obvezna, ali će vam omogućiti lakše prijavljivanje budu
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Lozinka nije obvezna, ali će vam omogućiti lakše prijavljivanje problema, ažuriranja i upravljanje vašim izvješćima."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr "Javno"
@@ -2525,17 +2761,17 @@ msgstr "Javno"
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2683,6 +2919,7 @@ msgstr "Prijavi prazne kuće"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2723,7 +2960,7 @@ msgstr "Prijavljeno %s"
msgid "Reported %s, to %s"
msgstr "Prijavljeno %s, za %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2735,42 +2972,42 @@ msgstr "Prijavljeno anonimno %s"
msgid "Reported before"
msgstr "Prije prijavljeno"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Prijavio %s anonimno %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Prijavio %s za %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Prijavio %s %s u %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Prijavio %s u kategoriju %s anonimno u %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Prijavio %s u %s kategoriju %s u %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Prijavljeno %s u kategoriju anonimno u %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Prijavio %s u kategoriju %s u %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Prijavio %s anonimno %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Prijavio %s %s u %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Prijavio %s u kategoriju %s anonimno u %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Prijavio %s u %s kategoriju %s u %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2779,21 +3016,23 @@ msgstr "Prijavio %s u kategoriju %s u %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Prijavljivanje problema"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2812,7 +3051,8 @@ msgstr ""
msgid "Resend report"
msgstr "Ponovno pošalji prijavu"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2824,16 +3064,16 @@ msgstr "Cestovni operater za ovu imenovanu cestu (izveden iz cestovnog referentn
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Cestovni operater za ovu imenovanu cestu (sa OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2841,7 +3081,6 @@ msgstr ""
msgid "Save changes"
msgstr "Spremi promjene"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2856,18 +3095,27 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Pretraži:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Pretraži prijave"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2876,7 +3124,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Odaberite tip upozorenja i kliknite na gumb za RSS izvor, ili unesite svoju e-mail adresu kako biste se pretplatili na e-mail upozorenja."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Pošalji %s %s naknadno"
@@ -2967,6 +3215,13 @@ msgstr "Prijavljen kao %s"
msgid "Some categories may require additional information."
msgstr "Neke kategorije mogu zahtijevati dodatne informacije."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -3004,20 +3259,13 @@ msgid "Source code"
msgstr "Izvorni kod"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Godina početka:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Dan početka:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Mjesec početka:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3026,14 +3274,14 @@ msgstr "Stanje"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Stanje:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3049,7 +3297,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr "I dalje otvoreno, putem upitnika %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3067,7 +3315,7 @@ msgstr "Predmet"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Predmet:"
@@ -3083,15 +3331,15 @@ msgstr "Predmet:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Pošalji"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Pošalji promjene"
@@ -3101,14 +3349,14 @@ msgstr "Pošalji promjene"
msgid "Submit questionnaire"
msgstr "Pošalji upitnik"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3132,8 +3380,8 @@ msgstr "Pretplati se na e-mail upozorenja"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr "Pretplati se na upozorenja svog kvarta &rsquo;"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3152,7 +3400,7 @@ msgstr "Sažetak"
msgid "Summary reports"
msgstr "Sažetak prijava"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3160,8 +3408,9 @@ msgstr ""
msgid "Survey Results"
msgstr "Rezultati ispitivanja"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Tekst"
@@ -3217,7 +3466,7 @@ msgstr "Zahvaljujemo se na feedbacku. Javit ćemo se čim stignemo!"
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Hvala, drago nam je čuti da je problem riješen! Htjeli bismo vas još samo upitati jeste li dosada prijavljivali problem odgovornom tijelu?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Slika nije ispravno učitana (%s), molimo pokušajte ponovno."
@@ -3234,7 +3483,7 @@ msgstr "Lokacija se ne nalazi u Hrvatskoj. Molimo pokušajte ponovno."
msgid "That postcode was not recognised, sorry."
msgstr "Žao nam je, poštanski broj nije prepoznat."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "Navedeni problem će biti ponovno poslan"
@@ -3246,10 +3495,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr "Navedena prijava je uklonjena s Popravi.to"
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "Open311 v2 atribut agency_responsible koristi se za popis uprava koje su zaprimile prijavu problema te ne odgovara posve načinu na koji je atribut definiran u specifikaciji Open311 v2."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3268,6 +3551,11 @@ msgstr "Pojedinosti problema dostupne su u gornjem dijelu stranice"
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Pojedinosti problema dostupne su u desnom dijelu stranice"
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3326,6 +3614,10 @@ msgstr "Zadnje prijave za {{COUNCIL}} unutar {{WARD}} dostavljene od strane kori
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Zadnje prijave unutar granice {{NAME}} dostavljene od strane korisnika"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3350,10 +3642,17 @@ msgstr "Dojavljivanja problema preko karte:"
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr "Predmet i detalji problema bit će javni. Ukoliko se slažete, bit će prikazano i Vaše ime."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "Korisnik nije mogao locirati problem na karti, ali možete vidjeti područje oko navedene lokacije"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Došlo je do problema pri učitavanju svih prijava. Molimo pokušajte ponovno."
@@ -3388,19 +3687,48 @@ msgstr "Došlo je do problema pri prijavi. Detalje pogledajte u nastavku."
msgid "There were problems with your update. Please see below."
msgstr "Došlo je do problema pri ažuriranju. Detalje pogledajte u nastavku."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Razvoj API implementacije je u tijeku te još nije stabilizrana. Ubuduće će se mijenjati bez upozorenja."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Kako korisnik nije kategorizirao problem ,ovaj e-mail poslan je oboma odgovornim tijelima koji pokrivaju mjesto problema. Molimo vas da zanemarite e-mail ukoliko problem ne ulazi u vaše područje ili nam javite o kakvoj je kategoriji problema riječ kako bismo ga unijeli u naš sustav."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Kako je odabrana kategorija predviđena za više odgovornih tijela, ovaj e-mail poslan je na adrese nekoliko ureda koje prekrivaju mjesto problema. Molimo vas da zanemarite e-mail ukoliko niste nadležni za ovaj problem."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3415,9 +3743,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr ""
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Ovo je sažetak svih postojećih izvješća na stranici; molimo odaberite određenu županiju kako biste vidjeli probleme prijavljene za to područje."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3455,8 +3782,8 @@ msgstr "Problem je i dalje aktualan"
msgid "This problem is old and of unknown status."
msgstr "Odabrani problem je star i nismo upoznati s trenutnim stanjem."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3473,20 +3800,20 @@ msgstr "Prijava je trenutno označena kao popravljena."
msgid "This report is currently marked as open."
msgstr "Prijava je trenutno označena kao otvorena."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Stranica sadrži i fotografiju problem, dodanu od strane korisnika."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Vremenska skala"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Naslov"
@@ -3499,11 +3826,11 @@ msgstr "Kako<strong>biste prijavili problem</strong>, na karti označite točnu
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Kako biste vidjeli lokalne probleme,molimo Vas da unesete poštanski broj ili naziv ulice i područje."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "Karta točne lokacije ovog problema"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3515,7 +3842,8 @@ msgstr "Ukupno"
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3533,8 +3861,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Nepotvrđeno"
@@ -3547,7 +3875,8 @@ msgstr "Nepoznato"
msgid "Unknown alert type"
msgstr "Nepoznat tip upozorenja"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -3574,12 +3903,12 @@ msgstr "Ažuriranje u nastavku dodao je anonimni korisnik u %s"
msgid "Update below added by %s at %s"
msgstr "Ažuriranje u nastavku dodao %s u %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr ""
@@ -3600,7 +3929,7 @@ msgstr "Ažuriranjem je problem označen kao popravljen"
msgid "Update reopened problem"
msgstr "Ažuriranjem je problem ponovno otvoren"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Status ažuriranja"
@@ -3614,24 +3943,24 @@ msgstr "Ažuriranje:"
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Ažurirano!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Ažuriranja"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3648,23 +3977,37 @@ msgstr "Ažuriranja za {{naslov}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Ažuriranja za ovaj problem,Popravi.to"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Korisnici"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Korisnička oznaka uklonjena"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Korisnik označen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Korisnici"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Vrijednosti ažurirane"
@@ -3734,7 +4077,7 @@ msgstr "Nikada ne prikazujemo vašu e-mail adresu"
msgid "We never show your email address or phone number."
msgstr "Nikada ne prikazujemo vašu e-mail adresu ili telefonski broj."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Shvaćamo da bi za ovaj problem moglo biti odgovorno% s, međutim, trenutno nemamo nikakve pojedinosti o njihovom kontaktu. Ako znate odgovarajuću kontakt adresu, molimo Vas da nam se javite."
@@ -3761,7 +4104,7 @@ msgstr "Rado&rsquo;bismo čuli vaše mišljenje o ovoj stranici. Da biste to uč
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Rado bismo čuli Vaše mišljenje o ovoj stranici. Da biste to učinili, dovoljno je ispuniti obrazac ili poslati e-mail na <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3805,18 +4148,20 @@ msgstr "Pisanje velikim tiskanim slovima i bez interpunkcijskih znakova čini po
msgid "Year"
msgstr "Godina"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3849,6 +4194,17 @@ msgstr "Sljedeće ažuriranje prijavljujete jer je uvredljivo, sadrži osobne po
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3856,7 +4212,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Možete nam pomoći u pronalaženju kontakt e-mail adresa za lokalne probleme %s i poslati nam ih e-mailom na <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -3931,6 +4292,17 @@ msgstr "Uapješno ste se prijavili; molimo provjerite i potvrdite točnost Vaši
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Jeste li sigurni da želite ponovno poslati?"
@@ -3966,7 +4338,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Vaša e-mail adresa"
@@ -4004,7 +4376,7 @@ msgstr "Prezime"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Ime"
@@ -4036,7 +4408,7 @@ msgstr "Vaša lozinka je promijenjena"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Vaš broj telefona"
@@ -4052,6 +4424,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4076,13 +4449,13 @@ msgstr "od %s"
msgid "council"
msgstr "odgovorno tijelo"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr "odgovorno tijelo ref:&nbsp;%s"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "nije korištena karta"
@@ -4092,11 +4465,17 @@ msgstr "nije korištena karta"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "npr. ‘%s’ ili‘%s’"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Uređivane korisnika %d"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "od %d različitih korisnika"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4111,18 +4490,16 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "označeno kao popravljeno"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "označeno kao %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4130,30 +4507,26 @@ msgid "marked as fixed"
msgstr "označeno kao popravljeno"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Problem je i dalje aktualan"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "Istražujem"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "označeno kao popravljeno"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "označeno kao popravljeno"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4165,22 +4538,23 @@ msgstr "n/a"
msgid "or"
msgstr "ili"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4219,7 +4593,7 @@ msgstr "lokalno odgovorno tijelo"
msgid "there is no pin shown as the user did not use the map"
msgstr "nema oznake jer korisnik nije označio problem na karti"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "ovaj tip "
@@ -4228,8 +4602,8 @@ msgid "today"
msgstr "danas"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "korištena karta"
@@ -4333,3 +4707,19 @@ msgid_plural "%d days"
msgstr[0] "%d dan"
msgstr[1] "%d dani"
msgstr[2] "%d dani"
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Potrebna informacija"
+
+#~ msgid "End Year:"
+#~ msgstr "Godina završetka:"
+
+#~ msgid "End month:"
+#~ msgstr "Mjesec završetka:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Godina početka:"
+
+#~ msgid "Start month:"
+#~ msgstr "Mjesec početka:"
diff --git a/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
index ab1269c23..9b12958eb 100644
--- a/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/nb_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -13,9 +13,9 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-08 10:14+0000\n"
-"Last-Translator: Anders Einar Hilden <hildenae@gmail.com>\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
+"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/fixmystreet/language/nb_NO/)\n"
"Language: nb_NO\n"
"MIME-Version: 1.0\n"
@@ -23,8 +23,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr " og "
@@ -45,28 +45,28 @@ msgstr " og <strong>vi sender det nå til administrasjonen</strong>"
msgid " or "
msgstr " eller "
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d adresser"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d bekreftede varsler, %d ubekreftede"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d administrasjonskontakter &ndash; %d bekreftet, %d ubekreftet"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d redigeringer av %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d aktive oppdateringer"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d spørreskjema sendt &ndash; %d besvart (%s%%)"
@@ -79,7 +79,7 @@ msgstr "%d til %d av %d"
msgid "%s - Summary reports"
msgstr "%s - oppsummeringsrapporter"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -87,7 +87,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "%s bydel, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr "%s, rapportert %s"
@@ -108,7 +108,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr "(Ta det med ro &mdash; vi tar vare på oppdateringen din mens du sjekker e-posten din.)"
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Epost i misbrukstabellen)"
@@ -122,6 +122,7 @@ msgstr "(en standardavstand som dekker en befolkning på omtrent 200 000)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(alternativt kan RSS-strømmen tilpasses, innenfor"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -129,6 +130,7 @@ msgstr "(alternativt kan RSS-strømmen tilpasses, innenfor"
msgid "(closed)"
msgstr "(lukket)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -141,6 +143,7 @@ msgstr "(løst)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(som tagging, søppel, hull i veien, eller ødelagte gatelys)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -152,6 +155,7 @@ msgstr "(ikke rapportert til administrasjonen)"
msgid "(optional)"
msgstr "(valgfritt)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -167,12 +171,12 @@ msgstr "(vi viser aldri din e-postadresse)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Velg en kategori --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Velg en eiendomsstype --"
@@ -180,6 +184,14 @@ msgstr "-- Velg en eiendomsstype --"
msgid "<big>%s</big> reports"
msgstr "<big>%s</big> rapporter"
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\">Tusen takk for at du fylte ut vårt spørreskjema. Vi er glad for å høre at ditt problem er blitt fikset.</p>"
@@ -275,7 +287,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Hvis du ikke kan se kartet, <a href='%s' rel='nofollow'>hopp over dette steget</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> aktive problemer"
@@ -289,7 +301,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>Nei</strong> La meg bekrefte min oppdatering med e-post"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>Nei</strong>, la meg logge inn med e-post:"
@@ -336,19 +348,31 @@ msgstr "Om oss"
msgid "Action Scheduled"
msgstr "Handling planlagt"
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr "Legg til administrasjon"
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Legg til ny kategori"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr "Legg til bruker"
@@ -386,6 +410,7 @@ msgstr "Alle rapporter"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -437,7 +462,7 @@ msgstr "All informasjonen du har lagt inn her vil bli sendt til <strong>%s</stro
msgid "An update marked this problem as fixed."
msgstr "En oppdatering markerte dette problemet som fikset."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonym"
@@ -461,26 +486,26 @@ msgstr "Er du en utvikler?"
msgid "Are you from a council?"
msgstr "Er du fra den lokale administrasjonen?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr "Dekket område"
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr "Flytt til en annen kategori:"
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr "Tildel til ekstern administrasjon:"
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr "Tildelt underavdeling:"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr "Tildelt %s"
@@ -493,12 +518,13 @@ msgstr "På det meste blir %d forespørsler returnert i hver spørring. De retu
msgid "At the moment only searching for and looking at reports work."
msgstr "For øyeblikket er det kun søk etter og å se på rapporter som fungerer."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr "Avventer moderasjon"
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr "Tilbake"
@@ -510,20 +536,20 @@ msgstr "Bannlys epostadresse"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Pass på å velge riktig kategori, da vi bruker denne for å avgjøre hvem vi skal sende rapporten til."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr "Administrasjoner"
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr "Administrasjon"
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr "Administrasjon:"
@@ -542,9 +568,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Hvis du ikke kan se kartet, <a href='%s' rel='nofollow'>hopp over dette steget</a>."
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -558,22 +584,22 @@ msgstr "Hvis du ikke kan se kartet, <a href='%s' rel='nofollow'>hopp over dette
msgid "Category"
msgstr "Kategori"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Løsningsrate fordelt på kategori for problemer > 4 uker gamle"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Kategori:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Kategori: %s"
@@ -583,12 +609,51 @@ msgstr "Kategori: %s"
msgid "Change Password"
msgstr "Bytt passord"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Klikk i kartet for å rapportere et problem"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Klikk i kartet for å rapportere et problem"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -598,14 +663,14 @@ msgstr "Klikk i kartet for å rapportere et problem"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Lukket"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "(ikke rapportert til administrasjonen)"
@@ -623,12 +688,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "De nærmeste problemene <small>(innenfor&nbsp;%skm)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Koordinater:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Merkevaresamarbeid"
@@ -642,7 +707,12 @@ msgstr "Merkevaresamarbeidsdata:"
msgid "Cobrand:"
msgstr "Merkevaresamarbeid:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Bekreftelse"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Oppsett oppdatert - kontakter vil bli generert automatisk senere"
@@ -650,7 +720,7 @@ msgstr "Oppsett oppdatert - kontakter vil bli generert automatisk senere"
msgid "Configure Endpoint"
msgstr "Sett opp endepunkt"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Bekreft"
@@ -677,8 +747,8 @@ msgstr "Bekreft via epost under, og oppgi et nytt passord der. Når du har bekre
msgid "Confirmation"
msgstr "Bekreftelse"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -689,6 +759,7 @@ msgstr "Bekreftet"
msgid "Confirmed reports between %s and %s"
msgstr "Bekreftede rapporter mellom %s og %s"
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -719,16 +790,17 @@ msgstr "Kontakt oss"
msgid "Contact the team"
msgstr "Kontakt prosjektgruppen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Kunne ikke finne bruker"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr "Klarte ikke finne posisjon"
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Administrasjon"
@@ -753,21 +825,22 @@ msgstr "Antall"
msgid "Create a report"
msgstr "Lag en rapport"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Lag kategori"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Opprettet"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Opprettet:"
@@ -776,6 +849,12 @@ msgstr "Opprettet:"
msgid "Current state"
msgstr "Gjeldende tilstand"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Ingen problemer er rapportert"
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -785,8 +864,9 @@ msgstr "Oversikt"
msgid "Dealt with by subdivision within 5 working days"
msgstr "Behandlet av underavdeling innen 5 arbeidsdager"
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -799,8 +879,9 @@ msgid "Description"
msgstr "Beskrivelse"
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -809,17 +890,17 @@ msgstr "Detaljer"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Detaljer:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr "Delegert"
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Arbeidshester"
@@ -850,14 +931,22 @@ msgstr "Vet ikke"
msgid "Duplicate"
msgstr "Duplikat"
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Rediger"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr "Rediger detaljer for administrasjon"
@@ -884,27 +973,31 @@ msgid "Editor"
msgstr "Oppdatert av"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "E-post"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Epost lagt til misbruksliste"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Din e-postadresse:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "Epost allerede i misbrukslisten"
@@ -916,20 +1009,19 @@ msgstr "Send meg e-post om lokale problemer"
msgid "Email me updates"
msgstr "Send meg oppdateringer"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "E-post:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr "E-post: %s"
@@ -957,23 +1049,33 @@ msgstr "Tom pub eller bar"
msgid "Empty public building - school, hospital, etc."
msgstr "Tom offentlig bygning - skole, sykehos, etc."
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Sluttår:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Slutt-dag:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Sluttmåned:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Slutt-dag:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr "Endepunkt"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr "Skriv inn et veinavn i Z&uuml;rich"
@@ -1005,7 +1107,7 @@ msgstr "Skriv inn et nytt passord:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Skriv inn et nytt passord"
@@ -1061,6 +1163,10 @@ msgstr "Fornavn"
msgid "First time"
msgstr "Første gang"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1096,7 +1202,7 @@ msgstr "FiksGataMi sender forskjellige kategorier problemer til forskjellige adm
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1128,17 +1234,34 @@ msgstr "Fiksede rapporter"
msgid "Fixed:"
msgstr "Løst:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Flag bruker"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Flagget:"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Flagget:"
@@ -1151,6 +1274,10 @@ msgstr "Følg en bydelslenke for å kun se rapporter innenfor den bydelen."
msgid "For council(s):"
msgstr "For administrasjon(ene):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1207,7 +1334,7 @@ msgstr "Fortsett"
msgid "Going to send questionnaire?"
msgstr "Skal det sendes spørreskjema?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Graf over problemoppretting fordelt på status over tid"
@@ -1230,6 +1357,7 @@ msgstr "Har du rapportert et problem til en administrasjon før, eller er dette
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1264,8 +1392,8 @@ msgstr "Hei, %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1283,7 +1411,8 @@ msgstr "Skjul nåler"
msgid "History"
msgstr "Historie"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr "Hjem"
@@ -1291,11 +1420,12 @@ msgstr "Hjem"
msgid "How to report a problem"
msgstr "Hvordan rapportere et problem"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr "Hvordan sende inn rapporter som løses"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Jeg er redd du ikke kan bekrefte ubekreftede rapporter."
@@ -1311,16 +1441,30 @@ msgstr "Jeg er redd vi ikke kunne verifisere den referansen, da det er for lenge
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Jeg er redd vi ikke kunne verifisere den referansen. Hvis du kopierte webadressen fra en e-post, sjekk at du har kopiert den korrekt.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr "Hvis du ikke gjør dette vil ikke ditt varsel bli aktivert"
@@ -1358,6 +1502,33 @@ msgstr ""
"(denne blir ikke sendt til administrasjonen). Du kan for eksempel\n"
"dele din erfaring med hvordan ditt problem ble løst."
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Ugyldig ID"
@@ -1377,17 +1548,22 @@ msgstr "Ugyldig valg av feed"
msgid "In Progress"
msgstr "Under arbeid"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Epost i misbrukstabellen)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "I tillegg er følgende attributter som ikke er del av Open311 v2-spesifikasjonen returnert: agency_sent_datetime, title (også returnert som del av description), interface_used, comment_count, requestor_name (kun tilstede hvis innsender tillot at navnet kunne vises på dette nettstedet)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "Under arbeid"
@@ -1396,7 +1572,7 @@ msgstr "Under arbeid"
msgid "Incident Category"
msgstr "Hendelseskategori"
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr "Inkluder rapporørens personlige detaljer"
@@ -1408,22 +1584,21 @@ msgstr "Inkluder ubekreftede problemer"
msgid "Incorrect has_photo value \"%s\""
msgstr "Feil has_photo-verdi \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+#, fuzzy
+msgid "Internal notes"
msgstr "Interne notater:"
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:48
-#, fuzzy
msgid "Internal referral"
-msgstr "Interne notater:"
+msgstr ""
#: perllib/FixMyStreet/App/Controller/Open311.pm:339
msgid "Invalid agency_responsible value %s"
msgstr "Ugyldig agency_responsible-verdi %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Ugyldig slutt-dato"
@@ -1431,7 +1606,7 @@ msgstr "Ugyldig slutt-dato"
msgid "Invalid format %s specified."
msgstr "Ugyldig format %s oppgitt."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Ugyldig startdato"
@@ -1462,7 +1637,7 @@ msgstr "Det er verdt å merke seg imidlertid at prosessen kan være treg, spesie
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Husk min innlogging på denne datamaskinen"
@@ -1472,7 +1647,7 @@ msgstr "Husk min innlogging på denne datamaskinen"
msgid "Last Name"
msgstr "Etternavn"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Sist redigert av"
@@ -1485,6 +1660,10 @@ msgstr "Siste oppdatering:"
msgid "Last&nbsp;update:"
msgstr "Siste&nbsp;oppdatering:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1527,6 +1706,7 @@ msgstr "Lokal RSS-strøm og e-postvarsel for ‘%s’"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1539,7 +1719,8 @@ msgstr "Lokale varsler"
msgid "Locate the problem on a map of the area"
msgstr "Lokaliser problemet på kartet over området"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr "KART"
@@ -1547,6 +1728,10 @@ msgstr "KART"
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Kart &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> og bidragsytere, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Melding"
@@ -1571,13 +1756,13 @@ msgstr "Måned"
msgid "More problems nearby"
msgstr "Flere problemer i nærheten"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1588,7 +1773,7 @@ msgstr "Flere problemer i nærheten"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Navn"
@@ -1599,14 +1784,14 @@ msgstr "Navn (valgfritt)"
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Navn:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr "Navn: %s"
@@ -1646,14 +1831,20 @@ msgstr "Nesten ferdig! Nå må du sjekke e-posten din..."
msgid "New <br>problems"
msgstr "Nye <br>problemer"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr "Ny administrasjon lagt til"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Ny kategorikontakt lagt til"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+#, fuzzy
+msgid "New internal note:"
+msgstr "Interne notater:"
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Nye lokale problemer på FiksGataMi"
@@ -1716,7 +1907,7 @@ msgstr "Nye rapporter innenfor grensen til {{NAME}} på reportemptyhomes.com"
msgid "New state"
msgstr "Ny tilstand"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr "Ny oppdatering:"
@@ -1730,13 +1921,13 @@ msgstr "Ny!"
msgid "Next"
msgstr "Neste"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1749,7 +1940,7 @@ msgstr "Neste"
msgid "No"
msgstr "Nei"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr "Ingen administrasjon"
@@ -1757,23 +1948,25 @@ msgstr "Ingen administrasjon"
msgid "No council"
msgstr "Ingen administrasjon"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Ingen administrasjon er valgt"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Ingenting endringer har blitt gjort."
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Ingen flaggede problemer ble funnet"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Ingen flaggede brukere ble funnet"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr "Ingen flere oppdateringer"
@@ -1787,25 +1980,42 @@ msgstr "Ingen problemer ble funnet."
msgid "No problems have been reported yet."
msgstr "Ingen problemer er rapportert"
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr "Ingen resultater returnert"
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "Ingen støttespillere"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr "Ikke-offentlig"
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Ingen"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1825,11 +2035,11 @@ msgstr "Ikke for min underavdeling"
msgid "Not reported before"
msgstr "Ikke rapportert tidligere"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Ikke rapportert til administrasjonen"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1839,7 +2049,7 @@ msgstr "Merk"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Merk at når vi tar med ubekreftede rapporter så brukes datoen rapporten var opprettet, hvilket ikke trenger være den samme måneden som rapporten var bekreftet, så tallene kan hoppe litt opp og ned."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1865,7 +2075,8 @@ msgstr "På tide å registrere din oppdatering&hellip;"
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "På tide å registrere din oppdatering&hellip; har du et FiksGataMi-passord?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr "OK"
@@ -1909,7 +2120,7 @@ msgstr "Eldre løste"
msgid "Older problems"
msgstr "Eldre problemer"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1920,8 +2131,8 @@ msgstr "Eldre problemer"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1953,15 +2164,15 @@ msgstr "Eller problemer meldt til:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Eller du kan abonnere på varsel basert på bydel eller administrasjon du hører inn under:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Annet"
@@ -1969,7 +2180,7 @@ msgstr "Annet"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Vår kildekode er fri programvare og <a href=\"http://github.com/mysociety/fixmystreet\">tilgjengelig på GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Eier"
@@ -1978,8 +2189,8 @@ msgstr "Eier"
msgid "Page Not Found"
msgstr "Fant ikke siden"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr "Forelder"
@@ -1994,7 +2205,7 @@ msgstr "Delvis"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Passord (valgfritt)"
@@ -2002,25 +2213,29 @@ msgstr "Passord (valgfritt)"
msgid "Password:"
msgstr "Passord:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Ditt telefonnummer"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefonnummer (valgfritt)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefon:"
@@ -2032,6 +2247,7 @@ msgstr "Telefon:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2049,7 +2265,8 @@ msgstr "Bilde:"
msgid "Photos of recent nearby reports"
msgstr "Bilder av nye problemer i nærheten"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr "Plasser tegnestiften på kartet"
@@ -2060,8 +2277,8 @@ msgstr "Plasser tegnestiften på kartet"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planlagt"
@@ -2099,12 +2316,13 @@ msgstr "Vennligst sjekk at du har skrevet en gyldig e-postadresse"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Velg en kategori"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Velg en type egenskap"
@@ -2140,25 +2358,32 @@ msgstr "Ikke vær ufin &mdash; å kjefte på din administrasjon skader verdien a
msgid "Please do not give address or personal information in this section."
msgstr "Vennligst ikke skriv inn adresser eller personlig informasjon her,"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Vennligst legg til en melding"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Skriv inn et passord"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Vennligst legg inn et emne"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2169,8 +2394,9 @@ msgstr "Legg til en gyldig e-post"
msgid "Please enter a valid email address"
msgstr "Legg inn din e-post"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Legg inn opplysninger om problemet"
@@ -2183,6 +2409,8 @@ msgstr "Legg inn opplysninger om problemet"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2198,29 +2426,39 @@ msgstr "Legg inn din e-post"
msgid "Please enter your email address"
msgstr "Vennligst tast inn din e-postadresse"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Vennligst tast inn ditt fornavn"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Vennligst legg inn ditt fulle navn, administrasjoner som mottar ditt problem trenger dette - hvis du ikke ønsker at ditt navn skal vises, fjern haken under"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Legg inn ditt navn"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Vennligst tast inn ditt mellomnavn"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Vennligst tast inn ditt mellomnavn"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Vennligst legg inn din tittel"
@@ -2353,11 +2591,11 @@ msgstr "Vennligs oppgi om dette problemet er blitt fikset eller ikke"
msgid "Please take a look at the updates that have been left."
msgstr "Vennligst se over oppdateringene som har blitt lagt inn."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Vennligst last opp kun JPEG-bilder"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Vennligst last opp kun JPEG eller JPG-bilder\n"
@@ -2400,7 +2638,7 @@ msgstr "Sendt inn av %s %s"
msgid "Previous"
msgstr "Forrige"
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2426,12 +2664,12 @@ msgstr "Problem %s bekreftet"
msgid "Problem %s sent to council %s"
msgstr "Problem %s sendt til administrasjon %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Tilstandsfordeling av problemer"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problem markert som åpent."
@@ -2439,7 +2677,7 @@ msgstr "Problem markert som åpent."
msgid "Problem state change based on survey results"
msgstr "Problemtilstandsendring basert på spørreundersøkelsesresultater"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problemer"
@@ -2515,9 +2753,8 @@ msgid "Provide an update"
msgstr "Bidra med en oppdatering"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Det er valgfritt å oppgi et passord, men om du gjør det vil det bli enklere for deg å rapportere problemer, legge inn oppdateringer og holde oversikt over dine rapporter"
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2531,8 +2768,8 @@ msgstr "Det er valgfritt å oppgi et passord, men om du gjør det vil det bli en
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Det er valgfritt å oppgi et passord, men om du gjør det vil det bli enklere for deg å rapportere problemer, legge inn oppdateringer og holde oversikt over dine rapporter"
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr "Offentlig"
@@ -2540,17 +2777,17 @@ msgstr "Offentlig"
msgid "Public information (shown on site)"
msgstr "Offentlig informasjon (vises på websiden)"
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr "Offentlig respons:"
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr "Publiser bilde"
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr "Publiser svar"
@@ -2698,6 +2935,7 @@ msgstr "Rapporter tomme hjem"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2738,7 +2976,7 @@ msgstr "Rapportert %s"
msgid "Reported %s, to %s"
msgstr "Rapportert %s, til %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2750,42 +2988,42 @@ msgstr "Rapportert anonymt %s"
msgid "Reported before"
msgstr "Rapportert tidligere"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Publisert av %s anonymt %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Publisert av %s %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Rapporter av %s av %s %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Rapportert av %s i kategorien %s anonymt %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Rapportert av %s i kategorien %s av %s %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr "Rapportert i kategorien %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Rapportert i kategorien %s anonymt %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Rapportert i kategorien %s av %s %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Publisert av %s anonymt %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Rapporter av %s av %s %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Rapportert av %s i kategorien %s anonymt %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Rapportert av %s i kategorien %s av %s %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2794,21 +3032,24 @@ msgstr "Rapportert i kategorien %s av %s %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Legger til et problem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr "Rapporter"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+#, fuzzy
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr "Rapporter er begrenset til 2000 tegn i lengde. Vennligst skriv en kortere tekst"
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2827,7 +3068,8 @@ msgstr "Publiserte rapporter"
msgid "Resend report"
msgstr "Send rapport på nytt"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr "Riktig sted?"
@@ -2839,16 +3081,16 @@ msgstr "Veioperatør for denne navngitte veien (utledet fra veiens referansenumm
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Veioperatør for denne navngitte veien (fra OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr "Roter til venstre"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr "Roter til høyre"
@@ -2856,7 +3098,6 @@ msgstr "Roter til høyre"
msgid "Save changes"
msgstr "Lagre endringer"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2871,18 +3112,27 @@ msgid "Search reports"
msgstr "Søk i rapporter"
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Søk:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Søk i rapporter"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr "Velg en administrasjon"
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr "Velg et område"
@@ -2891,7 +3141,7 @@ msgstr "Velg et område"
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Velg hvilken type varsel du ønsker og klikk på knappen for en RSS-kilde, eller skriv inn din e-postadresse for å abonnere på et e-postvarsel."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Sendt til %s %s senere"
@@ -2982,6 +3232,13 @@ msgstr "Logget inn som %s"
msgid "Some categories may require additional information."
msgstr "Noen kategorier krever kanskje mer informasjon"
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -3019,20 +3276,13 @@ msgid "Source code"
msgstr "Kildekode"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Startår:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Startdag:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Startmåned:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3041,14 +3291,14 @@ msgstr "Tilstand"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Tilstand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3064,7 +3314,7 @@ msgstr "Status"
msgid "Still open, via questionnaire, %s"
msgstr "Fortsatt åpen via spørreskjema, %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr "Underkategori: %s"
@@ -3082,7 +3332,7 @@ msgstr "Emne"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Emne:"
@@ -3098,15 +3348,15 @@ msgstr "Emne:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Send inn"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Send inn endringer"
@@ -3116,14 +3366,14 @@ msgstr "Send inn endringer"
msgid "Submit questionnaire"
msgstr "Send inn spørreskjema"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3147,8 +3397,8 @@ msgstr "Jeg ønsker å abonnere på e-postvarsel"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr "Abonner på varsel basert på hvilket distrikt du hører inn under:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3167,7 +3417,7 @@ msgstr "Oppsummering"
msgid "Summary reports"
msgstr "Oppsummeringsrapporter"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr "Spørreundersøkelse"
@@ -3175,8 +3425,9 @@ msgstr "Spørreundersøkelse"
msgid "Survey Results"
msgstr "Resultater fra spørreundersøkelsen"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Tekst"
@@ -3232,7 +3483,7 @@ msgstr "Takk for ditt innspill. Vi gir deg en tilbakemelding så raskt vi kan"
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Takk, glad for å høre at problemet er fikset! Vi vil gjerne spørre deg om du har rapportert et problem til en administrasjon tidligere?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Bildet ser ikke ut til å blitt lastet opp riktig (%s), prøv på nytt."
@@ -3249,7 +3500,7 @@ msgstr "Det stedet virker ikke å være i Storbritannia. Vennligst prøv igjen."
msgid "That postcode was not recognised, sorry."
msgstr "Det postnummeret ble ikke gjenkjent, beklager."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "Det problemet vil nå bli sendt på nytt."
@@ -3261,10 +3512,44 @@ msgstr "Dene rapporten kan ikke vises på %s."
msgid "That report has been removed from FixMyStreet."
msgstr "Den rapporten har blitt fjernet fra FiksGataMi."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "Open311 v2-atributten agency_responsible brukes for å liste opp administrasjonene som mottok problemrapporten, noe som ikke helt stemmer med hvordan atributten er definert i Open311 v2-spesifikasjonen."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3287,6 +3572,11 @@ msgstr "Detaljene om ditt problem er tilgjengelig under den andre fanen ovenfor.
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Detaljene om ditt problem er tilgjengelig på høyre kant av denne siden."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3345,6 +3635,10 @@ msgstr "De siste rapporter for {{COUNCIL}} innenfor {{WARD}} bydel rapporter av
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "De siste rapporter innenfor grensen til {{NAME}} rapportert av brukere"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3371,10 +3665,17 @@ msgstr ""
"Tittelen og detaljene for problemet vil bli offentlig, pluss navnet ditt\n"
"hvis du gir oss tillatelse til det."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "Brukeren kunne ikke plassere problemet på et kart, men sjekk området rundt stedet de skrev inn"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Det var problemer med å vise 'Alle rapporter'-siden. Vennligst prøv igjen senere."
@@ -3409,19 +3710,48 @@ msgstr "Det var problemer med din rapport. Vennligst se under."
msgid "There were problems with your update. Please see below."
msgstr "Det var problemer med din oppdatering. Vennligst se under."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Denne API-implementasjonen er under arbeid og ennå ikke stabil. Den vil endre seg uten advarsel i fremtiden."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Denne e-posten har blitt sendt til begge administrasjonene som dekker stedet for problemet, da brukeren ikke kategoriserte det. Vær så snill å ignorere den hvis dere ikke er korrekt administrasjon for å håndtere denne saken, eller gi oss beskjed om hvilken kategori av problemer dette er så vi kan legge det til i vårt system."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Denne e-posten har blitt sendt til flere administrasjoner som dekker stedet for problemet, da den valgte kategorien er tilgjengelig for disse. Vær så snill å ignorere e-posten hvis dere ikke er korrekt administrasjon for å håndtere denne saken."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3436,9 +3766,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr "Dette er en opplisting av alle problemene i denne tjenesten; velg et bestemt distrikt for å se problemer som er sendt dit."
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Dette er en opplisting av alle problemene i denne tjenesten; velg en bestemt administrasjon for å se problemer som er sendt dit."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3476,8 +3805,8 @@ msgstr "Dette problemet er under arbeid"
msgid "This problem is old and of unknown status."
msgstr "Dette problemet er gammel og med ukjent status."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr "Denne rapporten avventer moderasjon"
@@ -3494,20 +3823,20 @@ msgstr "Denne rapporten er for tiden markert som fikset."
msgid "This report is currently marked as open."
msgstr "Denne rapporten er for tiden markert som åpen."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr "Denne rapporten ble rapportert anonymt"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Denne nettsiden inneholder også et bilde av problemet, sendt inn av brukeren."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Tidslinje"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Tittel"
@@ -3520,11 +3849,11 @@ msgstr "For å <strong>rapportere et problem</strong>, klikk på riktig sted på
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Du finner lokale problemer ved å søke på ditt postnummer, veinavn eller sted"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "For å se en kart med en mer presis plassering for dette problemet."
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3536,7 +3865,8 @@ msgstr "Totalt"
msgid "Transport Category"
msgstr "Transportkategori"
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr "Prøv igjen"
@@ -3554,8 +3884,8 @@ msgstr "Kan ikke fikses"
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Ubekreftet"
@@ -3568,7 +3898,8 @@ msgstr "Ukjent"
msgid "Unknown alert type"
msgstr "Ukjent varsel-type"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr "Ukjent feil"
@@ -3595,12 +3926,12 @@ msgstr "Oppdateringen under lagt inn anonymt %s"
msgid "Update below added by %s at %s"
msgstr "Oppdateringen under lagt til av %s %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr "Oppdater administrasjon"
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Tilstandsfordeling for oppdateringer"
@@ -3621,7 +3952,7 @@ msgstr "En oppdatering markerte dette problemet som fikset."
msgid "Update reopened problem"
msgstr "En oppdatering gjennåpnet problemet"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Oppdater tilstanden"
@@ -3635,24 +3966,24 @@ msgstr "Oppdatering:"
msgid "Updated"
msgstr "Oppdatert"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Oppdatert!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Oppdateringer"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr "Oppdateringer er begrenset til 2000 tegn i lengde. Vennligst skriv en kortere tekst."
@@ -3669,23 +4000,37 @@ msgstr "Oppdateringer av {{title}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Oppdateringer til dette problemet, FiksGataMi"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Brukere"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Brukerflagg fjernet"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Bruker flagget"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Brukere"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Verdier oppdatert"
@@ -3755,7 +4100,7 @@ msgstr "Vi viser aldri din e-postadresse"
msgid "We never show your email address or phone number."
msgstr "Vi viser aldri din e-postadresse eller ditt telefonnummer"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Vi innser at %s kan være ansvarlig for dette problemet, men vi mangler for tiden kontaktinformasjon for dem. Hvis du vet om en egnet kontaktadresse, ta kontakt med oss."
@@ -3782,7 +4127,7 @@ msgstr "Vi vil gjerne høre hva du tenker om dette nettstedet. Det er bare å f
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Vi ønsker å få din tilbakemelding om hva du mener om denne tjenesten. Bare fyll ut skjemaet, eller send en e-post <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3826,18 +4171,20 @@ msgstr "Når du skriver meldingen din med kun store bokstaver blir den vanskelig
msgid "Year"
msgstr "År"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3870,6 +4217,17 @@ msgstr "Du rapporterer at følgende oppdatering er støtende, inneholder personl
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr "Du kan <a href=\"%s%s\">lese om problemet på denne siden</a>."
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3877,7 +4235,12 @@ msgstr "Du kan <a href=\"%s%s\">lese om problemet på denne siden</a>."
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Du kan hjelpe oss ved å finne en kontakt-e-post for lokale problemer i %s, og sende den via e-post til oss på <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr "Du avviste; vennligst fyll inn boksen ovenfor"
@@ -3952,6 +4315,17 @@ msgstr "Du har lykkes med å logge inn. Vennligst sjekk og bekreft at dine detal
msgid "You must now click the link in the email we've just sent you."
msgstr "Du må nå åpne lenken i e-posten vi akkurat sendte deg."
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Ønsker du virkelig å sende på nytt?"
@@ -3987,7 +4361,7 @@ msgstr "Din e-postadresse (valgfritt)"
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Din e-postadresse"
@@ -4025,7 +4399,7 @@ msgstr "Ditt etternavn"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Ditt navn"
@@ -4057,7 +4431,7 @@ msgstr "Ditt passord har blitt endret"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Ditt telefonnummer"
@@ -4073,6 +4447,7 @@ msgstr "Din rapport har blitt opprettet og vil bli sendt innen kort tid."
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4097,13 +4472,13 @@ msgstr "av %s"
msgid "council"
msgstr "administrasjon"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr "administrasjonsreferanse:&nbsp;%s"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "brukte ikke kart"
@@ -4113,11 +4488,17 @@ msgstr "brukte ikke kart"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "for eksempel «%s» eller «%s»"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Legg til bruker"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "fra %d forskjellige brukere"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4128,24 +4509,20 @@ msgid "less than a minute"
msgstr "mindre enn et minutt"
#: templates/web/default/report/updates.html:57
-#, fuzzy
msgid "marked as a duplicate report"
-msgstr "duplisert rapport"
+msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "Handling planlagt"
+msgstr ""
#: templates/web/default/report/updates.html:59
-#, fuzzy
msgid "marked as an internal referral"
-msgstr "Interne notater:"
+msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "markert som %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4153,31 +4530,26 @@ msgid "marked as fixed"
msgstr "markert som fikset"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Dette problemet er under arbeid"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "Undersøkes"
+msgstr ""
#: templates/web/default/report/updates.html:55
-#, fuzzy
msgid "marked as not the council's responsibility"
-msgstr "ikke administrasjonens ansvar"
+msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "markert som fikset"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "markert som fikset"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4189,22 +4561,23 @@ msgstr "n/a"
msgid "or"
msgstr "eller"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr "eller finn min posisjon automatisk"
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr "opprinnelig lagt inn: &ldquo;%s&rdquo;"
@@ -4243,7 +4616,7 @@ msgstr "den lokale administrasjonen"
msgid "there is no pin shown as the user did not use the map"
msgstr "Det vises ingen nål på grunn av at brukeren ikke brukte kartet"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "denne type lokalt problem"
@@ -4252,8 +4625,8 @@ msgid "today"
msgstr "idag"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "brukte kart"
@@ -4347,8 +4720,18 @@ msgid_plural "%d days"
msgstr[0] "%d dag"
msgstr[1] "%d dager"
-#~ msgid "no further action"
-#~ msgstr "Ingen flere handlinger"
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Denne informasjonen er påkrevd"
+
+#~ msgid "End Year:"
+#~ msgstr "Sluttår:"
+
+#~ msgid "End month:"
+#~ msgstr "Sluttmåned:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Startår:"
-#~ msgid "third party responsibility"
-#~ msgstr "tredjeparts ansvar"
+#~ msgid "Start month:"
+#~ msgstr "Startmåned:"
diff --git a/locale/nl_NL.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/nl_NL.UTF-8/LC_MESSAGES/FixMyStreet.po
index 9fb959eb1..2494f35e5 100644
--- a/locale/nl_NL.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/nl_NL.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/fixmystreet/language/nl_NL/)\n"
"Language: nl_NL\n"
@@ -19,8 +19,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr "en"
@@ -41,28 +41,28 @@ msgstr "en <strong>we zullen het nu naar de gemeente sturen</strong>"
msgid " or "
msgstr "of"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d adressen"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d geverifieerde meldingen, %d ongeverifieerd"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d gemeente contactpersonen &ndash; %d geverifieerd, %d ongeverifieerd"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d bewerkingen door %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d live updates"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d vragenlijsten verzonden &ndash; %d beantwoord (%s%%)"
@@ -75,7 +75,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr "%s - Overzichtsverslagen"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -83,7 +83,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "%s district, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -104,7 +104,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Email in misbruiktabel)"
@@ -118,6 +118,7 @@ msgstr "(een stand afstand waarbinnen ongeveer 200.000 mensen leven)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(als alternatief kan je de RSS feed aanpassen binnen"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -125,6 +126,7 @@ msgstr "(als alternatief kan je de RSS feed aanpassen binnen"
msgid "(closed)"
msgstr "(gesloten)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -137,6 +139,7 @@ msgstr "(opgelost)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(zoals graffiti, zwerfafval, losliggende tegels of straatverlichting) "
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -148,6 +151,7 @@ msgstr "(niet verstuurd naar de gemeente)"
msgid "(optional)"
msgstr "(optioneel)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -163,12 +167,12 @@ msgstr "(we zullen je e-mailadres niet tonen)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Kies een categorie --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Kies een woning type --"
@@ -176,6 +180,14 @@ msgstr "-- Kies een woning type --"
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\">Bedankt voor het invullen van de vragenlijst. Het is goed om te horen dat het is opgelost.</p>"
@@ -245,7 +257,7 @@ msgstr "<p>Bedankt voor het invullen van de vragenlijst. Als je meer informatie
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Als je geen kaart ziet, <a href='%s' rel='nofollow'>sla dan deze stap over</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> actieve problemen"
@@ -259,7 +271,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>Nee</strong> Laat me mijn update per e-mail bevestigen"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>Nee</strong> Laat me inloggen per e-mail"
@@ -306,19 +318,31 @@ msgstr "Over ons"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Voeg een nieuwe categorie toe"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -356,6 +380,7 @@ msgstr "Alle meldingen"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -407,7 +432,7 @@ msgstr "Alle informatie die je hier opgeeft zal worden verzonden naar <strong>%
msgid "An update marked this problem as fixed."
msgstr "Een update heeft dit probleem als opgelost gemarkeerd."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anoniem"
@@ -431,26 +456,26 @@ msgstr "Ben je een ontwikkelaar?"
msgid "Are you from a council?"
msgstr "Ben je van een gemeente?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -463,12 +488,13 @@ msgstr "Ten hoogste %d aanvragen worden per query teruggegeven. The teruggegeven
msgid "At the moment only searching for and looking at reports work."
msgstr "Op dit moment kan je alleen zoeken naar meldingen en deze bekijken."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -480,20 +506,20 @@ msgstr "Verban e-mailadres"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Kies je categorie nauwkeurig, op basis hiervan bepalen we waarheen je melding wordt verzonden."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -512,9 +538,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Kan je de kaart niet zien? <a href='%s' rel='nofollow'>Sla deze stap over</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -528,22 +554,22 @@ msgstr "Kan je de kaart niet zien? <a href='%s' rel='nofollow'>Sla deze stap ove
msgid "Category"
msgstr "Categorie"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Doorloopsnelheid voor problemen in categorie >4 weken oud"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Categorie:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Categorie: %s"
@@ -553,12 +579,51 @@ msgstr "Categorie: %s"
msgid "Change Password"
msgstr "Verander Wachtwoord"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Klik op de kaart om een probleem te melden"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Klik op de kaart om een probleem te melden"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -568,14 +633,14 @@ msgstr "Klik op de kaart om een probleem te melden"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Gesloten"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Gesloten door gemeente"
@@ -593,12 +658,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Dichtstbijzijnde problemen <small>(binnen %skm)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Co&ouml;rdinaten:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Cobrand"
@@ -612,7 +677,12 @@ msgstr "Cobrand data:"
msgid "Cobrand:"
msgstr "Cobrand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Bevestiging"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Configuratie bijgewerkt - contactpersonen worden later gegenereerd"
@@ -620,7 +690,7 @@ msgstr "Configuratie bijgewerkt - contactpersonen worden later gegenereerd"
msgid "Configure Endpoint"
msgstr "Configureer eindpunt"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Bevestig"
@@ -647,8 +717,8 @@ msgstr "Bevestig door e-mail beneden en kies een wachtwoord. Als je bevestigd wo
msgid "Confirmation"
msgstr "Bevestiging"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -659,6 +729,7 @@ msgstr "Bevestigd"
msgid "Confirmed reports between %s and %s"
msgstr ""
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -689,16 +760,17 @@ msgstr "Contacteer ons"
msgid "Contact the team"
msgstr "Neem contact op met het team"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Kan de gebruiker niet vinden"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Gemeente"
@@ -723,21 +795,22 @@ msgstr "Aantal"
msgid "Create a report"
msgstr "Maak een melding"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Maak een categorie"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Aangemaakt"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Aangemaakt:"
@@ -746,6 +819,12 @@ msgstr "Aangemaakt:"
msgid "Current state"
msgstr "Huidige status"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Er zijn nog geen problemen gemeld."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -755,8 +834,9 @@ msgstr "Dashboard"
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -769,8 +849,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -779,17 +860,17 @@ msgstr "Details"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Details:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr "Overgedragen"
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Toewijdingsranglijst"
@@ -820,14 +901,22 @@ msgstr "Geen idee"
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Bewerk"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -854,27 +943,31 @@ msgid "Editor"
msgstr "Redacteur"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "Email"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Email toegevoegd aan zwarte lijst"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Jouw e-mailadres:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "Email staat al op zwarte lijst"
@@ -886,20 +979,19 @@ msgstr "Email me nieuwe lokale meldingen"
msgid "Email me updates"
msgstr "Email me updates"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "Email:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -927,23 +1019,33 @@ msgstr "Lege kroeg of bar"
msgid "Empty public building - school, hospital, etc."
msgstr "Leeg publiek gebouw - school, ziekenhuis etc."
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Eindjaar:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Einddag:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Eindmaand:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Einddag:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -975,7 +1077,7 @@ msgstr "Geef nieuw wachtwoord:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Geef wachtwoord "
@@ -1031,6 +1133,10 @@ msgstr "Voornaam"
msgid "First time"
msgstr "Eerste keer"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1064,7 +1170,7 @@ msgstr "FixMyStreet heeft diverse categorieën per gemeente voor problemen daaro
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1096,17 +1202,34 @@ msgstr "Opgeloste meldingen"
msgid "Fixed:"
msgstr "Opgelost:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Gemarkeerde gebruikr"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Gemarkeerd"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Gemarkeerd:"
@@ -1119,6 +1242,10 @@ msgstr "Klik op de link voor een wijk om alleen problemen in die wijk te bekijke
msgid "For council(s):"
msgstr "For gemeente(s):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1175,7 +1302,7 @@ msgstr "Gaan"
msgid "Going to send questionnaire?"
msgstr "Vragenlijst versturen?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Grafiek van problemen aangemaakt per status na verloop van tijd"
@@ -1198,6 +1325,7 @@ msgstr "Heb je al eens eerder een probleem aan de gemeente gemeld, of is dit jou
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1232,8 +1360,8 @@ msgstr "Hoi %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1251,7 +1379,8 @@ msgstr "Verberg spelden"
msgid "History"
msgstr "Geschiedenis"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1259,11 +1388,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Hoe een melding maken"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Ik ben bang dat je geen ongeverifieerde meldingen kunt bevestigen."
@@ -1279,16 +1409,30 @@ msgstr "Ik ben bang dat we je token niet kunnen valideren omdat de melding te ou
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Ik ben bang dat we je token niet kunnen valideren. Als je de URL uit een e-mail hebt gekopieerd kan je controleren of je hem volledig hebt gekopieerd.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1323,6 +1467,33 @@ msgid ""
"your experience of getting the problem fixed?"
msgstr "Als je een publieke update over dit probleem wil maken vul ht dan hier in. Deze wordt niet neer de gemeente gestuurd. Bijvoorbeeld hoe was jouw ervaring met het oplossen van dit probleem?"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Illegaal ID"
@@ -1342,17 +1513,22 @@ msgstr "Illegale RSS feed selectie"
msgid "In Progress"
msgstr "In Behandeling"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Email in misbruiktabel)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "Daarnaast worden de volgende attributen, die niet onderdeel zijn van de Open311 v2 specificatie meegestuurd: agency_sent_datetime, title (ook meegestuurd als onderdeel van de description), interface_used, comment_count, requestor_name (alleen aanwezig als deze getoond mag worden op de site)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "In Behandeling"
@@ -1361,7 +1537,7 @@ msgstr "In Behandeling"
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1373,9 +1549,8 @@ msgstr "Ongeverifiëerde meldingen meesturen"
msgid "Incorrect has_photo value \"%s\""
msgstr "Ongeldige has_photo waarde \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1387,7 +1562,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Ongeldige agency_responsible waarde %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Ongeldige einddatum"
@@ -1395,7 +1570,7 @@ msgstr "Ongeldige einddatum"
msgid "Invalid format %s specified."
msgstr "Ongeldig formaat %s gespecifieerd"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Ongeldige startdatum"
@@ -1426,7 +1601,7 @@ msgstr "It is worth noting however that the process can sometimes be slow, espec
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Hou me ingelogd op deze computer"
@@ -1436,7 +1611,7 @@ msgstr "Hou me ingelogd op deze computer"
msgid "Last Name"
msgstr "Achternaam"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Laatste bewerker"
@@ -1449,6 +1624,10 @@ msgstr "Laatste update:"
msgid "Last&nbsp;update:"
msgstr "Laatste update:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1491,6 +1670,7 @@ msgstr "Lokale RSS feeds en e-mail meldingen voor '%s'"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1503,7 +1683,8 @@ msgstr "Lokale melding"
msgid "Locate the problem on a map of the area"
msgstr "Vind het probleem op de kaart van de omgeving"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1511,6 +1692,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Kaart &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> en bijdragers, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Bericht"
@@ -1535,13 +1720,13 @@ msgstr "Maand"
msgid "More problems nearby"
msgstr "Meer problemen dichtbij"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1552,7 +1737,7 @@ msgstr "Meer problemen dichtbij"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Naam"
@@ -1563,14 +1748,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Naam:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1610,14 +1795,19 @@ msgstr "Bijna klaar! Kijk nu in je e-mail..."
msgid "New <br>problems"
msgstr "Nieuw <br>problemen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Nieuw contactpersonen voor categorie toegevoegd"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Nieuwe lokale problemen op FixMyStreet"
@@ -1680,7 +1870,7 @@ msgstr "Nieuwe melding binnen de grenzen van {{NAME}} op reportemptyhomes.com"
msgid "New state"
msgstr "Nieuwe status"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1694,13 +1884,13 @@ msgstr "Nieuw!"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1713,7 +1903,7 @@ msgstr ""
msgid "No"
msgstr "Nee"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1721,23 +1911,25 @@ msgstr ""
msgid "No council"
msgstr "Geen gemeente"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Geen gemeente geselecteerd"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Geen bewerkingen gedaan."
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Geen gemarkeerde problemen gevonden"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Geen gemarkeerde gebruikers gevonden"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1751,25 +1943,42 @@ msgstr "Geen problemen gevonden."
msgid "No problems have been reported yet."
msgstr "Er zijn nog geen problemen gemeld."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "Geen medestanders"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr "Niet publiekelijk"
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Geen"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1789,11 +1998,11 @@ msgstr ""
msgid "Not reported before"
msgstr "Nog niet gemeld"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Niet gemeld bij de gemeente"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1803,7 +2012,7 @@ msgstr "Opmerking"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Let op dat als je onbevestigde meldingen meeneemt we de datum gebruiken waarop de melding is gemaakt, dit kan afwijken van de maand waarin de melding is bevestigd dus dan kunnen de cijfers afwijken."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1829,7 +2038,8 @@ msgstr "Nu om je update te verzend&hellip;"
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "Nu om je update te verzend&hellip; heb je een FixMyStreet wachtwoord?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1873,7 +2083,7 @@ msgstr "Ouder opgelost"
msgid "Older problems"
msgstr "Oudere problemen"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1884,8 +2094,8 @@ msgstr "Oudere problemen"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1917,15 +2127,15 @@ msgstr "Of problemen gemeld aan:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Of je kan je abonneren op een melding gebaseerd op welke gemeente je woont:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Anders"
@@ -1933,7 +2143,7 @@ msgstr "Anders"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Onze code is open source en <a href=\"http://github.com/mysociety/fixmystreet\">te vinden op GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Eigenaar"
@@ -1942,8 +2152,8 @@ msgstr "Eigenaar"
msgid "Page Not Found"
msgstr "Pagina Niet Gevonden"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1958,7 +2168,7 @@ msgstr "Gedeeltelijk"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Wachtwoord (optioneel)"
@@ -1966,25 +2176,29 @@ msgstr "Wachtwoord (optioneel)"
msgid "Password:"
msgstr "Wachtwoord:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Je telefoonnummer"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefoonnummer (optioneel)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefoonnummer:"
@@ -1996,6 +2210,7 @@ msgstr "Telefoonnummer:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2013,7 +2228,8 @@ msgstr "Foto:"
msgid "Photos of recent nearby reports"
msgstr "Foto's van recente meldingen dichtbij"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
@@ -2024,8 +2240,8 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Gepland"
@@ -2063,12 +2279,13 @@ msgstr "Controleer of je e-mailadres klopt"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Kies een categorie"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Kies een pand type"
@@ -2101,25 +2318,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Geef bericht in"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Geef wachtwoord"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Geef onderwerp"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2130,8 +2354,9 @@ msgstr "Geef een geldig e-mailadres"
msgid "Please enter a valid email address"
msgstr "Geef een geldig e-mailadres"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Geef details"
@@ -2144,6 +2369,8 @@ msgstr "Geef details"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2159,29 +2386,39 @@ msgstr "Geef een geldig e-mailadres"
msgid "Please enter your email address"
msgstr "Geef een geldig e-mailadres"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Geef je voornaam"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Geef je volledige naam, gemeentes hebben deze informatie nodig. Mocht je niet willen dat je naam op de site getoond wordt, haal dan de vink beneden weg."
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Geef je naam"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Geef je tweede naam"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Geef je tweede naam"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Geef je titel"
@@ -2300,11 +2537,11 @@ msgstr "Geef aan of het probleem is verholpen"
msgid "Please take a look at the updates that have been left."
msgstr "Kijk eens naar de updates die zijn achter gelaten."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Je kan alleen een JPEG foto insturen"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Upload alleen JPEG foto's\n"
@@ -2347,7 +2584,7 @@ msgstr "Geplaatst door %s bij %s"
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2373,12 +2610,12 @@ msgstr "Probleem %s bevestigd"
msgid "Problem %s sent to council %s"
msgstr "Probleem %s verzonden naar gemeente %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Probleem verdeeld per status"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Probleem gemarkeerd als open"
@@ -2386,7 +2623,7 @@ msgstr "Probleem gemarkeerd als open"
msgid "Problem state change based on survey results"
msgstr "Probleem status gewijzigd op basis van onderzoeksresultaten"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problemen"
@@ -2462,9 +2699,8 @@ msgid "Provide an update"
msgstr "Geef een update"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Het is optioneel om een wachtwoord op de geven, maar hiermee is het makkelijker om in de toekomst problemen te melden, updates te plaatsen en je meldingen te beheren."
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2478,8 +2714,8 @@ msgstr "Het is optioneel om een wachtwoord op de geven, maar hiermee is het makk
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Het is optioneel om een wachtwoord op de geven, maar hiermee is het makkelijker om in de toekomst problemen te melden, updates te plaatsen en je meldingen te beheren."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr "Publiek"
@@ -2487,17 +2723,17 @@ msgstr "Publiek"
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2645,6 +2881,7 @@ msgstr "Meld Leegstaand Pand"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2685,7 +2922,7 @@ msgstr "Gemeld %s"
msgid "Reported %s, to %s"
msgstr "Gemeld %s aan %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2697,42 +2934,42 @@ msgstr "Anoniem gemeld bij %s"
msgid "Reported before"
msgstr "Eerder gemeld"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Anoniem door %s gemeld bij %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Gemeld door %s bij %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Gemeld door %s door %s bij %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Anoniem gemeld bij %s in de categorie %s door %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Gemeld door %s in de categorie %s door %s bij %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Anoniem gemeld in de categorie %s bij %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Gemeld in de categorie %s door %s bij %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Anoniem door %s gemeld bij %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Gemeld door %s door %s bij %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Anoniem gemeld bij %s in de categorie %s door %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Gemeld door %s in de categorie %s door %s bij %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2741,21 +2978,23 @@ msgstr "Gemeld in de categorie %s door %s bij %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Meld een probleem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2774,7 +3013,8 @@ msgstr ""
msgid "Resend report"
msgstr "Herstuur melding"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2786,16 +3026,16 @@ msgstr "Wegbeheerder voor deze straat (afgeleid van wegnummer en type): %s"
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Wegbeheerder voor deze straat (uit OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2803,7 +3043,6 @@ msgstr ""
msgid "Save changes"
msgstr "Wijzigingen opslaan"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2818,18 +3057,27 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Zoek:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Zoek Meldingen"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2838,7 +3086,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Selecteer op welke melding je wilt hebben en klik op de knop om een RSS feed te maken, of vul je e-mailadres in om je abonneren op een e-mailmelding."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Verzonden aan %s %s later"
@@ -2929,6 +3177,13 @@ msgstr "Ingelogd als %s"
msgid "Some categories may require additional information."
msgstr "Sommige categorie&euml;n hebben extra informatie nodig."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -2966,20 +3221,13 @@ msgid "Source code"
msgstr ""
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
-msgstr ""
-
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr ""
+#, fuzzy
+msgid "Start Date:"
+msgstr "Laatste update:"
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -2988,14 +3236,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3011,7 +3259,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3029,7 +3277,7 @@ msgstr ""
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr ""
@@ -3045,15 +3293,15 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr ""
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr ""
@@ -3063,14 +3311,14 @@ msgstr ""
msgid "Submit questionnaire"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3094,8 +3342,8 @@ msgstr ""
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3114,7 +3362,7 @@ msgstr ""
msgid "Summary reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3122,8 +3370,9 @@ msgstr ""
msgid "Survey Results"
msgstr ""
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr ""
@@ -3176,7 +3425,7 @@ msgstr ""
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr ""
@@ -3193,7 +3442,7 @@ msgstr ""
msgid "That postcode was not recognised, sorry."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr ""
@@ -3205,10 +3454,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr ""
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr ""
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3227,6 +3510,11 @@ msgstr "De details van je probleem zijn beschikbaar in het andere tabblad."
msgid "The details of your problem are available on the right hand side of this page."
msgstr "De details van je probleem zijn beschikbaar aan de rechter kant van de pagina."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3285,6 +3573,10 @@ msgstr "Laatste meldingen voor {{COUNCIL}} binnen de wijk {{WARD}} gemeld door g
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Laatste meldingen binnen de grenzen van {{NAME}} gemeld door gebruikers"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3309,10 +3601,17 @@ msgstr "De simpelste melding is onze geografische:"
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr "Het onderwerp en de details van het probleem zijn publiek, als je toestemming geeft wordt je naam ook getoond."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "The gebruiker kon het probleem niet vinden op de kaart, maar het gebied rond de lokatie wordt op de kaart getoond"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Er was een probleem bij het tonen van de Alle Meldingen pagina. Probeer het later nog eens."
@@ -3347,19 +3646,48 @@ msgstr "Er was een probleem met je melding. Zie beneden."
msgid "There were problems with your update. Please see below."
msgstr "Er was een probleem met je update. Zie beneden."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Deze API implementatie is een werk in uitvoering en nog niet stabiel. Het kan zonder waarschuwing wijzigen in de toekomst."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Deze e-mail is naar meerdere contactpersonen gestuurd die mogelijk geïnteresseerd zijn in deze lokatie omdat de gebruiker geen categorie heeft aangegeven. Negeer deze melding als je niet de juiste contactpersoon bent, of laat ons weten in welke categorie dit probleem valt zodat we dit kunnen toevoegen aan ons systeem."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Deze e-mail is naar meerdere contactpersonen gestuurd die mogelijk geïnteresseerd zijn in deze lokatie. Negeer deze melding als je niet de juiste contactpersoon bent."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3374,9 +3702,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr ""
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Dit is een samenvatting van alle meldingen op deze site; selecteer een gemeente om te zien welke rapporten hierheen zijn gestuurd."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3414,8 +3741,8 @@ msgstr "Aan dit probleem wordt gewerkt"
msgid "This problem is old and of unknown status."
msgstr "Dit probleem is oud, en de status is onbekend."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3432,20 +3759,20 @@ msgstr "Deze melding is momenteel gemarkeerd als opgelost."
msgid "This report is currently marked as open."
msgstr "Deze melding is momenteel gemarkeerd als openstaand."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Deze pagina bevat een door de gebruiker aangeleverde foto van het probleem."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Tijdslijn"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Titel"
@@ -3458,11 +3785,11 @@ msgstr "Klik op de kaart op de juiste lokatie om <strong>een probleem te melden<
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Vul je postcode of straatnaam en plaats in om te kijken welke lokale meldingen we voor je hebben."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr ""
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3474,7 +3801,8 @@ msgstr ""
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3492,8 +3820,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr ""
@@ -3506,7 +3834,8 @@ msgstr ""
msgid "Unknown alert type"
msgstr ""
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -3533,12 +3862,12 @@ msgstr ""
msgid "Update below added by %s at %s"
msgstr ""
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr ""
@@ -3559,7 +3888,7 @@ msgstr ""
msgid "Update reopened problem"
msgstr ""
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr ""
@@ -3573,24 +3902,24 @@ msgstr ""
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr ""
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3607,23 +3936,36 @@ msgstr ""
msgid "Updates to this problem, FixMyStreet"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+msgid "User"
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr ""
@@ -3693,7 +4035,7 @@ msgstr ""
msgid "We never show your email address or phone number."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr ""
@@ -3720,7 +4062,7 @@ msgstr ""
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr ""
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3764,18 +4106,20 @@ msgstr "Je bericht is moeilijk leesbaar als deze alleen uit hoofdletters bestaat
msgid "Year"
msgstr "Jaar"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3808,6 +4152,17 @@ msgstr "Je meld het volgende update als beledigend, persoonlijke informatie beva
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3815,7 +4170,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Je kan ons helpen met het vinden van een e-mailadres voor lokale problemen voor %s door deze naar ons te mailen op <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -3890,6 +4250,17 @@ msgstr "Je bent ingelogd; controleer of je gegevens nog kloppen:"
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Weet je zeker dat je dit opnieuw wilt versturen?"
@@ -3925,7 +4296,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Jouw e-mailadres"
@@ -3963,7 +4334,7 @@ msgstr "Jouw achternaam"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Jouw naam"
@@ -3995,7 +4366,7 @@ msgstr "Je wachtwoord is gewijzigd"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Je telefoonnummer"
@@ -4011,6 +4382,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4035,13 +4407,13 @@ msgstr "door %s"
msgid "council"
msgstr "gemeente"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr "gemeente ref.: %s"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "kaart niet gebruikt"
@@ -4051,11 +4423,17 @@ msgstr "kaart niet gebruikt"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "bv. '%s' of '%s'"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Bewerk gebruiker %d"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "door %d verschillende gebruikers"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4070,18 +4448,16 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "gemarkeerd als opgelost"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "gemarkeerd als %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4089,30 +4465,26 @@ msgid "marked as fixed"
msgstr "gemarkeerd als opgelost"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Aan dit probleem wordt gewerkt"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "Onderzoeken"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "gemarkeerd als opgelost"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "gemarkeerd als opgelost"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4124,22 +4496,23 @@ msgstr "n/b"
msgid "or"
msgstr "of"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4178,7 +4551,7 @@ msgstr ""
msgid "there is no pin shown as the user did not use the map"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr ""
@@ -4187,8 +4560,8 @@ msgid "today"
msgstr ""
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr ""
@@ -4281,3 +4654,13 @@ msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Deze informatie is verplicht"
+
+#~ msgid "End Year:"
+#~ msgstr "Eindjaar:"
+
+#~ msgid "End month:"
+#~ msgstr "Eindmaand:"
diff --git a/locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
index bd7283be6..1a6443d78 100644
--- a/locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/nn_NO.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/fixmystreet/language/nn_NO/)\n"
"Language: nn_NO\n"
@@ -21,8 +21,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr " og "
@@ -43,28 +43,28 @@ msgstr " og <strong>vi sender det no til administrasjonen</strong>"
msgid " or "
msgstr " eller "
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d adresser"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d stadfesta varsel, %d ikkje stadfesta"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d administrasjonskontaktar &ndash; %d stadfesta, %d ikkje stadfesta"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d redigeringar av %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d aktive oppdateringar"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d spørjeskjema sendt &ndash; %d svart (%s%%)"
@@ -77,7 +77,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr "%s – oppsummeringsrapportar"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -85,7 +85,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "%s bydel, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -106,7 +106,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Epost i misbruktabellen)"
@@ -120,6 +120,7 @@ msgstr "(ein standardavstand som dekkjer ein folkesetnad på omtrent 200 000)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(alternativt kan RSS-straumen tilpassast, innanfor"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -127,6 +128,7 @@ msgstr "(alternativt kan RSS-straumen tilpassast, innanfor"
msgid "(closed)"
msgstr "(lukka)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -139,6 +141,7 @@ msgstr "(løyst)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(som tagging, søppel, hol i vegen, eller øydelagte gatelys)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -150,6 +153,7 @@ msgstr "(ikkje rapportert til administrasjonen)"
msgid "(optional)"
msgstr "(valfritt)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -165,12 +169,12 @@ msgstr "(vi viser aldri e-postadressa di)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Vel ein kategori --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Vel ein eigedomstype --"
@@ -178,6 +182,14 @@ msgstr "-- Vel ein eigedomstype --"
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\">Tusen takk for at du fylte ut spørjeskjemaet vårt. Vi er glade for å høyra at problemet ditt er løyst.</p>"
@@ -250,7 +262,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Viss du ikkje kan sjå kartet, <a href='%s' rel='nofollow'>hopp over dette steget</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> aktive problem"
@@ -264,7 +276,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr ""
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr ""
@@ -311,19 +323,31 @@ msgstr "Om oss"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Legg til ny kategori"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -361,6 +385,7 @@ msgstr ""
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -412,7 +437,7 @@ msgstr "All informasjonen du har lagt inn her vil sendast til <strong>%s</strong
msgid "An update marked this problem as fixed."
msgstr "Ei oppdatering markerte dette problemet som løyst."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonym"
@@ -436,26 +461,26 @@ msgstr ""
msgid "Are you from a council?"
msgstr ""
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -468,12 +493,13 @@ msgstr "På det meste vert %d førespurnader returnert i kvar spørring. Dei ret
msgid "At the moment only searching for and looking at reports work."
msgstr "For augneblunken går det berre an å søkja etter og å sjå på rapportar."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr ""
@@ -485,20 +511,20 @@ msgstr "Bannlys e-postadresse"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -517,9 +543,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -533,22 +559,22 @@ msgstr ""
msgid "Category"
msgstr "Kategori"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Løysingsrate fordelt på kategori for problem > 4 veker gamle"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Kategori:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Kategori: %s"
@@ -558,12 +584,51 @@ msgstr "Kategori: %s"
msgid "Change Password"
msgstr "Byt passord"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Korleis rapportera eit problem"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -573,14 +638,14 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Lukka"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "(ikkje rapportert til administrasjonen)"
@@ -598,12 +663,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Dei næraste problema <small>(innanfor&nbsp;%skm)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Koordinatar:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Merkevaresamarbeid"
@@ -617,7 +682,12 @@ msgstr "Data om merkevaresamarbeid:"
msgid "Cobrand:"
msgstr "Merkevaresamarbeid:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Stadfesting"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Oppsett oppdatert - kontaktar vil genererast automatisk seinare"
@@ -625,7 +695,7 @@ msgstr "Oppsett oppdatert - kontaktar vil genererast automatisk seinare"
msgid "Configure Endpoint"
msgstr ""
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Stadfest"
@@ -652,8 +722,8 @@ msgstr ""
msgid "Confirmation"
msgstr "Stadfesting"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -664,6 +734,7 @@ msgstr "Stadfesta"
msgid "Confirmed reports between %s and %s"
msgstr ""
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -694,16 +765,17 @@ msgstr "Kontakt oss"
msgid "Contact the team"
msgstr "Kontakt prosjektgruppa"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Kunne ikkje finna brukaren"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr ""
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Administrasjon"
@@ -728,21 +800,22 @@ msgstr "Mengd"
msgid "Create a report"
msgstr "Lag ein rapport"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Lag kategori"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Oppretta"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Oppretta:"
@@ -751,6 +824,12 @@ msgstr "Oppretta:"
msgid "Current state"
msgstr "Gjeldande tilstand"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Ingen problem er rapporterte"
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -760,8 +839,9 @@ msgstr ""
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -774,8 +854,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -784,17 +865,17 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Detaljar:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr ""
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Arbeidshestar"
@@ -825,14 +906,22 @@ msgstr "Veit ikkje"
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Rediger"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -859,27 +948,31 @@ msgid "Editor"
msgstr "Oppdatert av"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "E-post"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "E-post lagd til misbrukliste"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "e-postadressa di:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "E-post allereie i misbruklista"
@@ -891,20 +984,19 @@ msgstr "Send meg e-post om lokale problem"
msgid "Email me updates"
msgstr "Send meg oppdateringar"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "E-post:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -932,23 +1024,33 @@ msgstr "Tom pub eller bar"
msgid "Empty public building - school, hospital, etc."
msgstr "Tom offentleg bygning – skule, sjukehus, osb."
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Sluttår:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Sluttdag:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Sluttmånad:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Sluttdag:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -980,7 +1082,7 @@ msgstr "Skriv inn eit nytt passord:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Enter a password"
@@ -1036,6 +1138,10 @@ msgstr ""
msgid "First time"
msgstr "Første gong"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1071,7 +1177,7 @@ msgstr "FiksGataMi sender ulike kategoriar problem til ulike administrasjonar, p
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1103,17 +1209,34 @@ msgstr "Løyste rapportar"
msgid "Fixed:"
msgstr "Løyst:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Flagg brukar"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Flagga:"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Flagga:"
@@ -1126,6 +1249,10 @@ msgstr "Følg ei bydellenkje for å berre sjå rapportar innanfor den bydelen."
msgid "For council(s):"
msgstr "For administrasjon(ane):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1182,7 +1309,7 @@ msgstr "Hald fram"
msgid "Going to send questionnaire?"
msgstr "Skal spørjeskjemaet sendast?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Graf over problemoppretting fordelt på status over tid"
@@ -1205,6 +1332,7 @@ msgstr "Har du rapportert eit problem til ein administrasjon før, eller er dett
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1239,8 +1367,8 @@ msgstr ""
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1258,7 +1386,8 @@ msgstr "Skjul nåler"
msgid "History"
msgstr "Historie"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr ""
@@ -1266,11 +1395,12 @@ msgstr ""
msgid "How to report a problem"
msgstr "Korleis rapportera eit problem"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Eg er redd du ikkje kan stadfesta ustadfesta rapportar."
@@ -1286,16 +1416,30 @@ msgstr "Eg er redd vi ikkje kunne verifisera den referansen, då det er for leng
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Eg er redd vi ikkje kunne verifisera den referansen. Viss du kopierte nettadressa frå ein e-post, sjekk at du har kopiert ho korrekt.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1333,6 +1477,33 @@ msgstr ""
"(denne vert ikkje send til administrasjonen). Du kan til dømes\n"
"dela røynsla di med korleis problemet ditt vart løyst."
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Ugyldig ID"
@@ -1352,17 +1523,22 @@ msgstr "Ugyldig val av straum"
msgid "In Progress"
msgstr "Under arbeid"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Epost i misbruktabellen)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "I tillegg er følgjande attributt som ikkje er del av Open311 v2-spesifikasjonen returnert: agency_sent_datetime, title (òg returnert som del av description), interface_used, comment_count, requestor_name (berre tilstades viss innsendar tillét at namnet kunne visast på denne nettstaden)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr ""
@@ -1371,7 +1547,7 @@ msgstr ""
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1383,9 +1559,8 @@ msgstr "Inkluder ikkje-stadfesta problem"
msgid "Incorrect has_photo value \"%s\""
msgstr "Feil has_photo-verdi «%s»"
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1397,7 +1572,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Ugyldig agency_responsible-verdi %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Ugyldig slutt-dato"
@@ -1405,7 +1580,7 @@ msgstr "Ugyldig slutt-dato"
msgid "Invalid format %s specified."
msgstr "Ugyldig format %s oppgjeve."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Ugyldig startdato"
@@ -1436,7 +1611,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Hugs mi innlogging på denne datamaskina"
@@ -1446,7 +1621,7 @@ msgstr "Hugs mi innlogging på denne datamaskina"
msgid "Last Name"
msgstr ""
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Sist redigert av"
@@ -1459,6 +1634,10 @@ msgstr "Siste oppdatering:"
msgid "Last&nbsp;update:"
msgstr "Siste&nbsp;oppdatering:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1501,6 +1680,7 @@ msgstr "Lokal RSS-straum og e-postvarsel for «%s»"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1513,7 +1693,8 @@ msgstr "Lokale varsel"
msgid "Locate the problem on a map of the area"
msgstr "Lokaliser problemet på kartet over området"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1521,6 +1702,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Kart © <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> og bidragsytarar, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr ""
@@ -1545,13 +1730,13 @@ msgstr "Månad"
msgid "More problems nearby"
msgstr "Fleire problem i nærleiken"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1562,7 +1747,7 @@ msgstr "Fleire problem i nærleiken"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Namn"
@@ -1573,14 +1758,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Namn:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1618,14 +1803,19 @@ msgstr "Nesten ferdig! No må du sjekka e-posten din …"
msgid "New <br>problems"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Ny kategorikontakt lagt til"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Nye lokale problem på FiksGataMi"
@@ -1688,7 +1878,7 @@ msgstr "Nye rapportar innanfor grensa til {{NAME}} på reportemptyhomes.com"
msgid "New state"
msgstr "Ny tilstand"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1702,13 +1892,13 @@ msgstr "Ny!"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1721,7 +1911,7 @@ msgstr ""
msgid "No"
msgstr "Nei"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1729,23 +1919,25 @@ msgstr ""
msgid "No council"
msgstr "Ingen administrasjon"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Ingen administrasjon er vald"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Ingen endringar er gjort."
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Fann ingen flagga problem"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Fann ingen flagga brukarar"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1759,25 +1951,42 @@ msgstr "Fann ingen problem."
msgid "No problems have been reported yet."
msgstr "Ingen problem er rapporterte"
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr ""
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr ""
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr ""
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Ingen"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1797,11 +2006,11 @@ msgstr ""
msgid "Not reported before"
msgstr "Ikkje rapportert tidlegare"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Ikkje rapportert til administrasjonen"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1811,7 +2020,7 @@ msgstr "Merk"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Merk at når vi tek med ustadfesta rapportar, så brukar vi datoen rapporten var oppretta. Det treng vera den same månaden som rapporten var stadfesta, så tala kan hoppa litt opp og ned."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1837,7 +2046,8 @@ msgstr ""
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "På tide å registrera oppdateringa di, har du eit FiksGataMi-passord?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1881,7 +2091,7 @@ msgstr "Eldre løyste"
msgid "Older problems"
msgstr "Eldre problem"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1892,8 +2102,8 @@ msgstr "Eldre problem"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1925,15 +2135,15 @@ msgstr "Eller problem meldt til:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Eller du kan abonnera på varsel basert på bydel eller administrasjon du høyrer til under:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Anna"
@@ -1941,7 +2151,7 @@ msgstr "Anna"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Kjeldekoda vår er fri programvare og <a href=\"http://github.com/mysociety/fixmystreet\">tilgjengeleg på GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Eigar"
@@ -1950,8 +2160,8 @@ msgstr "Eigar"
msgid "Page Not Found"
msgstr "Fann ikkje sida"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1966,7 +2176,7 @@ msgstr "Delvis"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr ""
@@ -1974,25 +2184,28 @@ msgstr ""
msgid "Password:"
msgstr "Passord:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+msgid "Phone number"
+msgstr ""
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefon:"
@@ -2004,6 +2217,7 @@ msgstr "Telefon:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2021,7 +2235,8 @@ msgstr "Bilete:"
msgid "Photos of recent nearby reports"
msgstr "Bilete av nye problem i nærleiken"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr ""
@@ -2032,8 +2247,8 @@ msgstr ""
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planlagt"
@@ -2071,12 +2286,13 @@ msgstr "Ver venleg og sjekk at du har skrive ei gyldig e-postadresse"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Vel ein kategori"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Vel ein type eigenskap"
@@ -2109,25 +2325,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Ver venleg og skriv ei melding"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Skriv inn eit passord"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Ver venleg og legg inn eit emne"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2138,8 +2361,9 @@ msgstr "Ver venleg og legg til ein gyldig e-post"
msgid "Please enter a valid email address"
msgstr "Ver venleg og legg inn e-postadressa di"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Ver venleg og legg inn opplysningar om problemet"
@@ -2152,6 +2376,8 @@ msgstr "Ver venleg og legg inn opplysningar om problemet"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2167,29 +2393,39 @@ msgstr "Ver venleg og legg inn e-posten din"
msgid "Please enter your email address"
msgstr ""
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr ""
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Ver venleg og legg inn namnet ditt"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Ver venleg og legg inn namnet ditt"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr ""
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr ""
@@ -2318,11 +2554,11 @@ msgstr "Ver venleg og oppgje om dette problemet har vorte fiksa eller ikkje"
msgid "Please take a look at the updates that have been left."
msgstr "Ver venleg og sjå over oppdateringane som er lagt inn."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Ver venleg og berre last opp JPEG-bilete"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr ""
@@ -2365,7 +2601,7 @@ msgstr "Sendt inn av %s %s"
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2391,12 +2627,12 @@ msgstr "Problem %s stadfesta"
msgid "Problem %s sent to council %s"
msgstr "Problem %s sendt til administrasjon %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Tilstandsfordeling av problem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problem markert som ope."
@@ -2404,7 +2640,7 @@ msgstr "Problem markert som ope."
msgid "Problem state change based on survey results"
msgstr "Endring av problemtilstand basert på spørjeundersøkingsresultat"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problem"
@@ -2480,9 +2716,8 @@ msgid "Provide an update"
msgstr "Bidra med ei oppdatering"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Det er valfritt å oppgje eit passord, men om du gjer det vil det verta enklare for deg å rapportera problem, leggja inn oppdateringar og halda oversyn over rapportane dine"
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2496,8 +2731,8 @@ msgstr ""
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Det er valfritt å oppgje eit passord, men om du gjer det vil det verta enklare for deg å rapportera problem, leggja inn oppdateringar og halda oversyn over rapportane dine"
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr ""
@@ -2505,17 +2740,17 @@ msgstr ""
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2663,6 +2898,7 @@ msgstr "Rapporter tomme heimar"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2703,7 +2939,7 @@ msgstr "Rapportert %s"
msgid "Reported %s, to %s"
msgstr "Rapportert %s, til %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2715,42 +2951,42 @@ msgstr "Rapportert anonymt %s"
msgid "Reported before"
msgstr "Rapportert tidlegare"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Publisert av %s anonymt %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Publisert av %s %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Rapportert av %s av %s %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Rapportert av %s i kategorien %s anonymt %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Rapportert av %s i kategorien %s av %s %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Rapportert i kategorien %s anonymt %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Rapportert i kategorien %s av %s %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Publisert av %s anonymt %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Rapportert av %s av %s %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Rapportert av %s i kategorien %s anonymt %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Rapportert av %s i kategorien %s av %s %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2759,21 +2995,23 @@ msgstr "Rapportert i kategorien %s av %s %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Legger til eit problem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2792,7 +3030,8 @@ msgstr ""
msgid "Resend report"
msgstr "Send rapport på nytt"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2804,16 +3043,16 @@ msgstr "Vegoperatør for denne namngjevne vegen (utleia frå vegreferansenummer
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Vegoperatør for denne namngjevne vegen (frå OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2821,7 +3060,6 @@ msgstr ""
msgid "Save changes"
msgstr "Lagra endringar"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2836,18 +3074,27 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Søk:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Søk i rapportar"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2856,7 +3103,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Vel kva for ein type varsel du ynskjer og klikk på knappen for ei RSS-kjelde, eller skriv inn e-postadressa di for å abonnera på eit e-postvarsel."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Sendt til %s %s seinare"
@@ -2947,6 +3194,13 @@ msgstr "Logga inn som %s"
msgid "Some categories may require additional information."
msgstr "Somme kategoriar krev kanskje meir informasjon"
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -2984,20 +3238,13 @@ msgid "Source code"
msgstr "Kjeldekode"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Startår:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Startdag:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Startmånad:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3006,14 +3253,14 @@ msgstr "Tilstand"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Tilstand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3029,7 +3276,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3047,7 +3294,7 @@ msgstr ""
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Emne:"
@@ -3063,15 +3310,15 @@ msgstr "Emne:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Send inn"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Send inn endringar"
@@ -3081,14 +3328,14 @@ msgstr "Send inn endringar"
msgid "Submit questionnaire"
msgstr "Send inn spørjeskjema"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3112,8 +3359,8 @@ msgstr "Eg ynskjer å abonnera på e-postvarsel"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3132,7 +3379,7 @@ msgstr "Oppsummering"
msgid "Summary reports"
msgstr "Oppsummeringsrapportar"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3140,8 +3387,9 @@ msgstr ""
msgid "Survey Results"
msgstr "Resultat frå spørjeundersøkinga"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Tekst"
@@ -3199,7 +3447,7 @@ msgstr "Takk for innspillet ditt. Vi gjev deg ei tilbakemelding så snart vi kan
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Takk, glad for å høyra at problemet er løyst! Vi vil gjerne spørja deg om du har rapportert eit problem til ein administrasjon tidlegare?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Biletet ser ikkje ut til å ha vorte lasta opp riktig (%s), prøv på nytt."
@@ -3216,7 +3464,7 @@ msgstr ""
msgid "That postcode was not recognised, sorry."
msgstr "Det postnummeret vart ikkje gjenkjent, orsak."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "Det problemet vil no sendast på nytt."
@@ -3228,10 +3476,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr "Den rapporten har vorte fjerna frå FiksGataMi."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "Open311 v2-attributten agency_responsible vert brukt for å lista opp administrasjonane som mottok problemrapporten, noko som ikkje heilt passar med korleis attributten er definert i Open311 v2-spesifikasjonen."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3250,6 +3532,11 @@ msgstr ""
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Detaljane om problemet ditt er tilgjengelege på høgre kant av denne sida."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3308,6 +3595,10 @@ msgstr "Dei siste rapportane for {{COUNCIL}} innanfor {{WARD}} bydel rapportert
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Dei siste rapportane innanfor grensa til {{NAME}} rapportert av brukarar"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3334,10 +3625,17 @@ msgstr ""
"Tittelen og detaljane for problemet vil verta offentlege, pluss namnet ditt\n"
"viss du gjev oss lov til det."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "Brukaren kunne ikkje plassera problemet på eit kart, men sjekk områdde rundt staden dei skreiv inn"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Det oppstod problem med å visa «Alle rapportar»-sida. Ver venleg og prøv igjen seinare."
@@ -3372,19 +3670,48 @@ msgstr "Det var problem med rapporten din. Ver venleg og sjå under."
msgid "There were problems with your update. Please see below."
msgstr "Det var problem med oppdateringa di. Ver venleg og sjå under."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Denne API-implementasjonen er under arbeid og ikkje enno stabil. Han vil endra seg utan åtvaring i framtida."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Denne e-posten er sendt til begge administrasjonane som dekkjer staden for problemet, sidan brukaren ikkje kategoriserte det. Ver venleg og ignorer e-posten viss de ikkje er korrekt administrasjon for å handtera denne saka, eller gjev oss melding om kva for ein kategori av problem dette er så vi kan leggja det til i systemet vårt."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Denne e-posten er sendt til fleire administrasjonar som dekkjer staden for problemet, sidan den valde kategorien er tilgjengeleg for desse. Ver venleg og ignorer e-posten viss de ikkje er korrekt administrasjon for å handtera denne saka."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3399,9 +3726,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr ""
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Dette er ei opplisting av alle problema i denne tenesta; vel ein viss administrasjon for å sjå problem som er sende dit."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3439,8 +3765,8 @@ msgstr "Dette problemet er under arbeid"
msgid "This problem is old and of unknown status."
msgstr "Dette problemet er gammalt og med ukjend status."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3457,20 +3783,20 @@ msgstr "Denne rapporten er for tida markert som fiksa."
msgid "This report is currently marked as open."
msgstr "Denne rapporten er for tida markert som open."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Denne nettsida inneheld òg eit bilete av problemet, sendt inn av brukaren."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Tidslinje"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Tittel"
@@ -3483,11 +3809,11 @@ msgstr ""
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "For å sjå eit kart med ei meir presis plassering for dette problemet"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3499,7 +3825,8 @@ msgstr "Totalt"
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3517,8 +3844,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Ikkje stadfesta"
@@ -3531,7 +3858,8 @@ msgstr ""
msgid "Unknown alert type"
msgstr "Ukjend varsel-type"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr ""
@@ -3558,12 +3886,12 @@ msgstr "Oppdateringa under vart lagt inn anonymt %s"
msgid "Update below added by %s at %s"
msgstr "Oppdateringa under vart lagt til av %s %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Tilstandsfordeling for oppdateringar"
@@ -3584,7 +3912,7 @@ msgstr "Ei oppdatering markerte dette problemet som fiksa."
msgid "Update reopened problem"
msgstr "Ei oppdatering gjenopna problemet"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Oppdater tilstanden"
@@ -3598,24 +3926,24 @@ msgstr "Oppdatering:"
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Oppdatert!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Oppdateringar"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3632,23 +3960,37 @@ msgstr "Oppdateringar av {{title}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Oppdateringar til dette problemet, FiksGataMi"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Brukarar"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Brukarflagg fjerna"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Brukar flagga"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Brukarar"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Verdi oppdatert"
@@ -3718,7 +4060,7 @@ msgstr ""
msgid "We never show your email address or phone number."
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Vi innser at %s kan vera ansvarleg for dette problemet, men vi manglar for tida kontaktinformasjon for dei. Viss du veit om ei eigna kontaktadresse, ta kontakt med oss."
@@ -3745,7 +4087,7 @@ msgstr "Vi vil gjerne høyra kva du tenkjer om denne nettstaden. Det er berre
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Vi ynskjer å få tilbakemelding frå deg om kva du meiner om denne tenesta. Berre fyll ut skjemaet, eller send ein e-post <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3789,18 +4131,20 @@ msgstr "Når du skriv meldinga di med berre store bokstavar vert ho vanskeleg å
msgid "Year"
msgstr "År"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3833,6 +4177,17 @@ msgstr "Du rapporterer at følgjande oppdatering er støytande, inneheld personl
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3840,7 +4195,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Du kan hjelpa oss ved å finna ein kontakt-e-post for lokale problem i %s, og senda han via e-post til oss på <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr ""
@@ -3915,6 +4275,17 @@ msgstr "Du har no logga inn. Ver venleg og sjekk og stadfest at detaljane dine e
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Ynskjer du verkeleg å senda på nytt?"
@@ -3950,7 +4321,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr ""
@@ -3988,7 +4359,7 @@ msgstr ""
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr ""
@@ -4020,7 +4391,7 @@ msgstr "Passordet ditt har vorte endra"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr ""
@@ -4036,6 +4407,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4060,13 +4432,13 @@ msgstr "av %s"
msgid "council"
msgstr "administrasjon"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr ""
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "brukte ikkje kart"
@@ -4076,11 +4448,17 @@ msgstr "brukte ikkje kart"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr ""
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Redigerer brukar %d"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "frå %d ulike brukarar"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4095,18 +4473,16 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "markert som løyst"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "markert som %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4114,30 +4490,26 @@ msgid "marked as fixed"
msgstr "markert som løyst"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Dette problemet er under arbeid"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "Undersøkjer"
+msgstr ""
#: templates/web/default/report/updates.html:55
msgid "marked as not the council's responsibility"
msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "markert som løyst"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "markert som løyst"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4149,22 +4521,23 @@ msgstr "i/t"
msgid "or"
msgstr "eller"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr ""
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4203,7 +4576,7 @@ msgstr "den lokale administrasjonen"
msgid "there is no pin shown as the user did not use the map"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "denne typen lokalt problem"
@@ -4212,8 +4585,8 @@ msgid "today"
msgstr "i dag"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "brukte kart"
@@ -4306,3 +4679,19 @@ msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Denne informasjonen er påkravd"
+
+#~ msgid "End Year:"
+#~ msgstr "Sluttår:"
+
+#~ msgid "End month:"
+#~ msgstr "Sluttmånad:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Startår:"
+
+#~ msgid "Start month:"
+#~ msgstr "Startmånad:"
diff --git a/locale/pt_CV.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/pt_CV.UTF-8/LC_MESSAGES/FixMyStreet.po
index e7ea118aa..6b1f6ad2d 100644
--- a/locale/pt_CV.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/pt_CV.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -5,12 +5,14 @@
#
# Translators:
# fixmindelo <francisco.martins@recortes.cv>, 2013
+# fixmindelo <francisco.martins@recortes.cv>, 2013
+# mysociety <transifex@mysociety.org>, 2013
msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-09-03 10:26+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-23 14:48+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Portuguese (http://www.transifex.com/projects/p/fixmystreet/language/pt/)\n"
"Language: pt_CV\n"
@@ -19,8 +21,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr "e"
@@ -41,28 +43,28 @@ msgstr " e <strong>agora vamos enviá-lo ao Conselho</strong>"
msgid " or "
msgstr "ou"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d endereços"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d alertas confirmados,%d não confirmados"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d contatos do Conselho; %d confirmada,%d não confirmados"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
-msgstr "%d edições por%s"
+msgstr "%d edições por %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d atualizações directas"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d questionários enviados - %d respondeu (%s%%)"
@@ -75,7 +77,7 @@ msgstr "%d de %d de %d"
msgid "%s - Summary reports"
msgstr "%s - relat￳rios resumidos"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -83,7 +85,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "%s ala, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr "%s, reportou em %s"
@@ -108,7 +110,7 @@ msgstr ""
"\"E-mail.) "
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(E-mail na tabela de abuso)"
@@ -122,6 +124,7 @@ msgstr "(A distância padrão, que abrange cerca de 50 mil pessoas)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(Alternativamente o feed RSS pode ser personalizado, dentro de"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -129,6 +132,7 @@ msgstr "(Alternativamente o feed RSS pode ser personalizado, dentro de"
msgid "(closed)"
msgstr "(fechado)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -139,8 +143,9 @@ msgstr "(Fixo)"
#: templates/web/default/index.html:12 templates/web/default/index.html:8
#: templates/web/fixmystreet/around/intro.html:2
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
-msgstr "(Como ruas esburacadas, grafits, arvores derrubada, lajes partidas, entulhos, lixo, pardeiros, vandalismo, postes quebrados,ou iluminação pública)"
+msgstr "(Como ruas e pavimentos esburacados, grafits, arvores caidas, lajes partidas, entulhos, lixo, pardeiros, vandalismo, postes quebrados, vazamentos de agua e esgotos, ou iluminação pública)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -152,6 +157,7 @@ msgstr "(Não reportar ao conselho)"
msgid "(optional)"
msgstr "(opcional)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -167,12 +173,12 @@ msgstr "(seu email não será divulgado)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Escolha uma categoria --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Escolha um tipo de categoria --"
@@ -180,6 +186,14 @@ msgstr "-- Escolha um tipo de categoria --"
msgid "<big>%s</big> reports"
msgstr "<big>%s</big> Relatórios"
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr ""
@@ -294,7 +308,7 @@ msgstr ""
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small> Se você não pode localizar no mapa, <a href='%s' rel='nofollow'> saltar esta etapa </a>. </small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> problemas ao vivo"
@@ -308,7 +322,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong> Não </strong> Deixe-me confirmar a minha atualização por e-mail"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong> Não </strong>, deixe-me entrar por e-mail"
@@ -355,19 +369,31 @@ msgstr "Acerca de nós"
msgid "Action Scheduled"
msgstr "Ação Programada"
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr "Adicionar"
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Adicionar nova categoria"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr "Adicionar user"
@@ -405,6 +431,7 @@ msgstr "Todos os Relatórios"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -456,7 +483,7 @@ msgstr "Todas as informações que você fornecer aqui serão enviados para <str
msgid "An update marked this problem as fixed."
msgstr "Uma atualização marcada, problema esta resolvido"
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonimo"
@@ -480,26 +507,26 @@ msgstr "Você é um desenvolvedor?"
msgid "Are you from a council?"
msgstr "Você pertence á ao Conselho?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr "Área coberta"
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr "Atribuir a categoria diferente:"
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr "Atribuir ao órgão externo:"
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr "Atribuir a subdivisão:"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr "Designado para %s"
@@ -512,12 +539,13 @@ msgstr "No máximo %d pedidos são retornados em cada consulta. Os pedidos retor
msgid "At the moment only searching for and looking at reports work."
msgstr "Neste momento, apenas procurando e olhando para os relatórios de trabalho."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr "Aguardando moderação"
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr "Voltar"
@@ -529,20 +557,20 @@ msgstr "Ban endereço de e-mail"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Tenha certeza de escolher a categoria correta, porque temos de nusar isso para determinar a quem o relatório é enviado."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr "Corpos"
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr "Corpo"
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr "Corpo:"
@@ -561,9 +589,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Não pode ver a localizaçao no mapa <a href='%s' rel='nofollow'> Salte esta etapa </a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -577,22 +605,22 @@ msgstr "Não pode ver a localizaçao no mapa <a href='%s' rel='nofollow'> Salte
msgid "Category"
msgstr "Categoria"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Categoria para cada correção taxa para problemas> 4 semanas, um mes"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Categoria:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Categoria: %s"
@@ -602,12 +630,51 @@ msgstr "Categoria: %s"
msgid "Change Password"
msgstr "Mudar password"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Click no mapa para reportar um porblema "
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Click no mapa para reportar um porblema "
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -617,14 +684,14 @@ msgstr "Click no mapa para reportar um porblema "
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Fechado"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Fechado pelo Conselho"
@@ -642,12 +709,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Problemas mais proximos <small> (within&nbsp;%skm) </small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Co-ordenadas:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Cobrand"
@@ -661,7 +728,12 @@ msgstr "Cobrand data:"
msgid "Cobrand:"
msgstr "Cobrand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Confirmação"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Configuração atualizada - contactos gerados automaticamente"
@@ -669,7 +741,7 @@ msgstr "Configuração atualizada - contactos gerados automaticamente"
msgid "Configure Endpoint"
msgstr "Configurar Endpoint"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Confirmar"
@@ -696,8 +768,8 @@ msgstr "Confirme por e-mail abaixo, proporcionando uma nova senha nesse ponto. Q
msgid "Confirmation"
msgstr "Confirmação"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -708,6 +780,7 @@ msgstr "Confirmado"
msgid "Confirmed reports between %s and %s"
msgstr "Relatos confirmados entre %s e %s"
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -738,16 +811,17 @@ msgstr "Fale connosco"
msgid "Contact the team"
msgstr "Fale com a equipe"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Não foi possível encontrar usuário"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr "Não olhar para cima da localização"
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Conselho"
@@ -772,21 +846,22 @@ msgstr "Conta"
msgid "Create a report"
msgstr "Criar um report"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Criar uma categoria"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Criado"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Criado:"
@@ -795,6 +870,12 @@ msgstr "Criado:"
msgid "Current state"
msgstr "Estado actual"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Nenhuns problemas foram ianda reportados"
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -804,8 +885,9 @@ msgstr "Painel de instrumentos"
msgid "Dealt with by subdivision within 5 working days"
msgstr "Tratadas pelas subdivisões dentro de 5 dias úteis"
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -818,8 +900,9 @@ msgid "Description"
msgstr "Descripçaoi"
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -828,17 +911,17 @@ msgstr "DEtalhes"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Detalhes:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr "Delegada"
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Diligency prêmio tabela classificativa"
@@ -869,14 +952,22 @@ msgstr "Não sei"
msgid "Duplicate"
msgstr "Duplicar"
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Editar"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr "Editar os detalhes do corpo"
@@ -903,27 +994,31 @@ msgid "Editor"
msgstr "Editar"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "Email"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Email adicionado a lista de abusos"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "O seu endereço de email:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "E-mail já está na lista abusos"
@@ -935,20 +1030,19 @@ msgstr "Enviar novos problemas locais"
msgid "Email me updates"
msgstr "Envie-me atualizações"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "Email:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr "Email: %s"
@@ -976,23 +1070,33 @@ msgstr "Pub ou bar vazio"
msgid "Empty public building - school, hospital, etc."
msgstr "Edifício público vazio - escola, hospital, etc"
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Fim do ano:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Fim do dia:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Fim do mês:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Fim do dia:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr "Endpoint"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr "Digite um nome de uma rua de Mindelo"
@@ -1024,7 +1128,7 @@ msgstr "Digite uma nova senha:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Digite uma nova password"
@@ -1080,6 +1184,10 @@ msgstr "Primeiro Nome"
msgid "First time"
msgstr "Primeiro Nome"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1099,8 +1207,8 @@ msgid ""
"alerts for all problems within a particular ward or council, or all problems\n"
"within a certain distance of a particular location."
msgstr ""
-"FixMyStreetMindelo tem uma variedade de feeds RSS e alertas para problemas locais, incluindo ⏎\n"
-"alertas para todos os problemas dentro de uma determinada zona especial ou conselho, ou todos os problemas ⏎\n"
+"FixMyStreetMindelo tem uma variedade de feeds RSS e alertas para problemas locais, incluindo \n"
+"alertas para todos os problemas dentro de uma determinada zona especial ou conselho, ou todos os problemas \n"
"dentro de uma certa distância de um local em particular."
#: templates/web/default/alert/_list.html:71
@@ -1122,7 +1230,7 @@ msgstr ""
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1154,17 +1262,34 @@ msgstr "Reports Corrigidos"
msgid "Fixed:"
msgstr "Corrigido:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Bandeira - Usuario"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Marcado"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Marcado:"
@@ -1177,6 +1302,10 @@ msgstr "Siga um link ala para ver apenas os relatórios dentro do ala."
msgid "For council(s):"
msgstr "Por conselho (s):"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1233,7 +1362,7 @@ msgstr " Ir"
msgid "Going to send questionnaire?"
msgstr "Vai enviar questionário?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Status da tabela grafica ao longo do tempo"
@@ -1256,6 +1385,7 @@ msgstr "Alguma vez voce ja relatou algum problema ao Conselho, ou é a sua prime
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1290,8 +1420,8 @@ msgstr "Oi %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1309,7 +1439,8 @@ msgstr "Ocultar pins"
msgid "History"
msgstr "History pins"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr "Home"
@@ -1317,11 +1448,12 @@ msgstr "Home"
msgid "How to report a problem"
msgstr "Como reportar um problema"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr "Como enviar relatorios com sucesso"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Tenho receio de nao puder confirmar os seus relatorios"
@@ -1337,16 +1469,30 @@ msgstr "Receio que não pôde validar esse token, como o relatório foi feito h
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Receio que não poderia confirmar se token. Se você copiou o URL de um e-mail, verifique se você copiou exatamente.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr "Se não o fizer, o seu alerta não será ativado"
@@ -1393,6 +1539,33 @@ msgstr ""
"(Note que não será enviado para o conselho). Por exemplo, o que era \\ n\"\n"
"A sua experiência de ter o problema resolvido"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "ID ilegal"
@@ -1412,17 +1585,22 @@ msgstr "Seleção de feed ilegal"
msgid "In Progress"
msgstr "Em andamento"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(E-mail na tabela de abuso)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "Além disso, os seguintes atributos que não fazem parte da especificação v2 Open311 são retornados: agency_sent_datetime, título (também retornou como parte da descrição), interface_used, comment_count, requestor_name (presente apenas se solicitante permitido o nome a ser mostrado neste site) ."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "Em andamento"
@@ -1431,7 +1609,7 @@ msgstr "Em andamento"
msgid "Incident Category"
msgstr "Categoria incidente"
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr "Incluir reports detalhes perssoais"
@@ -1443,9 +1621,9 @@ msgstr "Incluir dados nao confirmados"
msgid "Incorrect has_photo value \"%s\""
msgstr "Foto_has valor incorreto \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+#, fuzzy
+msgid "Internal notes"
msgstr "Notas internas"
#: templates/web/default/admin/report_edit.html:35
@@ -1457,7 +1635,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Agencia_responsavel valor %s inválido"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Invalido data final"
@@ -1465,7 +1643,7 @@ msgstr "Invalido data final"
msgid "Invalid format %s specified."
msgstr "Formato inválido%s especificado."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Data de inicio invalida"
@@ -1496,7 +1674,7 @@ msgstr "É interessante notar, porém, que o processo pode ser lento às vezes,
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Manter-me logado neste computador"
@@ -1506,7 +1684,7 @@ msgstr "Manter-me logado neste computador"
msgid "Last Name"
msgstr "Ultimo Nome"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Última editor"
@@ -1519,6 +1697,10 @@ msgstr "Última atualização:"
msgid "Last&nbsp;update:"
msgstr "Última atualização:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1561,6 +1743,7 @@ msgstr "RSS feeds e alertas de e-mail locais para '%s'"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1573,7 +1756,8 @@ msgstr "Alertas locais"
msgid "Locate the problem on a map of the area"
msgstr "Localize o problema em um mapa da área ou zona"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr "Mapa"
@@ -1581,6 +1765,10 @@ msgstr "Mapa"
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Mapa © <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\"> OpenStreetMap </a> e colaboradores, <a href = \"http://creativecommons.org/licenses/by- sa/2.0 / \"> CC-BY-SA </a>"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Menssagem"
@@ -1605,13 +1793,13 @@ msgstr "Mês"
msgid "More problems nearby"
msgstr "Mais problemas próximos"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1622,7 +1810,7 @@ msgstr "Mais problemas próximos"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Nome"
@@ -1633,14 +1821,14 @@ msgstr "Nome (opcional)"
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Nome:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr "Nome: %s"
@@ -1681,14 +1869,20 @@ msgstr "Quase pronto! Agora, verifique seu e-mail ..."
msgid "New <br>problems"
msgstr "Novos <br>problemas"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr "Novo corpo adicionado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Novo contato de categoria adicionado"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+#, fuzzy
+msgid "New internal note:"
+msgstr "Notas internas"
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Novos problemas locais FixMyStreetMindelo"
@@ -1751,7 +1945,7 @@ msgstr "Novos relatórios dentro de {{NAME}} 's fronteira em reportemptyhomes.co
msgid "New state"
msgstr "Novo estado"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr "Nova actualizaçao"
@@ -1765,13 +1959,13 @@ msgstr "Novo?"
msgid "Next"
msgstr "Proximo"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1784,7 +1978,7 @@ msgstr "Proximo"
msgid "No"
msgstr "Nao"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr "Nenhum corpo"
@@ -1792,23 +1986,25 @@ msgstr "Nenhum corpo"
msgid "No council"
msgstr "Sem conselho"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Nenhum Conselho selecionado"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Nenhum ediçao efectuada"
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Nenhum problema sinalizado"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Nenhum usuário sinalizado encontrado"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr "Sem mais atualizações"
@@ -1822,25 +2018,42 @@ msgstr "Nenhum problema encontrado"
msgid "No problems have been reported yet."
msgstr "Nenhuns problemas foram ianda reportados"
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr "Nenhum resultado retornado"
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "Não apoiantes"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr "Nao publico"
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Nenhum"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1860,11 +2073,11 @@ msgstr "Nao pertence ao meu sector"
msgid "Not reported before"
msgstr "Nao reportado antes"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Nao reportado ao conselho"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1874,7 +2087,7 @@ msgstr "Nota"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Note que quando incluimos relatos não confirmados usamos a data em que o relatório foi criado, que pode não estar no mesmo mês em que o relatório foi confirmado de modo que os números podem estar alterados."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1900,7 +2113,8 @@ msgstr "Agora, para apresentar a sua atualização ..."
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "Agora, para apresentar a sua atualização ... você tem de ter uma senha FixMyStreetMindelo?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr "OK"
@@ -1944,7 +2158,7 @@ msgstr "Mais antigo fixed"
msgid "Older problems"
msgstr "Problemas mais antigos"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1955,8 +2169,8 @@ msgstr "Problemas mais antigos"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1988,15 +2202,15 @@ msgstr "Ou os problemas relatados para:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Ou você pode se inscrever em um alerta baseado no que ala, zona ou conselho você está inserido"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Outro"
@@ -2004,7 +2218,7 @@ msgstr "Outro"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "Nosso código é open source e <a href=\"http://github.com/mysociety/fixmystreet\"> disponível no GitHub </a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Proprietário"
@@ -2013,8 +2227,8 @@ msgstr "Proprietário"
msgid "Page Not Found"
msgstr "Pagina nao encontrada"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr "Parente"
@@ -2029,7 +2243,7 @@ msgstr "Parcial"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Password (opcional)"
@@ -2037,25 +2251,29 @@ msgstr "Password (opcional)"
msgid "Password:"
msgstr "Password:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Telefone "
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefone (opcional)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefone:"
@@ -2067,6 +2285,7 @@ msgstr "Telefone:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2084,7 +2303,8 @@ msgstr "Foto"
msgid "Photos of recent nearby reports"
msgstr "Fotos de relatórios recentes mais proximos"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr "Coloque a fix pin no mapa"
@@ -2095,8 +2315,8 @@ msgstr "Coloque a fix pin no mapa"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planejado"
@@ -2134,12 +2354,13 @@ msgstr "Favor verificar se seu email esta correcto"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Escolher uma categoria"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Por favor, escolha um tipo de imóvel"
@@ -2178,25 +2399,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr "Por favor, não fornecer o endereço ou informações pessoais nesta seção."
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Por favor insira uma mensagem"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Por favor insira uma password"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Por favor insira um assunto"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2207,8 +2435,9 @@ msgstr "Por favor insira um email valido"
msgid "Please enter a valid email address"
msgstr "Por favor insira um endereço de e-mail válido"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Por favor, insira alguns detalhes"
@@ -2221,6 +2450,8 @@ msgstr "Por favor, insira alguns detalhes"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2236,36 +2467,46 @@ msgstr "Digite seu e-mail"
msgid "Please enter your email address"
msgstr "Por favor, insira o seu endereço de email"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Digite seu primeiro nome"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Por favor, insira o seu nome completo, os conselhos precisam desta informação - se você não quiser que seu nome seja mostrado no site, desmarque a caixa abaixo"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Digite seu nome"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Digite seu segundo nome, apelido"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Digite seu segundo nome, apelido"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Por favor, insira o seu título"
#: templates/web/default/auth/sign_out.html:5
#: templates/web/zurich/auth/sign_out.html:5
msgid "Please feel free to <a href=\"%s\">sign in again</a>, or go back to the <a href=\"/\">front page</a>."
-msgstr "Por favor, sinta-se livre para <a href=\"%s\"> se inscrever de novo </a>, ou voltar para a página inicial href=\"/\"> <a </a>."
+msgstr "Por favor, sinta-se livre para <a href=\\\"%s\\\"> se inscrever de novo </a>, ou voltar para a <a href=\\\"/\\\">página inicial</a>"
#: templates/web/emptyhomes/report/new/fill_in_details_text.html:1
msgid ""
@@ -2389,11 +2630,11 @@ msgstr "Por favor, indique se o problema foi corrigido"
msgid "Please take a look at the updates that have been left."
msgstr "Por favor, dê uma olhada nas atualizações que foram deixadas."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Faça upload somente de uma imagem em JPEG "
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Faça upload de uma imagem JPEG \n"
@@ -2436,7 +2677,7 @@ msgstr "Postado por %s aem %s"
msgid "Previous"
msgstr "Anterior"
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2462,12 +2703,12 @@ msgstr "Problema %s confirmado"
msgid "Problem %s sent to council %s"
msgstr "Problema %s enviado ao conselho %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Colapso problema por estado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problema marcado como aberto."
@@ -2475,7 +2716,7 @@ msgstr "Problema marcado como aberto."
msgid "Problem state change based on survey results"
msgstr "Mudança de estado do problema com base nos resultados da pesquisa"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problemas"
@@ -2566,8 +2807,8 @@ msgstr "Fornecer uma senha é opcional, mas isso vai permitir que você mais fac
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Fornecer uma senha é opcional, mas isso vai permitir que você mais facilmente relate seus problemas, deixe as atualizações e gerencie seus relatórios."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr "Publico"
@@ -2575,17 +2816,17 @@ msgstr "Publico"
msgid "Public information (shown on site)"
msgstr "A informação pública (mostrado no site)"
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr "Resposta do público:"
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr "Publicar foto"
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr "Publicar a resposta"
@@ -2733,6 +2974,7 @@ msgstr "Relatório Casas vazias, pardeeiros."
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2773,7 +3015,7 @@ msgstr "Relatado %s"
msgid "Reported %s, to %s"
msgstr "Reportados %s, para %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2785,42 +3027,42 @@ msgstr "Relatado anonimamente em %s"
msgid "Reported before"
msgstr "Relatado antes"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Relatado por %s anonimamente em %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Relatado por %s em %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Relatado por %s por%s em %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Relatado por %s na categoria %s anonimamente em %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Relatado por %s na categoria %s por %s em %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr "Relatado na categoria %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Relatado na categoria %s anonimamente em %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Relatado na categoria %s por %s em %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Relatado por %s anonimamente em %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Relatado por %s por%s em %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Relatado por %s na categoria %s anonimamente em %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Relatado por %s na categoria %s por %s em %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2829,21 +3071,24 @@ msgstr "Relatado na categoria %s por %s em %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Relatando um problema"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr "Relatórios"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+#, fuzzy
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr "Os relatórios são limitadas a 2000 caracteres. Por favor, encurtar o seu relatório"
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2862,7 +3107,8 @@ msgstr "Os relatórios publicados"
msgid "Resend report"
msgstr "Reenviar relatório"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr "Lugar certo?"
@@ -2874,16 +3120,16 @@ msgstr "Operador de estrada por esta estrada chamada (derivado do número de ref
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Operador de estrada por esta estrada chamada (a partir de OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr "Girar para a esquerda"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr "Girar para a direita"
@@ -2891,7 +3137,6 @@ msgstr "Girar para a direita"
msgid "Save changes"
msgstr "Salvar alterações"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2906,18 +3151,27 @@ msgid "Search reports"
msgstr "elatórios de pesquisa"
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Pesquisar:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "elatórios de pesquisa"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr "Selecione um corpo"
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr "Selecione uma área"
@@ -2926,7 +3180,7 @@ msgstr "Selecione uma área"
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Selecione o tipo de alerta fixstreet que você gostaria de receber e clique no botão para um feed RSS ou introduza o seu endereço de email para assinar um alerta de e-mail."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Enviado para %s %s mais tarde"
@@ -3017,6 +3271,13 @@ msgstr "Entrou como %s"
msgid "Some categories may require additional information."
msgstr "Algumas categorias podem solicitar informações adicionais."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -3054,20 +3315,13 @@ msgid "Source code"
msgstr "O código-fonte"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Ano:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Dia:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Mes:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -3076,14 +3330,14 @@ msgstr "Estado"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Estado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3099,7 +3353,7 @@ msgstr "Status"
msgid "Still open, via questionnaire, %s"
msgstr "Ainda em aberto, via questionário, %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr "Subcategoria: %s"
@@ -3117,7 +3371,7 @@ msgstr "Assunto:"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Assunto:"
@@ -3133,15 +3387,15 @@ msgstr "Assunto:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Submeter"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Submeter alteraçoes"
@@ -3151,14 +3405,14 @@ msgstr "Submeter alteraçoes"
msgid "Submit questionnaire"
msgstr "Submeter questionario"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3182,8 +3436,8 @@ msgstr "Subcrever um alerta de e-mail"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr "Subcrever um alerta baseado no que baranagay você está em:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3202,7 +3456,7 @@ msgstr "Resumo"
msgid "Summary reports"
msgstr "Resumo reports"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr "Teste"
@@ -3210,8 +3464,9 @@ msgstr "Teste"
msgid "Survey Results"
msgstr "Resultados teste"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Texto"
@@ -3268,7 +3523,7 @@ msgstr "Obrigado pelo seu feedback. Nós vamos responder o mais rapidamente poss
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Obrigado, gratos em ouvir que o problema foi corrigido! Podemos apenas perguntar se você já relatou um problema para um conselho antes?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Essa imagem não parece ter sido carregada corretamente (%s), por favor, tente novamente."
@@ -3285,7 +3540,7 @@ msgstr "Esse local não parece estar em Mindelo, por favor tente novamente."
msgid "That postcode was not recognised, sorry."
msgstr "Esse código postal não foi reconhecido, me desculpe.Tente novamente."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "Esse problema agora será reenviado e reportado ao conselho."
@@ -3297,10 +3552,44 @@ msgstr "Esse relatório não pode ser visualizado em %s."
msgid "That report has been removed from FixMyStreet."
msgstr "Esse relatório foi removido FixMyStreetMIndelo"
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "O Open311 v2 atributo agency_responsible é usada para listar as administrações que receberam o relatório de problemas, o que não é muito a forma como o atributo é definido na especificação v2 Open311."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3319,6 +3608,11 @@ msgstr "Os detalhes do seu problema estão disponíveis na outra aba acima."
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Os detalhes do seu problema estão disponíveis no lado direito desta página."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3377,6 +3671,10 @@ msgstr "Os últimos relatórios para {{CONSELHO}} {{dentro WARD}} ala relatados
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "Os últimos relatórios dentro de {{NAME}} 's fronteira relatados por usuários"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3401,10 +3699,17 @@ msgstr "O alerta mais simples é o nosso único ponto localizaçao geográfica:"
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr "O tema e os detalhes do problema serão públicos, além de seu nome se você nos der permissão."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "O usuário não conseguiu localizar o problema em um mapa, localizar a area mais proxima do local"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Houve um problema ao mostrar a página de todos os relatórios. Por favor, tente novamente mais tarde."
@@ -3439,19 +3744,48 @@ msgstr "Houve problemas com o seu relatório. Por favor, veja abaixo."
msgid "There were problems with your update. Please see below."
msgstr "Houve problemas com a sua atualização. Por favor, veja abaixo."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Esta implementação API é um trabalho em andamento e ainda não estabilizou. Ela vai mudar sem avisos no futuro."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Este e-mail foi enviado para ambos os conselhos que cobrem o local do problema, como o usuário não categorizá-lo, por favor, ignorar se você não é o conselho correto para lidar com o problema, ou deixe-nos saber que categoria de problema é para que possamos adicioná-lo ao nosso sistema."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Este e-mail foi enviado para vários conselhos que cobrem o local do problema, como a categoria selecionada é fornecida para todos eles, por favor, ignorar se você não é o conselho correto para lidar com o problema."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3505,8 +3839,8 @@ msgstr "Este problema está em progresso"
msgid "This problem is old and of unknown status."
msgstr "Este problema é antigo e de status desconhecido."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr "Este relatório está aguardando moderação."
@@ -3523,20 +3857,20 @@ msgstr "Este relatório está marcado como fixo."
msgid "This report is currently marked as open."
msgstr "Este relatório está marcado como aberto."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr "Este relatório foi enviado anonimamente"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Esta página também contém uma foto do problema, fornecido pelo usuário."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Timeline"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Titulo"
@@ -3549,11 +3883,11 @@ msgstr "Para <strong> relatar um problema </strong>, clique no mapa no local cor
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Para descobrir quais os alertas locais que temos para si, deve inserir o seu código postal ou nome de rua e área ou zona"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "Para ver no mapa a localização exata desse problema"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3565,7 +3899,8 @@ msgstr "Total"
msgid "Transport Category"
msgstr "Categoria Transporte"
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr "Tente novamente"
@@ -3583,8 +3918,8 @@ msgstr "Incapaz de ser resolvido"
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Não confirmado"
@@ -3597,7 +3932,8 @@ msgstr "Desconhecido"
msgid "Unknown alert type"
msgstr "Tipo de alerta desconhecido"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr "Erro desconhecido"
@@ -3624,12 +3960,12 @@ msgstr "Atualize abaixo colocado de forma anónima em %s"
msgid "Update below added by %s at %s"
msgstr "Actualizar abaixo adicionado por %s em %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr "Atualize corpo"
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Atualize repartição por Estado"
@@ -3650,7 +3986,7 @@ msgstr "Atualizaçao do problema marcado como fixo"
msgid "Update reopened problem"
msgstr "Reaberto a actualizaçao do problema"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Atualizar status"
@@ -3664,24 +4000,24 @@ msgstr "Actualizar:"
msgid "Updated"
msgstr "Atualizado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Actualizado!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Actualizaçoes"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr "As atualizações são limitadas a 2000 caracteres. Por favor, encurtar a sua atualização"
@@ -3698,23 +4034,37 @@ msgstr "Atualizações sobre {{título}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Atualizações para este problema, FixMyStreetMindelo"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Usuários"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Bandeira usuário removida"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Usuário sinalizado"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Usuários"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Valores atualizados"
@@ -3784,7 +4134,7 @@ msgstr "Nós nunca divulgaremos o seu e-mail"
msgid "We never show your email address or phone number."
msgstr "Nós nunca divulgaremos o seu endereço de e-mail ou número de telefone."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Percebemos este problema pode ser da responsabilidade do %s, no entanto, nós não possuímos nenhuma informação de contato deles. Se você souber de um endereço de contato apropriado, favor fornecer esse contacto. Obrigado."
@@ -3811,7 +4161,7 @@ msgstr "Adoraríamos ouvir o que você pensa sobre este website. Basta preencher
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Adoraríamos ouvir o que você pensa sobre este site. Basta preencher o formulário, ou envie um e-mail para <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3855,18 +4205,20 @@ msgstr "Escrever a mensagem inteiramente em letras maiúsculas torna difícil de
msgid "Year"
msgstr "Ano"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3899,6 +4251,17 @@ msgstr "Você está reportando a seguinte atualização por ser abusiva, contend
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr "Você pode <a href=\"%s%s\"> ver o problema neste site </a>."
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3906,7 +4269,12 @@ msgstr "Você pode <a href=\"%s%s\"> ver o problema neste site </a>."
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Você pode nos ajudar a encontrar um endereço de e-mail de contato para os problemas locais para %s e e-mail para nós em <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr "Você recusou, por favor preencha o quadro de cima"
@@ -3981,6 +4349,17 @@ msgstr "Você se inscreveu com sucesso nos, por favor, verificar e confirmar os
msgid "You must now click the link in the email we've just sent you."
msgstr "Agora você deve clicar no link do e-mail que acabamos de lhe enviar."
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Você realmente deseja reenviar o email?"
@@ -4016,7 +4395,7 @@ msgstr "Seu e-mail (opcional)"
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "O seu endereço de email"
@@ -4054,7 +4433,7 @@ msgstr "Apelido"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Nome"
@@ -4086,7 +4465,7 @@ msgstr "Sua password foi alterada"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Telefone "
@@ -4102,6 +4481,7 @@ msgstr "Seu relatório foi criado e será enviado em breve."
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4126,13 +4506,13 @@ msgstr "por %s"
msgid "council"
msgstr "conselho"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr "conselho ref:%s"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "não usar o mapa"
@@ -4142,11 +4522,17 @@ msgstr "não usar o mapa"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "por exemplo '%s' ou '%s'"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Adicionar user"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "e %d usuários diferentes"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4157,23 +4543,20 @@ msgid "less than a minute"
msgstr "menos de um minuto"
#: templates/web/default/report/updates.html:57
-#, fuzzy
msgid "marked as a duplicate report"
-msgstr "duplicar relatório"
+msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "Ação Programada"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
msgstr ""
#: templates/web/default/report/updates.html:49
-#, fuzzy
msgid "marked as closed"
-msgstr "marcado como %s"
+msgstr ""
#: templates/web/default/report/updates.html:28
#: templates/web/default/report/updates.html:51
@@ -4181,31 +4564,26 @@ msgid "marked as fixed"
msgstr "marcado como fixo"
#: templates/web/default/report/updates.html:45
-#, fuzzy
msgid "marked as in progress"
-msgstr "Este problema está em progresso"
+msgstr ""
#: templates/web/default/report/updates.html:41
-#, fuzzy
msgid "marked as investigating"
-msgstr "Investigando"
+msgstr ""
#: templates/web/default/report/updates.html:55
-#, fuzzy
msgid "marked as not the council's responsibility"
-msgstr "não da responsabilidade do conselho"
+msgstr ""
#: templates/web/default/report/updates.html:43
-#, fuzzy
msgid "marked as planned"
-msgstr "marcado como fixo"
+msgstr ""
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "marcado como fixo"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4217,22 +4595,23 @@ msgstr "n / a"
msgid "or"
msgstr "ou"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr "ou localizár-me automaticamente"
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr "originalmente introduzido: \"%s\""
@@ -4271,7 +4650,7 @@ msgstr "o conselho local"
msgid "there is no pin shown as the user did not use the map"
msgstr "não há nenhum fix pin para o usuario usar no mapa"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "este tipo de problema local"
@@ -4280,8 +4659,8 @@ msgid "today"
msgstr "hoje"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "mapa usado"
@@ -4375,8 +4754,18 @@ msgid_plural "%d days"
msgstr[0] "%d dia"
msgstr[1] "%d dias"
-#~ msgid "no further action"
-#~ msgstr "nenhuma outra ação"
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Esta informação é necessária"
+
+#~ msgid "End Year:"
+#~ msgstr "Fim do ano:"
+
+#~ msgid "End month:"
+#~ msgstr "Fim do mês:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Ano:"
-#~ msgid "third party responsibility"
-#~ msgstr "terceiro a responsabilidade do partido"
+#~ msgid "Start month:"
+#~ msgstr "Mes:"
diff --git a/locale/sv_SE.UTF-8/LC_MESSAGES/FixMyStreet.po b/locale/sv_SE.UTF-8/LC_MESSAGES/FixMyStreet.po
index 00f95fdfa..abcfb3860 100644
--- a/locale/sv_SE.UTF-8/LC_MESSAGES/FixMyStreet.po
+++ b/locale/sv_SE.UTF-8/LC_MESSAGES/FixMyStreet.po
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fixmystreet\n"
"Report-Msgid-Bugs-To: matthew@mysociety.org\n"
-"POT-Creation-Date: 2013-09-05 17:39+0100\n"
-"PO-Revision-Date: 2013-05-02 21:06+0000\n"
+"POT-Creation-Date: 2013-11-12 13:15+0000\n"
+"PO-Revision-Date: 2013-09-05 16:55+0000\n"
"Last-Translator: mysociety <transifex@mysociety.org>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/fixmystreet/language/sv_SE/)\n"
"Language: sv_SE\n"
@@ -21,8 +21,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:636
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:369
+#: perllib/FixMyStreet/DB/Result/Problem.pm:602
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:373
msgid " and "
msgstr "eller"
@@ -43,28 +43,28 @@ msgstr " och <strong>vi kommer skicka det till kommunen</strong>"
msgid " or "
msgstr "eller"
-#: templates/web/default/admin/bodies.html:36
+#: templates/web/default/admin/bodies.html:46
msgid "%d addresses"
msgstr "%d adresser"
-#: templates/web/default/admin/index.html:17
+#: templates/web/default/admin/index.html:25
msgid "%d confirmed alerts, %d unconfirmed"
msgstr "%d bekräftade bevakningar, %d obekräftade"
-#: templates/web/default/admin/index.html:19
+#: templates/web/default/admin/index.html:27
#: templates/web/zurich/admin/index.html:6
msgid "%d council contacts &ndash; %d confirmed, %d unconfirmed"
msgstr "%d kommuner kontaktade &ndash; %d bekräftade, %d obekräftade"
-#: templates/web/default/admin/edit-league.html:5
+#: templates/web/default/admin/edit-league.html:12
msgid "%d edits by %s"
msgstr "%d ändringar av %s"
-#: templates/web/default/admin/index.html:16
+#: templates/web/default/admin/index.html:24
msgid "%d live updates"
msgstr "%d uppdateringar"
-#: templates/web/default/admin/index.html:18
+#: templates/web/default/admin/index.html:26
msgid "%d questionnaires sent &ndash; %d answered (%s%%)"
msgstr "%d frågeformulär skickade &ndash; %d besvarade (%s%%)"
@@ -77,7 +77,7 @@ msgstr ""
msgid "%s - Summary reports"
msgstr "%s - Sammanställningsrapporter"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:685
+#: perllib/FixMyStreet/DB/Result/Problem.pm:651
msgid "%s ref:&nbsp;%s"
msgstr "%s ref:&nbsp;%s"
@@ -85,7 +85,7 @@ msgstr "%s ref:&nbsp;%s"
msgid "%s ward, %s"
msgstr "Administrativa området %s, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:572
+#: perllib/FixMyStreet/DB/Result/Problem.pm:538
msgid "%s, reported at %s"
msgstr ""
@@ -106,7 +106,7 @@ msgid "(Don't worry &mdash; we'll hang on to your update while you're checking y
msgstr ""
#: templates/web/default/admin/report_blocks.html:11
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
msgid "(Email in abuse table)"
msgstr "(Epost i missbrukstabellen)"
@@ -120,6 +120,7 @@ msgstr "(ett avstånd som täcker ungefär 200,000 invånare)"
msgid "(alternatively the RSS feed can be customised, within"
msgstr "(alternativt kan RSS-flödet konfigureras inom"
+#: templates/web/bromley/report/_item.html:22
#: templates/web/default/around/around_map_list_items.html:12
#: templates/web/default/around/on_map_list_items.html:9
#: templates/web/fixmystreet/report/_item.html:22
@@ -127,6 +128,7 @@ msgstr "(alternativt kan RSS-flödet konfigureras inom"
msgid "(closed)"
msgstr "(stängd)"
+#: templates/web/bromley/report/_item.html:20
#: templates/web/default/around/around_map_list_items.html:10
#: templates/web/default/around/on_map_list_items.html:7
#: templates/web/fixmystreet/report/_item.html:20
@@ -139,6 +141,7 @@ msgstr "(fixad)"
msgid "(like graffiti, fly tipping, broken paving slabs, or street lighting)"
msgstr "(ex.v. grafitti, skräp, trasiga gatustenar eller belysning)"
+#: templates/web/bromley/report/_item.html:16
#: templates/web/default/reports/_list-entry.html:4
#: templates/web/fixmystreet/report/_item.html:16
msgid "(not sent to council)"
@@ -150,6 +153,7 @@ msgstr "(ej skickat till kommunen)"
msgid "(optional)"
msgstr "(valfritt)"
+#: templates/web/bromley/report/_item.html:15
#: templates/web/default/reports/_list-entry.html:2
#: templates/web/fixmystreet/report/_item.html:15
msgid "(sent to both)"
@@ -165,12 +169,12 @@ msgstr "(vi visar aldrig din epostadress)"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:637
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
-#: perllib/FixMyStreet/DB/Result/Problem.pm:418
+#: perllib/FixMyStreet/DB/Result/Problem.pm:379
msgid "-- Pick a category --"
msgstr "-- Välj en katagori --"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:618
-#: perllib/FixMyStreet/DB/Result/Problem.pm:424
+#: perllib/FixMyStreet/DB/Result/Problem.pm:385
msgid "-- Pick a property type --"
msgstr "-- Välj en fastighetstyp --"
@@ -178,6 +182,14 @@ msgstr "-- Välj en fastighetstyp --"
msgid "<big>%s</big> reports"
msgstr ""
+#: templates/web/default/admin/body-form.html:42
+#: templates/web/default/admin/body-form.html:43
+msgid ""
+"<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>\n"
+" This is probably why \"area covered\" is empty (below).<br>\n"
+" Maybe add some <code>MAPIT_TYPES</code> to your config file?"
+msgstr ""
+
#: templates/web/default/questionnaire/completed.html:20
msgid "<p style=\"font-size:150%\">Thank you very much for filling in our questionnaire; glad to hear it&rsquo;s been fixed.</p>"
msgstr "<p style=\"font-size:150%\">Tack för att du fyllt i frågeformuläret! Vi är glada över att höra att problemet har lösts.</p>"
@@ -247,7 +259,7 @@ msgstr "<p>Tack för att du fyllt i vår enkät. Om du får ytterligare informat
msgid "<small>If you cannot see the map, <a href='%s' rel='nofollow'>skip this step</a>.</small>"
msgstr "<small>Om du inte kan se kartan kan du <a herf='%s' rel='nofollow'>hoppa över det här steget</a>.</small>"
-#: templates/web/default/admin/index.html:14
+#: templates/web/default/admin/index.html:22
#: templates/web/zurich/admin/index.html:4
msgid "<strong>%d</strong> live problems"
msgstr "<strong>%d</strong> aktuella problem"
@@ -261,7 +273,7 @@ msgid "<strong>No</strong> Let me confirm my update by email"
msgstr "<strong>Nej</strong> Låt mig bekräfta uppdateringen via epost"
#: templates/web/fixmystreet/auth/general.html:50
-#: templates/web/zurich/auth/general.html:49
+#: templates/web/zurich/auth/general.html:51
msgid "<strong>No</strong> let me sign in by email"
msgstr "<strong>Nej</strong> Låt mig logga in med min epostadress"
@@ -308,19 +320,31 @@ msgstr "Om oss"
msgid "Action Scheduled"
msgstr ""
-#: templates/web/default/admin/bodies.html:53
-#: templates/web/default/admin/bodies.html:57
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:3
+#: templates/web/default/admin/body-form.html:4
+msgid ""
+"Add a <strong>body</strong> for each administrative body, such as a council or department\n"
+" to which problem reports can be sent. You can add one or more contacts (for different\n"
+" categories of problem) to each body."
+msgstr ""
+
+#: templates/web/default/admin/body.html:45
+msgid "Add a contact using the form below."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:65
+#: templates/web/default/admin/bodies.html:70
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Add body"
msgstr ""
-#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:88
#: templates/web/zurich/admin/body.html:30
msgid "Add new category"
msgstr "Ny kategori"
-#: templates/web/default/admin/users.html:36
+#: templates/web/default/admin/users.html:45
msgid "Add user"
msgstr ""
@@ -358,6 +382,7 @@ msgstr "Alla rapporter"
#: templates/web/emptyhomes/header.html:32
#: templates/web/fiksgatami/footer.html:7
#: templates/web/fiksgatami/nn/footer.html:7
+#: templates/web/fixmindelo/footer.html:41
#: templates/web/fixmybarangay/footer.html:20
#: templates/web/fixmystreet/footer.html:48
#: templates/web/oxfordshire/footer.html:23
@@ -409,7 +434,7 @@ msgstr "All information du anger här kommer att skickas till ansvariga i <stron
msgid "An update marked this problem as fixed."
msgstr "En uppdatering markerade det här problemet som löst."
-#: templates/web/default/admin/list_updates.html:11
+#: templates/web/default/admin/list_updates.html:32
#: templates/web/default/admin/problem_row.html:20
msgid "Anonymous"
msgstr "Anonym"
@@ -433,26 +458,26 @@ msgstr "Är du en utvecklare?"
msgid "Are you from a council?"
msgstr "Arbetar du på en kommun?"
-#: templates/web/default/admin/body-form.html:19
-#: templates/web/zurich/admin/body-form.html:25
+#: templates/web/default/admin/body-form.html:69
+#: templates/web/zurich/admin/body-form.html:24
msgid "Area covered"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:124
+#: templates/web/zurich/admin/report_edit.html:144
#: templates/web/zurich/admin/stats.html:36
msgid "Assign to different category:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:153
msgid "Assign to external body:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:113
-#: templates/web/zurich/admin/report_edit.html:170
+#: templates/web/zurich/admin/report_edit.html:133
+#: templates/web/zurich/admin/report_edit.html:190
msgid "Assign to subdivision:"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:100
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:141
#: templates/web/zurich/report/updates.html:11
msgid "Assigned to %s"
msgstr ""
@@ -465,12 +490,13 @@ msgstr "Som mest returneras %d svar i varje förfrågan. De returnerade svaren
msgid "At the moment only searching for and looking at reports work."
msgstr "För tillfället fungerar det endast att söka för eller leta efter rapporter."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:373
+#: perllib/FixMyStreet/DB/Result/Problem.pm:334
#: templates/web/zurich/report/_item.html:11
msgid "Awaiting moderation"
msgstr ""
-#: templates/web/default/js/translation_strings.html:26
+#: templates/web/default/js/translation_strings.html:32
+#: templates/web/oxfordshire/js/translation_strings.html:26
msgid "Back"
msgstr "Tillbaka"
@@ -482,20 +508,20 @@ msgstr "Förbjud epostadress"
msgid "Be sure to choose the right category, because we use that to determine to whom the report is sent."
msgstr "Välj kategori så noggrant som möjligt eftersom det hjälper oss att avgöra vem rapporten ska skickas till."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1144
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:208
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1176
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:249
#: templates/web/default/admin/bodies.html:1
#: templates/web/zurich/header.html:64
msgid "Bodies"
msgstr ""
-#: templates/web/default/admin/flagged.html:12
+#: templates/web/default/admin/flagged.html:17
#: templates/web/default/admin/reports.html:14
-#: templates/web/default/admin/users.html:14
+#: templates/web/default/admin/users.html:17
msgid "Body"
msgstr ""
-#: templates/web/default/admin/user-form.html:7
+#: templates/web/default/admin/user-form.html:32
msgid "Body:"
msgstr ""
@@ -514,9 +540,9 @@ msgid "Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"
msgstr "Kan du inte se kartan? <a href='%s' rel='nofollow'>Hoppa över det här steget</a>"
#: templates/web/bromley/report/new/fill_in_details_form.html:68
-#: templates/web/default/admin/bodies.html:11
-#: templates/web/default/admin/body.html:35
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/bodies.html:20
+#: templates/web/default/admin/body.html:53
+#: templates/web/default/admin/index.html:44
#: templates/web/default/report/new/category.html:10
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:74
#: templates/web/seesomething/report/new/category.html:6
@@ -530,22 +556,22 @@ msgstr "Kan du inte se kartan? <a href='%s' rel='nofollow'>Hoppa över det här
msgid "Category"
msgstr "Kategori"
-#: templates/web/default/admin/index.html:34
+#: templates/web/default/admin/index.html:42
msgid "Category fix rate for problems > 4 weeks old"
msgstr "Kategorins lösningsnivå för problem över 4 veckor gamla"
-#: templates/web/default/admin/body.html:75
+#: templates/web/default/admin/body.html:109
#: templates/web/default/admin/body_edit.html:23
#: templates/web/default/admin/report_edit.html:61
#: templates/web/default/report/new/fill_in_details_form.html:67
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:50
#: templates/web/zurich/admin/body.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:42
-#: templates/web/zurich/admin/report_edit.html:123
+#: templates/web/zurich/admin/report_edit-sdm.html:45
+#: templates/web/zurich/admin/report_edit.html:143
msgid "Category:"
msgstr "Kategori:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
msgid "Category: %s"
msgstr "Kategori: %s"
@@ -555,12 +581,51 @@ msgstr "Kategori: %s"
msgid "Change Password"
msgstr "Ända lösenord"
-#: templates/web/default/js/translation_strings.html:41
+#: templates/web/default/admin/body.html:131
+msgid ""
+"Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.\n"
+" If you are not sure of the origin or validity of the contact, leave this unchecked."
+msgstr ""
+
+#: templates/web/default/admin/body.html:142
+msgid ""
+"Check <strong>deleted</strong> to remove the category from use. \n"
+" It will not appear as an available category in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/body.html:162
+msgid ""
+"Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.\n"
+" <br>\n"
+" Normally, categories are not private.\n"
+" <br>\n"
+" This is suitable for issues that you want to allow users to report to the body, but for which there is no public\n"
+" interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin\n"
+" at a specific address."
+msgstr ""
+
+#: templates/web/default/admin/body.html:101
+msgid ""
+"Choose a <strong>category</strong> name that makes sense to the public (e.g., \"Pothole\", \"Street lighting\") but is helpful\n"
+" to the body too. These will appear in the drop-down menu on the report-a-problem page."
+msgstr ""
+
+#: templates/web/default/admin/stats.html:65
+#: templates/web/default/admin/stats.html:71
+msgid "Click here or enter as dd/mm/yyyy"
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:47
#: templates/web/fixmystreet/around/_report_banner.html:2
msgid "Click map to report a problem"
msgstr "Klicka på kartan för att rapportera ett problem"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:77
+#: templates/web/oxfordshire/js/translation_strings.html:39
+#, fuzzy
+msgid "Click on the map to report a problem"
+msgstr "Klicka på kartan för att rapportera ett problem"
+
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:118
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:45
#: templates/web/default/admin/report_edit.html:47
@@ -570,14 +635,14 @@ msgstr "Klicka på kartan för att rapportera ett problem"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:10
#: templates/web/zurich/admin/header.html:12
-#: templates/web/zurich/admin/report_edit.html:96
+#: templates/web/zurich/admin/report_edit.html:100
#: templates/web/zurich/admin/report_edit.html:98
#: templates/web/zurich/admin/stats.html:31
#: templates/web/zurich/report/banner.html:13
msgid "Closed"
msgstr "Stängd"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:778
+#: perllib/FixMyStreet/DB/Result/Problem.pm:744
msgid "Closed by council"
msgstr "Stängd av kommunen"
@@ -595,12 +660,12 @@ msgid "Closest nearby problems <small>(within&nbsp;%skm)</small>"
msgstr "Närmaste närliggande problem <small>(inom&nbsp;%s&nbsp;km)</small>"
#: templates/web/default/admin/report_edit.html:23
-#: templates/web/zurich/admin/report_edit-sdm.html:33
-#: templates/web/zurich/admin/report_edit.html:47
+#: templates/web/zurich/admin/report_edit-sdm.html:36
+#: templates/web/zurich/admin/report_edit.html:49
msgid "Co-ordinates:"
msgstr "Koordinater:"
-#: templates/web/default/admin/list_updates.html:14
+#: templates/web/default/admin/list_updates.html:10
msgid "Cobrand"
msgstr "Cobrand"
@@ -614,7 +679,12 @@ msgstr "Cobrand data:"
msgid "Cobrand:"
msgstr "Cobrand:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:407
+#: templates/web/default/admin/config_page.html:1
+#, fuzzy
+msgid "Configuration"
+msgstr "Bekräftelse"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:421
msgid "Configuration updated - contacts will be generated automatically later"
msgstr "Konfigurationen uppdaterad. Kontakterna kommer att genereras automatiskt senare"
@@ -622,7 +692,7 @@ msgstr "Konfigurationen uppdaterad. Kontakterna kommer att genereras automatiskt
msgid "Configure Endpoint"
msgstr "Konfigurera slutpunkt"
-#: templates/web/default/admin/body.html:44
+#: templates/web/default/admin/body.html:62
msgid "Confirm"
msgstr "Bekfräfta"
@@ -649,8 +719,8 @@ msgstr "Bekräfta via epost nedan genom att ange ett nytt lösenord. När du bek
msgid "Confirmation"
msgstr "Bekräftelse"
-#: templates/web/default/admin/body.html:37
-#: templates/web/default/admin/body.html:85
+#: templates/web/default/admin/body.html:137
+#: templates/web/default/admin/body.html:55
#: templates/web/default/admin/body_edit.html:32
#: templates/web/default/admin/body_edit.html:84
#: templates/web/zurich/admin/stats.html:40
@@ -661,6 +731,7 @@ msgstr "Bekräftat"
msgid "Confirmed reports between %s and %s"
msgstr "Bekräftade rapporter mellan %s och %s"
+#: templates/web/default/admin/list_updates.html:39
#: templates/web/default/admin/problem_row.html:36
#: templates/web/default/admin/report_edit.html:70
msgid "Confirmed:"
@@ -691,16 +762,17 @@ msgstr "Kontakta oss"
msgid "Contact the team"
msgstr "Kontakta teamet"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1277
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1305
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1310
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1338
msgid "Could not find user"
msgstr "Kan inte hitta användaren"
-#: templates/web/default/js/translation_strings.html:31
+#: templates/web/default/js/translation_strings.html:37
+#: templates/web/oxfordshire/js/translation_strings.html:31
msgid "Could not look up location"
msgstr "Kunde inte lokalisera dig automatiskt"
-#: templates/web/default/admin/list_updates.html:13
+#: templates/web/default/admin/list_updates.html:9
msgid "Council"
msgstr "Kommun"
@@ -725,21 +797,22 @@ msgstr "Antal"
msgid "Create a report"
msgstr "Skapa en rapport"
-#: templates/web/default/admin/body.html:103
+#: templates/web/default/admin/body.html:179
#: templates/web/zurich/admin/body.html:53
msgid "Create category"
msgstr "Skapa en kategori"
-#: templates/web/default/admin/list_updates.html:10
#: templates/web/default/admin/problem_row.html:34
-#: templates/web/zurich/admin/list_updates.html:7
+#: templates/web/zurich/admin/list_updates.html:29
+#: templates/web/zurich/admin/list_updates.html:8
msgid "Created"
msgstr "Skapad"
+#: templates/web/default/admin/list_updates.html:38
#: templates/web/default/admin/report_edit.html:69
#: templates/web/default/admin/update_edit.html:51
-#: templates/web/zurich/admin/report_edit-sdm.html:47
-#: templates/web/zurich/admin/report_edit.html:62
+#: templates/web/zurich/admin/report_edit-sdm.html:50
+#: templates/web/zurich/admin/report_edit.html:64
#: templates/web/zurich/admin/update_edit.html:29
msgid "Created:"
msgstr "Skapad:"
@@ -748,6 +821,12 @@ msgstr "Skapad:"
msgid "Current state"
msgstr "Nuvarande status"
+#: templates/web/default/admin/bodies.html:7
+#: templates/web/default/admin/index.html:5
+#, fuzzy
+msgid "Currently no bodies have been created."
+msgstr "Inga problem har rapporteras än."
+
#: templates/web/default/dashboard/index.html:5
#: templates/web/default/dashboard/index.html:7
msgid "Dashboard"
@@ -757,8 +836,9 @@ msgstr "Skrivbord"
msgid "Dealt with by subdivision within 5 working days"
msgstr ""
-#: templates/web/default/admin/body.html:38
-#: templates/web/default/admin/body.html:88
+#: templates/web/default/admin/bodies.html:22
+#: templates/web/default/admin/body.html:148
+#: templates/web/default/admin/body.html:56
#: templates/web/default/admin/body_edit.html:37
#: templates/web/default/admin/body_edit.html:85
msgid "Deleted"
@@ -771,8 +851,9 @@ msgid "Description"
msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:54
-#: templates/web/default/js/translation_strings.html:28
+#: templates/web/default/js/translation_strings.html:34
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:66
+#: templates/web/oxfordshire/js/translation_strings.html:28
#: templates/web/seesomething/report/new/fill_in_details_form.html:16
#: templates/web/zurich/report/new/fill_in_details_form.html:42
msgid "Details"
@@ -781,17 +862,17 @@ msgstr "Detaljer"
#: templates/web/default/admin/report_edit.html:20
#: templates/web/default/report/new/fill_in_details_form.html:61
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/admin/report_edit-sdm.html:25
-#: templates/web/zurich/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit.html:36
+#: templates/web/zurich/admin/report_edit-sdm.html:28
+#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit.html:38
msgid "Details:"
msgstr "Detaljer:"
-#: templates/web/default/admin/body.html:39
+#: templates/web/default/admin/body.html:57
msgid "Devolved"
msgstr "Delegerat"
-#: templates/web/default/admin/edit-league.html:1
+#: templates/web/default/admin/edit-league.html:8
msgid "Diligency prize league table"
msgstr "Flitighetstopplistan"
@@ -822,14 +903,22 @@ msgstr "Vet ej"
msgid "Duplicate"
msgstr ""
+#: templates/web/default/admin/body.html:90
+msgid ""
+"Each contact for the body has a category, which is displayed to the public. \n"
+" Different categories <strong>can have the same contact</strong> (email address).\n"
+" This means you can add many categories even if you only have one contact for the body.\n"
+" "
+msgstr ""
+
#: templates/web/default/admin/list_updates.html:42
#: templates/web/default/admin/problem_row.html:41
-#: templates/web/default/admin/users.html:28
-#: templates/web/zurich/admin/problem_row.html:44
+#: templates/web/default/admin/users.html:31
+#: templates/web/zurich/admin/problem_row.html:42
msgid "Edit"
msgstr "Ändra"
-#: templates/web/default/admin/body.html:112
+#: templates/web/default/admin/body.html:189
#: templates/web/zurich/admin/body.html:64
msgid "Edit body details"
msgstr ""
@@ -856,27 +945,31 @@ msgid "Editor"
msgstr "Redaktör"
#: templates/web/bromley/report/display.html:128
-#: templates/web/default/admin/bodies.html:9
-#: templates/web/default/admin/body.html:36
+#: templates/web/default/admin/bodies.html:18
+#: templates/web/default/admin/body.html:54
#: templates/web/default/admin/body_edit.html:83
-#: templates/web/default/admin/flagged.html:29
-#: templates/web/default/admin/list_updates.html:9
-#: templates/web/default/admin/users.html:13
+#: templates/web/default/admin/flagged.html:38
+#: templates/web/default/admin/users.html:16
#: templates/web/fixmystreet/auth/general.html:20
#: templates/web/fixmystreet/report/update-form.html:76
#: templates/web/seesomething/auth/general.html:20
#: templates/web/zurich/admin/body-form.html:9
#: templates/web/zurich/admin/body.html:14
#: templates/web/zurich/auth/general.html:24
-#: templates/web/zurich/auth/general.html:52
+#: templates/web/zurich/auth/general.html:54
msgid "Email"
msgstr "Epost"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1253
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1286
msgid "Email added to abuse list"
msgstr "Epostadressen tillagd till missbrukslistan"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1250
+#: templates/web/default/admin/body.html:126
+#, fuzzy
+msgid "Email address:"
+msgstr "Din epostadress:"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1283
msgid "Email already in abuse list"
msgstr "Epostadressen finns redan i missbrukslistan"
@@ -888,20 +981,19 @@ msgstr "Eposta mig nya problem lokalt"
msgid "Email me updates"
msgstr "Eposta mig uppdateringar"
-#: templates/web/default/admin/body.html:80
#: templates/web/default/admin/body_edit.html:26
#: templates/web/default/admin/report_edit.html:67
#: templates/web/default/admin/update_edit.html:33
-#: templates/web/default/admin/user-form.html:6
+#: templates/web/default/admin/user-form.html:20
#: templates/web/default/alert/updates.html:13
#: templates/web/default/report/display.html:38
#: templates/web/zurich/admin/body.html:41
-#: templates/web/zurich/admin/report_edit-sdm.html:44
-#: templates/web/zurich/admin/report_edit.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:47
+#: templates/web/zurich/admin/report_edit.html:60
msgid "Email:"
msgstr "Epost:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:314
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:318
msgid "Email: %s"
msgstr ""
@@ -929,23 +1021,33 @@ msgstr "Tom pub eller bar"
msgid "Empty public building - school, hospital, etc."
msgstr "Tom publik byggnad - skola, sjukhus, etc."
-#: templates/web/default/admin/stats.html:70
-msgid "End Year:"
-msgstr "Slutår:"
+#: templates/web/default/admin/body-form.html:158
+#: templates/web/default/admin/body-form.html:159
+msgid ""
+"Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive\n"
+" updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.\n"
+" For more information, see \n"
+" <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+msgstr ""
-#: templates/web/default/admin/stats.html:72
-msgid "End day:"
-msgstr "Slutdag:"
+#: templates/web/default/admin/body-form.html:215
+#: templates/web/default/admin/body-form.html:216
+msgid ""
+"Enable this <strong>can be devolved</strong> setting if one or more contacts have a \n"
+" different endpoint (and send method) from the body's. For example, if reports for some categories of\n"
+" problem must be emailed, while others can be sent over Open311."
+msgstr ""
-#: templates/web/default/admin/stats.html:71
-msgid "End month:"
-msgstr "Slutmånad:"
+#: templates/web/default/admin/stats.html:70
+#, fuzzy
+msgid "End Date:"
+msgstr "Slutdag:"
-#: templates/web/default/admin/body-form.html:40
+#: templates/web/default/admin/body-form.html:126
msgid "Endpoint"
msgstr ""
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:30
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:71
msgid "Enter a Z&uuml;rich street name"
msgstr ""
@@ -977,7 +1079,7 @@ msgstr "Ange ett nytt lösenord:"
#: templates/web/fixmystreet/auth/general.html:61
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:211
#: templates/web/fixmystreet/report/update-form.html:122
-#: templates/web/zurich/auth/general.html:63
+#: templates/web/zurich/auth/general.html:65
msgid "Enter a password"
msgstr "Ange ett lösenord"
@@ -1033,6 +1135,10 @@ msgstr "Förnamn"
msgid "First time"
msgstr "Första gången"
+#: templates/web/default/admin/body.html:37
+msgid "Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below."
+msgstr ""
+
#: templates/web/fiksgatami/header.html:16
#: templates/web/fiksgatami/nn/header.html:16
msgid "Fix<span id=\"my\">My</span>Street"
@@ -1066,7 +1172,7 @@ msgstr "FixaMinGata skickar olika kategorier av rapporter till olika enheter ino
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:84
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:41
#: templates/web/default/admin/report_edit.html:42
@@ -1098,17 +1204,34 @@ msgstr "Lösta rapporer"
msgid "Fixed:"
msgstr "Löst:"
+#: templates/web/default/admin/body-form.html:84
+#: templates/web/zurich/admin/body-form.html:36
+msgid "Flag as deleted"
+msgstr ""
+
#: templates/web/default/admin/report_blocks.html:16
msgid "Flag user"
msgstr "Flagga användare"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1149
-#: templates/web/default/admin/users.html:16
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1181
+#: templates/web/default/admin/users.html:19
msgid "Flagged"
msgstr "Flaggat"
+#: templates/web/default/admin/flagged.html:1
+msgid "Flagged reports and users"
+msgstr ""
+
+#: templates/web/default/admin/user-form.html:45
+msgid "Flagged users are listed on the <a href='%s'>flagged</a> page."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:31
+msgid "Flagged users are not restricted in any way. This is just a list of users that have been marked for attention."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:78
-#: templates/web/default/admin/user-form.html:14
+#: templates/web/default/admin/user-form.html:51
msgid "Flagged:"
msgstr "Flaggat:"
@@ -1121,6 +1244,10 @@ msgstr "Följ en länk till ett område för att se rapporter endast inom det om
msgid "For council(s):"
msgstr "För kommuner:"
+#: templates/web/default/admin/body-form.html:65
+msgid "For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>."
+msgstr ""
+
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:176
#: templates/web/fixmystreet/report/update-form.html:104
msgid "Forgotten your password?"
@@ -1177,7 +1304,7 @@ msgstr "Gå"
msgid "Going to send questionnaire?"
msgstr "Skicka enkät?"
-#: templates/web/default/admin/index.html:24
+#: templates/web/default/admin/index.html:32
msgid "Graph of problem creation by status over time"
msgstr "Visualisering av rapporter över tid"
@@ -1200,6 +1327,7 @@ msgstr "Har du någonsin rapporterat ett problem till en kommun tidigare eller
#: templates/web/emptyhomes/header.html:33
#: templates/web/fiksgatami/footer.html:9
#: templates/web/fiksgatami/nn/footer.html:9
+#: templates/web/fixmindelo/footer.html:45
#: templates/web/fixmybarangay/footer.html:24
#: templates/web/fixmystreet/footer.html:52
#: templates/web/oxfordshire/footer.html:27
@@ -1234,8 +1362,8 @@ msgstr "Hej %s"
#: templates/web/default/admin/update_edit.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:11
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:91
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:93
#: templates/web/zurich/admin/stats.html:32
#: templates/web/zurich/admin/update_edit.html:18
msgid "Hidden"
@@ -1253,7 +1381,8 @@ msgstr "Göm pinnar"
msgid "History"
msgstr "Historik"
-#: templates/web/default/js/translation_strings.html:25
+#: templates/web/default/js/translation_strings.html:31
+#: templates/web/oxfordshire/js/translation_strings.html:25
msgid "Home"
msgstr "Home"
@@ -1261,11 +1390,12 @@ msgstr "Home"
msgid "How to report a problem"
msgstr "Hur man rapporterar ett problem"
-#: templates/web/default/js/translation_strings.html:27
+#: templates/web/default/js/translation_strings.html:33
+#: templates/web/oxfordshire/js/translation_strings.html:27
msgid "How to send successful reports"
msgstr "Hur man lyckas bäst med att rapportera fel"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:712
+#: perllib/FixMyStreet/App/Controller/Admin.pm:733
msgid "I am afraid you cannot confirm unconfirmed reports."
msgstr "Tyvärr kan du inte bekräfta obekräftade rapporter"
@@ -1281,16 +1411,30 @@ msgstr "Tyvärr känner vi inte igen den rapporten, troligen eftersom rapporten
msgid "I'm afraid we couldn't validate that token. If you've copied the URL from an email, please check that you copied it exactly.\n"
msgstr "Tyvärr kan vi inte hitta den rapporten. Om du kopierade en länk från ett epost bör du verifiera att du kopierade länken exakt.\n"
-#: templates/web/default/admin/flagged.html:9
+#: templates/web/default/admin/flagged.html:14
#: templates/web/default/admin/list_updates.html:6
#: templates/web/default/admin/reports.html:11
#: templates/web/zurich/admin/index-dm.html:21
#: templates/web/zurich/admin/index-sdm.html:19
-#: templates/web/zurich/admin/list_updates.html:6
+#: templates/web/zurich/admin/list_updates.html:28
+#: templates/web/zurich/admin/list_updates.html:7
#: templates/web/zurich/admin/reports.html:11
msgid "ID"
msgstr "ID"
+#: templates/web/default/admin/body-form.html:24
+#: templates/web/default/admin/body-form.html:25
+msgid ""
+"Identify a <strong>parent</strong> if this body is itself part of another body.\n"
+" For basic installations, you don't need to join bodies in this way."
+msgstr ""
+
+#: templates/web/default/admin/body.html:104
+msgid ""
+"If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in\n"
+" the menu. Make sure you use the same category name in the bodies if you want this to happen."
+msgstr ""
+
#: templates/web/default/email_sent.html:19
msgid "If you do not, your alert will not be activated."
msgstr ""
@@ -1325,6 +1469,33 @@ msgid ""
"your experience of getting the problem fixed?"
msgstr "Om du vill lämna mer information om problemet, ange det här (notera att uppdateringen inte skickas till kommunen). Till exempel, hur upplevde du kommunikationen med kommunen?"
+#: templates/web/default/admin/body.html:120
+msgid "If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:200
+#: templates/web/default/admin/body-form.html:201
+msgid ""
+"If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in \n"
+" its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.\n"
+" Check that your cobrand supports this feature before switching it on."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:187
+#: templates/web/default/admin/body-form.html:188
+msgid ""
+"If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong> \n"
+" if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:173
+#: templates/web/default/admin/body-form.html:174
+msgid ""
+"If you've enabled Open311 update-sending above, you must identify which \n"
+" FixMyStreet <strong>user</strong> will be attributed as the creator of those updates\n"
+" when they are shown on the site. Enter the ID (number) of that user."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Contact.pm:111
msgid "Illegal ID"
msgstr "Ogiltigt ID"
@@ -1344,17 +1515,22 @@ msgstr "Ogiltigt RSS-flöde"
msgid "In Progress"
msgstr "Pågående"
+#: templates/web/default/admin/flagged.html:39
+#, fuzzy
+msgid "In abuse table?"
+msgstr "(Epost i missbrukstabellen)"
+
#: templates/web/default/open311/index.html:90
msgid "In addition, the following attributes that are not part of the Open311 v2 specification are returned: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
msgstr "I tillägg, följande attribut som inte är del av Open311 v2-specifikationen returneras: agency_sent_datetime, title (also returned as part of description), interface_used, comment_count, requestor_name (only present if requestor allowed the name to be shown on this site)."
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:80
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:121
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:38
#: templates/web/fixmystreet/report/banner.html:19
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:8
-#: templates/web/zurich/admin/report_edit.html:100
+#: templates/web/zurich/admin/report_edit.html:102
#: templates/web/zurich/report/banner.html:15
msgid "In progress"
msgstr "Pågående"
@@ -1363,7 +1539,7 @@ msgstr "Pågående"
msgid "Incident Category"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:143
+#: templates/web/zurich/admin/report_edit.html:163
msgid "Include reporter personal details"
msgstr ""
@@ -1375,9 +1551,8 @@ msgstr "Inkludera obekräftade rapporter"
msgid "Incorrect has_photo value \"%s\""
msgstr "Inkorrekt värde för has_photo, \"%s\""
-#: templates/web/zurich/admin/report_edit-sdm.html:55
-#: templates/web/zurich/admin/report_edit.html:82
-msgid "Internal notes:"
+#: templates/web/zurich/admin/list_updates.html:3
+msgid "Internal notes"
msgstr ""
#: templates/web/default/admin/report_edit.html:35
@@ -1389,7 +1564,7 @@ msgstr ""
msgid "Invalid agency_responsible value %s"
msgstr "Inkorrekt värde för agency_responsible, \"%s\""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1064
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1096
msgid "Invalid end date"
msgstr "Inkorrekt slutdatum"
@@ -1397,7 +1572,7 @@ msgstr "Inkorrekt slutdatum"
msgid "Invalid format %s specified."
msgstr "Inkorrekt format %s angivet."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1054
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1092
msgid "Invalid start date"
msgstr "Inkorrekt startdatum"
@@ -1428,7 +1603,7 @@ msgstr "Det är värt att notera att processen ibland kan vara väldigt långsam
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:172
#: templates/web/fixmystreet/report/update-form.html:100
#: templates/web/seesomething/auth/general.html:35
-#: templates/web/zurich/auth/general.html:39
+#: templates/web/zurich/auth/general.html:40
msgid "Keep me signed in on this computer"
msgstr "Behåll mig inloggad på den här datorn"
@@ -1438,7 +1613,7 @@ msgstr "Behåll mig inloggad på den här datorn"
msgid "Last Name"
msgstr "Efternamn"
-#: templates/web/default/admin/body.html:40
+#: templates/web/default/admin/body.html:58
#: templates/web/zurich/admin/body.html:15
msgid "Last editor"
msgstr "Senaste redaktör"
@@ -1451,6 +1626,10 @@ msgstr "Senaste uppdatering:"
msgid "Last&nbsp;update:"
msgstr "Senaste&nbsp;uppdatering:"
+#: templates/web/default/admin/body-form.html:222
+msgid "Leave this blank if all reports to this body should be sent using the same send method (e.g., \"%s\")."
+msgstr ""
+
#: templates/web/default/admin/body.html:14
#: templates/web/default/admin/body.html:16
msgid "List all reported problems"
@@ -1493,6 +1672,7 @@ msgstr "Lokala RSS-flöden och epostbevakningar för '%s'"
#: templates/web/bromley/header.html:79 templates/web/default/footer.html:13
#: templates/web/fiksgatami/footer.html:8
#: templates/web/fiksgatami/nn/footer.html:8
+#: templates/web/fixmindelo/footer.html:43
#: templates/web/fixmybarangay/footer.html:22
#: templates/web/fixmystreet/footer.html:50
#: templates/web/oxfordshire/footer.html:25
@@ -1505,7 +1685,8 @@ msgstr "Lokala rapporter"
msgid "Locate the problem on a map of the area"
msgstr "Lokalisera problemet på en karta över området"
-#: templates/web/default/js/translation_strings.html:37
+#: templates/web/default/js/translation_strings.html:43
+#: templates/web/oxfordshire/js/translation_strings.html:37
msgid "MAP"
msgstr ""
@@ -1513,6 +1694,10 @@ msgstr ""
msgid "Map &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"
msgstr "Karta &copy; <a id=\"osm_link\" href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> och bidragsgivare"
+#: templates/web/default/admin/user-form.html:43
+msgid "Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>."
+msgstr ""
+
#: templates/web/fixmystreet/contact/index.html:98
msgid "Message"
msgstr "Meddelande"
@@ -1537,13 +1722,13 @@ msgstr "Månad"
msgid "More problems nearby"
msgstr "Fler närliggande problem"
-#: templates/web/default/admin/bodies.html:7
-#: templates/web/default/admin/body-form.html:4
-#: templates/web/default/admin/flagged.html:11
-#: templates/web/default/admin/flagged.html:28
-#: templates/web/default/admin/list_updates.html:8
+#: templates/web/default/admin/bodies.html:16
+#: templates/web/default/admin/body-form.html:18
+#: templates/web/default/admin/flagged.html:16
+#: templates/web/default/admin/flagged.html:37
+#: templates/web/default/admin/list_updates.html:7
#: templates/web/default/admin/reports.html:13
-#: templates/web/default/admin/users.html:12
+#: templates/web/default/admin/users.html:15
#: templates/web/default/reports/index.html:15
#: templates/web/emptyhomes/reports/index.html:9
#: templates/web/fiksgatami/nn/reports/index.html:9
@@ -1554,7 +1739,7 @@ msgstr "Fler närliggande problem"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:187
#: templates/web/fixmystreet/report/update-form.html:136
#: templates/web/zurich/admin/body-form.html:4
-#: templates/web/zurich/auth/general.html:58
+#: templates/web/zurich/auth/general.html:60
#: templates/web/zurich/report/new/fill_in_details_form.html:100
msgid "Name"
msgstr "Namn"
@@ -1565,14 +1750,14 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:66
#: templates/web/default/admin/update_edit.html:32
-#: templates/web/default/admin/user-form.html:5
-#: templates/web/zurich/admin/report_edit-sdm.html:43
-#: templates/web/zurich/admin/report_edit.html:57
+#: templates/web/default/admin/user-form.html:18
+#: templates/web/zurich/admin/report_edit-sdm.html:46
+#: templates/web/zurich/admin/report_edit.html:59
#: templates/web/zurich/admin/stats.html:41
msgid "Name:"
msgstr "Namn:"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:313
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:317
msgid "Name: %s"
msgstr ""
@@ -1612,14 +1797,19 @@ msgstr "Nästan klar! Kolla nu din epost."
msgid "New <br>problems"
msgstr "Nya <br>problem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:250
+#: perllib/FixMyStreet/App/Controller/Admin.pm:264
msgid "New body added"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:362
+#: perllib/FixMyStreet/App/Controller/Admin.pm:376
msgid "New category contact added"
msgstr "Nya kategorikontakter tillagda"
+#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit.html:84
+msgid "New internal note:"
+msgstr ""
+
#: db/alert_types.pl:18 db/alert_types.pl:22
msgid "New local problems on FixMyStreet"
msgstr "Nya lokala problem på FixaMinGata"
@@ -1682,7 +1872,7 @@ msgstr "Nya rapporter inom {{NAME}}'s administrativa gräns på reportemptyhomes
msgid "New state"
msgstr "Ny status"
-#: templates/web/zurich/admin/report_edit-sdm.html:58
+#: templates/web/zurich/admin/report_edit-sdm.html:61
msgid "New update:"
msgstr ""
@@ -1696,13 +1886,13 @@ msgstr "Ny!"
msgid "Next"
msgstr ""
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:4
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:64
#: templates/web/default/admin/report_edit.html:77
@@ -1715,7 +1905,7 @@ msgstr ""
msgid "No"
msgstr "Nej"
-#: templates/web/default/admin/user-form.html:8
+#: templates/web/default/admin/user-form.html:33
msgid "No body"
msgstr ""
@@ -1723,23 +1913,25 @@ msgstr ""
msgid "No council"
msgstr "Ingen kommun"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:401
+#: perllib/FixMyStreet/DB/Result/Problem.pm:362
msgid "No council selected"
msgstr "Ingen kommun vald"
-#: templates/web/default/admin/edit-league.html:10
+#: templates/web/default/admin/edit-league.html:17
msgid "No edits have yet been made."
msgstr "Inga ändringar har gjorts"
-#: templates/web/default/admin/flagged.html:20
-msgid "No flagged problems found"
+#: templates/web/default/admin/flagged.html:25
+#, fuzzy
+msgid "No flagged problems found."
msgstr "Inga flaggade problem hittade"
-#: templates/web/default/admin/flagged.html:41
-msgid "No flagged users found"
+#: templates/web/default/admin/flagged.html:58
+#, fuzzy
+msgid "No flagged users found."
msgstr "Inga flaggade användare hittade"
-#: templates/web/zurich/admin/report_edit-sdm.html:65
+#: templates/web/zurich/admin/report_edit-sdm.html:68
msgid "No further updates"
msgstr ""
@@ -1753,25 +1945,42 @@ msgstr "Inga poblem hittade."
msgid "No problems have been reported yet."
msgstr "Inga problem har rapporteras än."
-#: templates/web/default/js/translation_strings.html:32
+#: templates/web/default/js/translation_strings.html:38
+#: templates/web/oxfordshire/js/translation_strings.html:32
msgid "No result returned"
msgstr "Inget resultat returnerades"
+#: templates/web/default/admin/body-form.html:60
+#: templates/web/default/admin/body-form.html:61
+msgid ""
+"No specific areas are currently available, because the <code>MAPIT_URL</code> in\n"
+" your config file is not pointing to a live MapIt service."
+msgstr ""
+
#: templates/web/default/report/_support.html:2
#: templates/web/default/report/_support.html:4
msgid "No supporters"
msgstr "Inga supporters"
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:73
msgid "Non Public"
msgstr "Icke-publikt"
#: templates/web/default/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
msgid "None"
msgstr "Inget"
+#: templates/web/default/admin/user-form.html:24
+#: templates/web/default/admin/user-form.html:25
+msgid ""
+"Normal (public) users should not be associated with any <strong>body</strong>.<br>\n"
+" Authorised staff users can be associated with the body they represent.<br>\n"
+" Depending on the implementation, staff users may have access to the dashboard (summary of\n"
+" activity across their body), the ability to hide reports or set special report statuses."
+msgstr ""
+
#: templates/web/bromley/report/display.html:80
#: templates/web/bromley/report/display.html:83
#: templates/web/default/admin/report_edit.html:35
@@ -1791,11 +2000,11 @@ msgstr ""
msgid "Not reported before"
msgstr "Ej rapporterat tidigare"
-#: templates/web/default/report/_main.html:14
+#: templates/web/default/report/_main.html:10
msgid "Not reported to council"
msgstr "Ej rapporterat till kommunen"
-#: templates/web/default/admin/body.html:41
+#: templates/web/default/admin/body.html:59
#: templates/web/default/admin/body_edit.html:87
#: templates/web/zurich/admin/body.html:16
msgid "Note"
@@ -1805,7 +2014,7 @@ msgstr "Observera"
msgid "Note that when including unconfirmed reports we use the date the report was created which may not be in the same month the report was confirmed so the numbers may jump about a little"
msgstr "Observera att när vi listar obegräftade rapporter använder vi datumet när rapporten skapades, vilket inte nödvändigtvis är samma månad som när rapporten bekräftades, så vissa avvikelser kan uppstå."
-#: templates/web/default/admin/body.html:92
+#: templates/web/default/admin/body.html:157
#: templates/web/default/admin/body_edit.html:44
#: templates/web/zurich/admin/body.html:47
msgid "Note:"
@@ -1831,7 +2040,8 @@ msgstr "För att skicka din uppdatering&hellip;"
msgid "Now to submit your update&hellip; do you have a FixMyStreet password?"
msgstr "För att skicka din uppdatering&hellip; har du ett lösenord för FixaMinGata?"
-#: templates/web/default/js/translation_strings.html:36
+#: templates/web/default/js/translation_strings.html:42
+#: templates/web/oxfordshire/js/translation_strings.html:36
msgid "OK"
msgstr ""
@@ -1875,7 +2085,7 @@ msgstr "Äldre lösta problem"
msgid "Older problems"
msgstr "Äldre problem"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:74
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:115
#: templates/web/bromley/report/display.html:80
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:36
@@ -1886,8 +2096,8 @@ msgstr "Äldre problem"
#: templates/web/fixmystreet/report/update-form.html:28
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:7
-#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:91
#: templates/web/zurich/admin/update_edit.html:18
#: templates/web/zurich/report/banner.html:11
msgid "Open"
@@ -1919,15 +2129,15 @@ msgstr "Eller problem rapporterade til:"
msgid "Or you can subscribe to an alert based upon what ward or council you&rsquo;re in:"
msgstr "Du kan också prenumerera på bevakningar baserat på vilken kommun du bor i:"
-#: perllib/FixMyStreet/App/Controller/Report/New.pm:1046
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:1053
#: perllib/FixMyStreet/App/Controller/Report/New.pm:664
#: perllib/FixMyStreet/App/Controller/Report/New.pm:665
-#: perllib/FixMyStreet/DB/Result/Problem.pm:578
-#: perllib/FixMyStreet/DB/Result/Problem.pm:588
-#: perllib/FixMyStreet/DB/Result/Problem.pm:598
-#: perllib/FixMyStreet/DB/Result/Problem.pm:610
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:357
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
+#: perllib/FixMyStreet/DB/Result/Problem.pm:544
+#: perllib/FixMyStreet/DB/Result/Problem.pm:554
+#: perllib/FixMyStreet/DB/Result/Problem.pm:564
+#: perllib/FixMyStreet/DB/Result/Problem.pm:576
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:361
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
msgid "Other"
msgstr "Övrig"
@@ -1935,7 +2145,7 @@ msgstr "Övrig"
msgid "Our code is open source and <a href=\"http://github.com/mysociety/fixmystreet\">available on GitHub</a>."
msgstr "FixaMinGata är öppen programvara och <a href=\"http://github.com/MorusAB/fixmystreet\">tillgänglig på GitHub</a>."
-#: templates/web/default/admin/list_updates.html:12
+#: templates/web/default/admin/list_updates.html:8
msgid "Owner"
msgstr "Ägare"
@@ -1944,8 +2154,8 @@ msgstr "Ägare"
msgid "Page Not Found"
msgstr "Sidan hittas ej"
-#: templates/web/default/admin/body-form.html:9
-#: templates/web/zurich/admin/body-form.html:15
+#: templates/web/default/admin/body-form.html:31
+#: templates/web/zurich/admin/body-form.html:14
msgid "Parent"
msgstr ""
@@ -1960,7 +2170,7 @@ msgstr "Partiell"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:208
#: templates/web/fixmystreet/report/update-form.html:119
#: templates/web/zurich/auth/general.html:32
-#: templates/web/zurich/auth/general.html:61
+#: templates/web/zurich/auth/general.html:63
msgid "Password (optional)"
msgstr "Lösenord (valfritt)"
@@ -1968,25 +2178,29 @@ msgstr "Lösenord (valfritt)"
msgid "Password:"
msgstr "Lösenord:"
-#: templates/web/default/js/translation_strings.html:39
+#: templates/web/default/js/translation_strings.html:45
msgid "Permalink"
msgstr ""
+#: templates/web/zurich/report/new/fill_in_details_form.html:106
+#, fuzzy
+msgid "Phone number"
+msgstr "Ditt telefonnummer"
+
#: templates/web/bromley/report/new/fill_in_details_form.html:136
#: templates/web/bromley/report/new/fill_in_details_form.html:183
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:138
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:205
#: templates/web/seesomething/report/new/fill_in_details_form.html:89
-#: templates/web/zurich/report/new/fill_in_details_form.html:106
msgid "Phone number (optional)"
msgstr "Telefonnummer (valfritt)"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:278
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:282
#: templates/web/default/admin/report_edit.html:68
#: templates/web/default/report/new/fill_in_details_form.html:215
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:138
-#: templates/web/zurich/admin/report_edit-sdm.html:46
-#: templates/web/zurich/admin/report_edit.html:61
+#: templates/web/zurich/admin/report_edit-sdm.html:49
+#: templates/web/zurich/admin/report_edit.html:63
#: templates/web/zurich/admin/stats.html:39
msgid "Phone:"
msgstr "Telefonnummer:"
@@ -1998,6 +2212,7 @@ msgstr "Telefonnummer:"
#: templates/web/seesomething/report/new/fill_in_details_form.html:52
#: templates/web/zurich/admin/index-dm.html:29
#: templates/web/zurich/admin/index-sdm.html:24
+#: templates/web/zurich/admin/reports.html:16
#: templates/web/zurich/admin/stats.html:37
#: templates/web/zurich/report/new/fill_in_details_form.html:68
msgid "Photo"
@@ -2015,7 +2230,8 @@ msgstr "Foto:"
msgid "Photos of recent nearby reports"
msgstr "Foton från närliggande rapporter"
-#: templates/web/default/js/translation_strings.html:24
+#: templates/web/default/js/translation_strings.html:30
+#: templates/web/oxfordshire/js/translation_strings.html:24
msgid "Place pin on map"
msgstr "Klicka på kartan"
@@ -2026,8 +2242,8 @@ msgstr "Klicka på kartan"
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:9
#: templates/web/zurich/admin/index-dm.html:9
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:90
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:92
msgid "Planned"
msgstr "Planerat"
@@ -2065,12 +2281,13 @@ msgstr "Vänligen kontrollera att din epostadress är korrekt"
#: perllib/FixMyStreet/App/Controller/Report/New.pm:855
#: perllib/FixMyStreet/App/Controller/Report/New.pm:874
#: perllib/FixMyStreet/App/Controller/Report/New.pm:917
-#: perllib/FixMyStreet/DB/Result/Problem.pm:420
+#: perllib/FixMyStreet/DB/Result/Problem.pm:381
#: templates/web/default/js/translation_strings.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:9
msgid "Please choose a category"
msgstr "Vänligen välj en kategori"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:426
+#: perllib/FixMyStreet/DB/Result/Problem.pm:387
msgid "Please choose a property type"
msgstr "Vänligen välj en fastighetstyp"
@@ -2103,25 +2320,32 @@ msgstr ""
msgid "Please do not give address or personal information in this section."
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Comment.pm:145
+#: perllib/FixMyStreet/DB/Result/Comment.pm:126
#: templates/web/default/js/translation_strings.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:2
msgid "Please enter a message"
msgstr "Vänligen skriv in ett meddelande"
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:15
+#: templates/web/default/js/translation_strings.html:19
msgid "Please enter a password"
msgstr "Vänligen skriv in ett lösenord"
#: perllib/FixMyStreet/App/Controller/Contact.pm:97
-#: perllib/FixMyStreet/DB/Result/Problem.pm:395
+#: perllib/FixMyStreet/DB/Result/Problem.pm:356
#: templates/web/default/js/translation_strings.html:3
+#: templates/web/oxfordshire/js/translation_strings.html:3
msgid "Please enter a subject"
msgstr "Vänligen skriv in ett ärende"
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1032
+#: perllib/FixMyStreet/App/Controller/Admin.pm:979
#: perllib/FixMyStreet/DB/Result/User.pm:115
#: templates/web/default/js/translation_strings.html:12
#: templates/web/default/js/translation_strings.html:16
+#: templates/web/oxfordshire/js/translation_strings.html:12
+#: templates/web/oxfordshire/js/translation_strings.html:16
#: templates/web/seesomething/js/translation_strings.html:10
#: templates/web/seesomething/js/translation_strings.html:13
msgid "Please enter a valid email"
@@ -2132,8 +2356,9 @@ msgstr "Vänligen skriv in en giltig epostadress"
msgid "Please enter a valid email address"
msgstr "Vänligen skriv in en giltig epostadress"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:398
+#: perllib/FixMyStreet/DB/Result/Problem.pm:359
#: templates/web/default/js/translation_strings.html:4
+#: templates/web/oxfordshire/js/translation_strings.html:4
#: templates/web/seesomething/js/translation_strings.html:2
msgid "Please enter some details"
msgstr "Vänligen skriv några detaljer"
@@ -2146,6 +2371,8 @@ msgstr "Vänligen skriv några detaljer"
#: templates/web/default/js/translation_strings.html:15
#: templates/web/fixmystreet/auth/general.html:14
#: templates/web/fixmystreet/auth/general.html:9
+#: templates/web/oxfordshire/js/translation_strings.html:11
+#: templates/web/oxfordshire/js/translation_strings.html:15
#: templates/web/seesomething/auth/general.html:14
#: templates/web/seesomething/auth/general.html:9
#: templates/web/seesomething/js/translation_strings.html:9
@@ -2161,29 +2388,39 @@ msgstr "Vänligen skriv in din epostadress"
msgid "Please enter your email address"
msgstr "Vänligen skriv in din epostadress"
-#: templates/web/default/js/translation_strings.html:19
+#: templates/web/default/js/translation_strings.html:25
+#: templates/web/oxfordshire/js/translation_strings.html:19
msgid "Please enter your first name"
msgstr "Vänligen skriv in ditt förnamn"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:413
+#: perllib/FixMyStreet/DB/Result/Problem.pm:374
#: templates/web/default/js/translation_strings.html:7
+#: templates/web/oxfordshire/js/translation_strings.html:7
#: templates/web/seesomething/js/translation_strings.html:4
msgid "Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below"
msgstr "Skriv in ditt namn och efternamn om kommunen behöver den informationen. Om du inte vill att dit namn visas kan du välja det nedanför"
#: perllib/FixMyStreet/App/Controller/Contact.pm:95
-#: perllib/FixMyStreet/DB/Result/Comment.pm:142
-#: perllib/FixMyStreet/DB/Result/Problem.pm:406
+#: perllib/FixMyStreet/DB/Result/Comment.pm:123
+#: perllib/FixMyStreet/DB/Result/Problem.pm:367
#: perllib/FixMyStreet/DB/Result/User.pm:108
#: templates/web/default/js/translation_strings.html:6
+#: templates/web/oxfordshire/js/translation_strings.html:6
msgid "Please enter your name"
msgstr "Vänligen skriv in ditt namn och efternamn"
-#: templates/web/default/js/translation_strings.html:20
+#: templates/web/default/js/translation_strings.html:22
+#, fuzzy
+msgid "Please enter your phone number"
+msgstr "Vänligen skriv in ditt efternamn"
+
+#: templates/web/default/js/translation_strings.html:26
+#: templates/web/oxfordshire/js/translation_strings.html:20
msgid "Please enter your second name"
msgstr "Vänligen skriv in ditt efternamn"
-#: templates/web/default/js/translation_strings.html:18
+#: templates/web/default/js/translation_strings.html:24
+#: templates/web/oxfordshire/js/translation_strings.html:18
msgid "Please enter your title"
msgstr "Vänligen skriv in din titel"
@@ -2302,11 +2539,11 @@ msgstr "Ange om problemet har lösts eller ej"
msgid "Please take a look at the updates that have been left."
msgstr "Titta på de uppdateringar som har lämnats."
-#: perllib/FixMyStreet/App/Controller/Photo.pm:174
+#: perllib/FixMyStreet/App/Controller/Photo.pm:176
msgid "Please upload a JPEG image only"
msgstr "Ladda upp en JPEG-bild"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:181
+#: perllib/FixMyStreet/App/Controller/Photo.pm:183
msgid "Please upload a JPEG image only\n"
msgstr "Ladda upp en JPEG-bild\n"
@@ -2349,7 +2586,7 @@ msgstr "Postat av %s %s"
msgid "Previous"
msgstr ""
-#: templates/web/default/admin/body.html:97
+#: templates/web/default/admin/body.html:173
#: templates/web/default/admin/body_edit.html:40
#: templates/web/default/admin/report_edit.html:79
msgid "Private"
@@ -2375,12 +2612,12 @@ msgstr "Rapport %s bekräftad"
msgid "Problem %s sent to council %s"
msgstr "Rapport %s skickad till %s"
-#: templates/web/default/admin/index.html:28
+#: templates/web/default/admin/index.html:36
#: templates/web/zurich/admin/index.html:9
msgid "Problem breakdown by state"
msgstr "Rapporter per status"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:929
+#: perllib/FixMyStreet/App/Controller/Admin.pm:950
msgid "Problem marked as open."
msgstr "Problemet markerat som öppet."
@@ -2388,7 +2625,7 @@ msgstr "Problemet markerat som öppet."
msgid "Problem state change based on survey results"
msgstr "Problemets status ändrats baserat på undersökningsresultat"
-#: templates/web/default/admin/flagged.html:5
+#: templates/web/default/admin/flagged.html:10
msgid "Problems"
msgstr "Problem"
@@ -2464,9 +2701,8 @@ msgid "Provide an update"
msgstr "Ge en uppdatering"
#: templates/web/fixmystreet/auth/general.html:53
-#, fuzzy
msgid "Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
-msgstr "Att ange ett lösenord är valfritt, men om du gör det kommer du lättare att kunna rapportera problem, lämna uppdateringar och hantera dina anmälningar."
+msgstr ""
#: templates/web/bromley/report/new/fill_in_details_form.html:180
msgid "Providing a password is optional, but doing so will allow you to more easily report future problems, leave updates and manage your reports."
@@ -2480,8 +2716,8 @@ msgstr "Att ange ett lösenord är valfritt, men om du gör det kommer du lätta
msgid "Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports."
msgstr "Att ange ett lösenord är valfritt, men om du gör det kommer du lättare att kunna rapportera problem, lämna uppdateringar och hantera dina anmälningar."
-#: templates/web/default/admin/body.html:42
-#: templates/web/default/admin/body.html:55
+#: templates/web/default/admin/body.html:60
+#: templates/web/default/admin/body.html:73
msgid "Public"
msgstr "Publikt"
@@ -2489,17 +2725,17 @@ msgstr "Publikt"
msgid "Public information (shown on site)"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:178
-#: templates/web/zurich/admin/report_edit.html:194
+#: templates/web/zurich/admin/report_edit.html:198
+#: templates/web/zurich/admin/report_edit.html:214
msgid "Public response:"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:78
+#: templates/web/zurich/admin/report_edit.html:80
#: templates/web/zurich/admin/stats.html:38
msgid "Publish photo"
msgstr ""
-#: templates/web/zurich/admin/report_edit.html:202
+#: templates/web/zurich/admin/report_edit.html:222
msgid "Publish the response"
msgstr ""
@@ -2647,6 +2883,7 @@ msgstr "Rapportera tomma fastigheter"
#: templates/web/default/footer.html:7 templates/web/emptyhomes/header.html:31
#: templates/web/fiksgatami/footer.html:5
#: templates/web/fiksgatami/nn/footer.html:5
+#: templates/web/fixmindelo/footer.html:37
#: templates/web/fixmystreet/footer.html:44
#: templates/web/oxfordshire/footer.html:19
#: templates/web/reading/footer.html:6
@@ -2687,7 +2924,7 @@ msgstr "Rapporterade %s"
msgid "Reported %s, to %s"
msgstr "Rapporterat %s till %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:593
+#: perllib/FixMyStreet/DB/Result/Problem.pm:559
#: templates/web/default/contact/index.html:45
#: templates/web/fixmystreet/contact/index.html:58
msgid "Reported anonymously at %s"
@@ -2699,42 +2936,42 @@ msgstr "Rapporterat anonymt %s"
msgid "Reported before"
msgstr "Rapporterat tidigare"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:585
-msgid "Reported by %s anonymously at %s"
-msgstr "Rapporterat av %s anonymt %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:616
+#: perllib/FixMyStreet/DB/Result/Problem.pm:582
#: templates/web/default/contact/index.html:47
#: templates/web/fixmystreet/contact/index.html:60
msgid "Reported by %s at %s"
msgstr "Rapporterat av %s den %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:607
-msgid "Reported by %s by %s at %s"
-msgstr "Rapporterat av %s av %s den %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:581
-msgid "Reported by %s in the %s category anonymously at %s"
-msgstr "Rapporterat av %s i kategorin %s, anonymt %s"
-
-#: perllib/FixMyStreet/DB/Result/Problem.pm:601
-msgid "Reported by %s in the %s category by %s at %s"
-msgstr "Rapporterat av %s i kategorin %s, anonymt av %s den %s"
-
#: templates/web/zurich/report/_main.html:2
msgid "Reported in the %s category"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:589
+#: perllib/FixMyStreet/DB/Result/Problem.pm:555
msgid "Reported in the %s category anonymously at %s"
msgstr "Anonym rapport i kategori %s, %s"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:611
+#: perllib/FixMyStreet/DB/Result/Problem.pm:577
msgid "Reported in the %s category by %s at %s"
msgstr "Rapporterat i kategori %s av %s den %s"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:551
+msgid "Reported via %s anonymously at %s"
+msgstr "Rapporterat av %s anonymt %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:573
+msgid "Reported via %s by %s at %s"
+msgstr "Rapporterat av %s av %s den %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:547
+msgid "Reported via %s in the %s category anonymously at %s"
+msgstr "Rapporterat av %s i kategorin %s, anonymt %s"
+
+#: perllib/FixMyStreet/DB/Result/Problem.pm:567
+msgid "Reported via %s in the %s category by %s at %s"
+msgstr "Rapporterat av %s i kategorin %s, anonymt av %s den %s"
+
#: templates/web/default/around/around_index.html:1
-#: templates/web/default/js/translation_strings.html:35
+#: templates/web/default/js/translation_strings.html:41
#: templates/web/default/report/new/fill_in_details.html:0
#: templates/web/default/report/new/fill_in_details.html:3
#: templates/web/default/report/new/fill_in_details_form.html:1
@@ -2743,21 +2980,23 @@ msgstr "Rapporterat i kategori %s av %s den %s"
#: templates/web/fixmystreet/report/new/fill_in_details.html:0
#: templates/web/fixmystreet/report/new/fill_in_details.html:5
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:2
+#: templates/web/oxfordshire/js/translation_strings.html:35
#: templates/web/seesomething/around/around_index.html:1
#: templates/web/seesomething/report/new/fill_in_details_form.html:3
#: templates/web/zurich/report/new/fill_in_details_form.html:2
msgid "Reporting a problem"
msgstr "Rapportera ett problem"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1145
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:201
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1177
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:242
#: templates/web/seesomething/admin/stats.html:1
#: templates/web/zurich/header.html:60
msgid "Reports"
msgstr ""
-#: perllib/FixMyStreet/DB/Result/Problem.pm:432
-msgid "Reports are limited to 2000 characters in length. Please shorten your report"
+#: perllib/FixMyStreet/DB/Result/Problem.pm:393
+#: perllib/FixMyStreet/DB/Result/Problem.pm:397
+msgid "Reports are limited to %s characters in length. Please shorten your report"
msgstr ""
#: templates/web/zurich/admin/index-sdm.html:7
@@ -2776,7 +3015,8 @@ msgstr ""
msgid "Resend report"
msgstr "Skicka om rapporten"
-#: templates/web/default/js/translation_strings.html:22
+#: templates/web/default/js/translation_strings.html:28
+#: templates/web/oxfordshire/js/translation_strings.html:22
msgid "Right place?"
msgstr ""
@@ -2788,16 +3028,16 @@ msgstr "Vägoperatör för den här namngivna vägen (hämtat från vägens numm
msgid "Road operator for this named road (from OpenStreetMap): %s"
msgstr "Vägoperatör för den här namngivna vägen (från OpenStreetMap): %s"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1355
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1388
#: templates/web/default/admin/report_edit.html:85
-#: templates/web/zurich/admin/report_edit.html:74
+#: templates/web/zurich/admin/report_edit.html:76
msgid "Rotate Left"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1344
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1377
#: templates/web/default/admin/report_edit.html:86
-#: templates/web/zurich/admin/report_edit.html:75
+#: templates/web/zurich/admin/report_edit.html:77
msgid "Rotate Right"
msgstr ""
@@ -2805,7 +3045,6 @@ msgstr ""
msgid "Save changes"
msgstr "Spara ändringar"
-#: templates/web/default/admin/flagged.html:1
#: templates/web/default/admin/reports.html:1
#: templates/web/zurich/admin/reports.html:1
msgid "Search Reports"
@@ -2820,18 +3059,27 @@ msgid "Search reports"
msgstr ""
#: templates/web/default/admin/reports.html:5
-#: templates/web/default/admin/users.html:5
+#: templates/web/default/admin/users.html:8
#: templates/web/zurich/admin/reports.html:5
msgid "Search:"
msgstr "Sök:"
-#: templates/web/default/admin/body-form.html:11
-#: templates/web/zurich/admin/body-form.html:17
+#: templates/web/default/admin/reports.html:26
+#, fuzzy
+msgid "Searching found no reports."
+msgstr "Sök rapporter"
+
+#: templates/web/default/admin/users.html:39
+msgid "Searching found no users."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:33
+#: templates/web/zurich/admin/body-form.html:16
msgid "Select a body"
msgstr ""
-#: templates/web/default/admin/body-form.html:21
-#: templates/web/zurich/admin/body-form.html:27
+#: templates/web/default/admin/body-form.html:71
+#: templates/web/zurich/admin/body-form.html:26
msgid "Select an area"
msgstr ""
@@ -2840,7 +3088,7 @@ msgstr ""
msgid "Select which type of alert you'd like and click the button for an RSS feed, or enter your email address to subscribe to an email alert."
msgstr "Välj vilken kategori av rapporter du vill få och klicka knappen för ett RSS-flöde eller ange din epostadress för att prenumerera via epost."
-#: perllib/FixMyStreet/DB/Result/Problem.pm:698
+#: perllib/FixMyStreet/DB/Result/Problem.pm:664
msgid "Sent to %s %s later"
msgstr "Skickades till %s, %s senare"
@@ -2931,6 +3179,13 @@ msgstr "Inloggad som %s"
msgid "Some categories may require additional information."
msgstr "Vissa kategorier kan kräva ytterligare information."
+#: templates/web/default/admin/body-form.html:145
+#: templates/web/default/admin/body-form.html:146
+msgid ""
+"Some endpoints require an <strong>API key</strong> to indicate that the reports are being\n"
+" sent from your FixMyStreet installation."
+msgstr ""
+
#: templates/web/default/alert/index.html:42
#: templates/web/fixmybarangay/alert/index.html:32
msgid "Some photos of recent reports"
@@ -2968,20 +3223,13 @@ msgid "Source code"
msgstr "Källkod"
#: templates/web/default/admin/stats.html:64
-msgid "Start Year:"
-msgstr "Startår:"
-
-#: templates/web/default/admin/stats.html:66
-msgid "Start day:"
+#, fuzzy
+msgid "Start Date:"
msgstr "Startdag:"
-#: templates/web/default/admin/stats.html:65
-msgid "Start month:"
-msgstr "Startmånad:"
-
#: templates/web/bromley/report/display.html:78
-#: templates/web/default/admin/flagged.html:13
-#: templates/web/default/admin/list_updates.html:7
+#: templates/web/default/admin/flagged.html:18
+#: templates/web/default/admin/list_updates.html:11
#: templates/web/default/admin/reports.html:15
#: templates/web/fixmystreet/report/update-form.html:26
msgid "State"
@@ -2990,14 +3238,14 @@ msgstr "Status"
#: templates/web/default/admin/report_edit.html:34
#: templates/web/default/admin/update_edit.html:27
#: templates/web/default/report/update-form.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:53
-#: templates/web/zurich/admin/report_edit.html:85
+#: templates/web/zurich/admin/report_edit-sdm.html:56
+#: templates/web/zurich/admin/report_edit.html:87
#: templates/web/zurich/admin/update_edit.html:17
msgid "State:"
msgstr "Status:"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1150
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:216
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1182
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:257
#: templates/web/default/admin/stats.html:1
#: templates/web/zurich/admin/stats.html:1 templates/web/zurich/header.html:72
msgid "Stats"
@@ -3013,7 +3261,7 @@ msgstr ""
msgid "Still open, via questionnaire, %s"
msgstr "Fortfarande öppen, via frågeformulär, %s"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:366
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:370
msgid "Subcategory: %s"
msgstr ""
@@ -3031,7 +3279,7 @@ msgstr "Ärende"
#: templates/web/default/contact/index.html:83
#: templates/web/default/report/new/fill_in_details_form.html:52
#: templates/web/emptyhomes/report/new/fill_in_details_form.html:70
-#: templates/web/zurich/admin/report_edit.html:35
+#: templates/web/zurich/admin/report_edit.html:37
msgid "Subject:"
msgstr "Ärende:"
@@ -3047,15 +3295,15 @@ msgstr "Ärende:"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:167
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:212
#: templates/web/seesomething/report/new/fill_in_details_form.html:93
-#: templates/web/zurich/report/new/fill_in_details_form.html:111
+#: templates/web/zurich/report/new/fill_in_details_form.html:114
msgid "Submit"
msgstr "Skicka"
#: templates/web/default/admin/report_edit.html:92
#: templates/web/default/admin/update_edit.html:60
-#: templates/web/default/admin/user-form.html:17
-#: templates/web/zurich/admin/report_edit-sdm.html:64
-#: templates/web/zurich/admin/report_edit.html:204
+#: templates/web/default/admin/user-form.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:67
+#: templates/web/zurich/admin/report_edit.html:224
#: templates/web/zurich/admin/update_edit.html:38
msgid "Submit changes"
msgstr "Skicka förändringar"
@@ -3065,14 +3313,14 @@ msgstr "Skicka förändringar"
msgid "Submit questionnaire"
msgstr "Skicka frågeformulär"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:70
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:111
#: templates/web/zurich/admin/header.html:1
#: templates/web/zurich/admin/header.html:6
#: templates/web/zurich/admin/index-dm.html:23
#: templates/web/zurich/admin/index-dm.html:6
#: templates/web/zurich/admin/index-sdm.html:21
-#: templates/web/zurich/admin/report_edit.html:87
-#: templates/web/zurich/admin/report_edit.html:88
+#: templates/web/zurich/admin/report_edit.html:89
+#: templates/web/zurich/admin/report_edit.html:90
#: templates/web/zurich/admin/reports.html:13
#: templates/web/zurich/report/banner.html:9
msgid "Submitted"
@@ -3096,8 +3344,8 @@ msgstr "Prenumerera med epost"
msgid "Subscribe to an alert based upon what baranagay you&rsquo;re in:"
msgstr "Prenumerera på rapporter baserat på vilket baranagay du är i"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1143
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:200
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1175
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:241
#: templates/web/default/admin/index.html:1
#: templates/web/zurich/admin/index-dm.html:1
#: templates/web/zurich/admin/index-sdm.html:1
@@ -3116,7 +3364,7 @@ msgstr "Summering"
msgid "Summary reports"
msgstr "Sammanställningsrapporter"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1147
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1179
msgid "Survey"
msgstr ""
@@ -3124,8 +3372,9 @@ msgstr ""
msgid "Survey Results"
msgstr "Frågeresultat"
-#: templates/web/default/admin/list_updates.html:15
-#: templates/web/zurich/admin/list_updates.html:8
+#: templates/web/default/admin/list_updates.html:12
+#: templates/web/zurich/admin/list_updates.html:10
+#: templates/web/zurich/admin/list_updates.html:31
msgid "Text"
msgstr "Text"
@@ -3178,7 +3427,7 @@ msgstr "Tack för din återkoppling. Vi återkommer så snart vi kan!"
msgid "Thanks, glad to hear it's been fixed! Could we just ask if you have ever reported a problem to a council before?"
msgstr "Tack, vi är glada över att det har blivit åtgärdat. Har du rapporterat ett problem till en kommun tidigare?"
-#: perllib/FixMyStreet/App/Controller/Photo.pm:188
+#: perllib/FixMyStreet/App/Controller/Photo.pm:190
msgid "That image doesn't appear to have uploaded correctly (%s), please try again."
msgstr "Bilden verkar inte ha laddats upp korrekt (%s), var vänlig försök igen."
@@ -3195,7 +3444,7 @@ msgstr "Den positionen verkar inte vara i Sverige: försök gärna igen."
msgid "That postcode was not recognised, sorry."
msgstr "Det postnummret finns tyvärr inte."
-#: perllib/FixMyStreet/App/Controller/Admin.pm:683
+#: perllib/FixMyStreet/App/Controller/Admin.pm:704
msgid "That problem will now be resent."
msgstr "Rapportern kommer nu att skickas om."
@@ -3207,10 +3456,44 @@ msgstr ""
msgid "That report has been removed from FixMyStreet."
msgstr "Rapporten har tagits bort från FixaMinGata."
+#: templates/web/default/admin/body.html:115
+msgid ""
+"The <strong>email address</strong> is the destination to which reports about this category will be sent. \n"
+" Other categories for this body may have the same email address."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:119
+#: templates/web/default/admin/body-form.html:120
+msgid ""
+"The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to \n"
+" when sending reports to this body."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:132
+#: templates/web/default/admin/body-form.html:133
+msgid ""
+"The <strong>jurisdiction</strong> is only needed if the endpoint is serving more\n"
+" than one. If the body is running its own endpoint, you can usually leave this blank."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:90
+#: templates/web/default/admin/body-form.html:91
+msgid ""
+"The <strong>send method</strong> determines how problem reports will be sent to the body.\n"
+" If you leave this blank, <strong>send method defaults to email</strong>."
+msgstr ""
+
#: templates/web/default/open311/index.html:92
msgid "The Open311 v2 attribute agency_responsible is used to list the administrations that received the problem report, which is not quite the way the attribute is defined in the Open311 v2 specification."
msgstr "Open311 v2-attributet agency_responsible används för att lista de administrationer som tagit emot problemrapporten, vilket inte exakt är hur attributet definieras i Open311 v2-specifikationen."
+#: templates/web/default/admin/body-form.html:11
+#: templates/web/default/admin/body-form.html:12
+msgid ""
+"The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)\n"
+" and may be displayed publically."
+msgstr ""
+
#: templates/web/default/auth/token.html:19
#: templates/web/default/email_sent.html:6
msgid "The confirmation email <strong>may</strong> take a few minutes to arrive &mdash; <em>please</em> be patient."
@@ -3229,6 +3512,11 @@ msgstr "Information om ditt problem kan du se i fliken \"Din rapport\" ovan."
msgid "The details of your problem are available on the right hand side of this page."
msgstr "Detaljerna för ditt problem kan nu ses på höger sida av den här sidan."
+#: templates/web/default/admin/edit-league.html:3
+#: templates/web/default/admin/edit-league.html:4
+msgid "The diligency prize league table shows editors' activity (who's been editing the most records)."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Dashboard.pm:60
#: perllib/FixMyStreet/App/Controller/Reports.pm:72
msgid "The error was: %s"
@@ -3287,6 +3575,10 @@ msgstr "De senaste rapporterna för {{COUNCIL}} inom {{WARD}} rapporterade från
msgid "The latest reports within {{NAME}}'s boundary reported by users"
msgstr "De senaste rapporterna inom {{NAME}}'s gräns rapporterade från användare"
+#: templates/web/default/admin/body-form.html:58
+msgid "The list of available areas is being provided by the MapIt service at %s."
+msgstr ""
+
#: templates/web/default/auth/change_password.html:12
#: templates/web/default/auth/change_password.html:16
msgid "The passwords do not match"
@@ -3311,10 +3603,17 @@ msgstr "Vår enklaste bevakning är för rapporter inom ett geografiskt område:
msgid "The subject and details of the problem will be public, plus your name if you give us permission."
msgstr "Informationen du anger här kommer att bli en offentlig handling när rapporten skickats till kommunen och kommer samtidigt att visas publikt på Fixa Min Gata. Ditt namn kommer dock att visas endast om du medger att vi visar det."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:287
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:291
msgid "The user could not locate the problem on a map, but to see the area around the location they entered"
msgstr "Användaren kunde inte lokalisera problemet på kartan men angav en area inom vilket problemet finns"
+#: templates/web/default/admin/user-form.html:12
+#: templates/web/default/admin/user-form.html:13
+msgid ""
+"The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.\n"
+" Names are not necessarily unique."
+msgstr ""
+
#: perllib/FixMyStreet/App/Controller/Reports.pm:69
msgid "There was a problem showing the All Reports page. Please try again later."
msgstr "Det uppstod ett problem med att visa sidan med alla rapporter. Försök gärna igen senare."
@@ -3349,19 +3648,48 @@ msgstr "Det uppstod ett problem med din rapport. Se nedan."
msgid "There were problems with your update. Please see below."
msgstr "Det uppstod ett problem med din uppdatering. Se nedan."
+#: templates/web/default/admin/body-form.html:108
+#: templates/web/default/admin/body-form.html:109
+msgid ""
+"These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>\n"
+" <strong>You don't need to set them if the Send Method is email.</strong>.\n"
+" For more information on Open311, see \n"
+" <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.\n"
+" "
+msgstr ""
+
#: templates/web/default/open311/index.html:79
msgid "This API implementation is work in progress and not yet stabilized. It will change without warnings in the future."
msgstr "Den här API-implementationen är ett pågående arbete och har inte stabiliserats än. Den kommer att förändras."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:371
+#: templates/web/default/admin/body.html:33
+msgid ""
+"This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.\n"
+" Consequently, none of its categories will appear in the drop-down category menu when users report problems.\n"
+" Currently, users <strong>cannot report problems to this body</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body.html:43
+msgid "This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>."
+msgstr ""
+
+#: templates/web/default/admin/body-form.html:52
+#: templates/web/default/admin/body-form.html:53
+msgid ""
+"This body will only be sent reports for problems that are located in the <strong>area covered</strong>.\n"
+" A body will not receive any reports unless it covers at least one area."
+msgstr ""
+
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:375
msgid "This email has been sent to both councils covering the location of the problem, as the user did not categorise it; please ignore it if you're not the correct council to deal with the issue, or let us know what category of problem this is so we can add it to our system."
msgstr "Det här brevet har skickats till flera adresser eftersom rapportören inte angav någon kategori, eller den kategori som angavs hör till flera olika enheter. Du kan ignorera det här brevet om du inte är rätt person att hantera det, men det vore också mycket hjälpsamt om du kan ta reda på vem som är rätt person och anmäla detta till oss så att vi kan ändra databasen för framtida brev."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:374
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:378
msgid "This email has been sent to several councils covering the location of the problem, as the category selected is provided for all of them; please ignore it if you're not the correct council to deal with the issue."
msgstr "Det här brevet har skickats till flera adresser eftersom rapportören inte angav någon kategori, eller den kategori som angavs hör till flera olika enheter. Du kan ignorera det här brevet om du inte är rätt person att hantera det, men det vore också mycket hjälpsamt om du kan ta reda på vem som är rätt person och anmäla detta till oss så att vi kan ändra databasen för framtida brev."
#: perllib/FixMyStreet/App/Controller/Report/New.pm:894
+#: perllib/FixMyStreet/App/Controller/Report/New.pm:964
#: perllib/FixMyStreet/Cobrand/EmptyHomes.pm:131
#: perllib/FixMyStreet/Cobrand/UK.pm:58
msgid "This information is required"
@@ -3376,9 +3704,8 @@ msgid "This is a summary of all reports on this site; select a particular barang
msgstr ""
#: templates/web/emptyhomes/reports/index.html:4
-#, fuzzy
msgid "This is a summary of all reports on this site; select a particular council to see the empty homes news for that area."
-msgstr "Det här är en sammanställning av alla rapporter. Du kan välja en enskild kommun för att se rapporterna skickade dit."
+msgstr ""
#: templates/web/default/reports/index.html:7
#: templates/web/fiksgatami/nn/reports/index.html:4
@@ -3416,8 +3743,8 @@ msgstr "Arbete pågår med att lösa problemet"
msgid "This problem is old and of unknown status."
msgstr "Problemet är gammalt och har okänt status"
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:67
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:68
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:108
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:109
#: templates/web/zurich/report/_main.html:14
msgid "This report is awaiting moderation."
msgstr ""
@@ -3434,20 +3761,20 @@ msgstr "Det här problemet är markerat som löst"
msgid "This report is currently marked as open."
msgstr "Den här rapportern är öppen"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:311
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:315
msgid "This report was submitted anonymously"
msgstr ""
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:280
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:284
msgid "This web page also contains a photo of the problem, provided by the user."
msgstr "Den här sidan innehåller också ett foto av problemet"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1146
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1178
#: templates/web/default/admin/timeline.html:1
msgid "Timeline"
msgstr "Tidslinje"
-#: templates/web/default/admin/flagged.html:10
+#: templates/web/default/admin/flagged.html:15
#: templates/web/default/admin/reports.html:12
msgid "Title"
msgstr "Titel"
@@ -3460,11 +3787,11 @@ msgstr "Klicka på kartan för att <strong>rapportera ett problem</strong>."
msgid "To find out what local alerts we have for you, please enter your postcode or street name and area"
msgstr "Skriv in postnummer eller gatunamn och ort för att se rapporter kring den platsen."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:286
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:290
msgid "To view a map of the precise location of this issue"
msgstr "För att visa en karta med den exakta positionen för problemet"
-#: templates/web/default/admin/index.html:36
+#: templates/web/default/admin/index.html:44
#: templates/web/default/admin/questionnaire.html:24
#: templates/web/default/admin/stats.html:24
#: templates/web/default/admin/stats.html:43
@@ -3476,7 +3803,8 @@ msgstr "Totalt"
msgid "Transport Category"
msgstr ""
-#: templates/web/default/js/translation_strings.html:23
+#: templates/web/default/js/translation_strings.html:29
+#: templates/web/oxfordshire/js/translation_strings.html:23
msgid "Try again"
msgstr ""
@@ -3494,8 +3822,8 @@ msgstr ""
#: templates/web/default/admin/report_edit.html:35
#: templates/web/default/admin/report_edit.html:51
#: templates/web/default/admin/update_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:45
-#: templates/web/zurich/admin/report_edit.html:59
+#: templates/web/zurich/admin/report_edit-sdm.html:48
+#: templates/web/zurich/admin/report_edit.html:61
#: templates/web/zurich/admin/update_edit.html:18
msgid "Unconfirmed"
msgstr "Obekräftat"
@@ -3508,7 +3836,8 @@ msgstr "Okänt"
msgid "Unknown alert type"
msgstr "Okänd feltyp"
-#: templates/web/default/js/translation_strings.html:33
+#: templates/web/default/js/translation_strings.html:39
+#: templates/web/oxfordshire/js/translation_strings.html:33
msgid "Unknown error"
msgstr "Okänt fel"
@@ -3535,12 +3864,12 @@ msgstr "Uppdateringen nedan tillagd anonymt %s"
msgid "Update below added by %s at %s"
msgstr "Uppdateringen nedan tillagd av %s den %s"
-#: templates/web/default/admin/body-form.html:82
-#: templates/web/zurich/admin/body-form.html:47
+#: templates/web/default/admin/body-form.html:233
+#: templates/web/zurich/admin/body-form.html:51
msgid "Update body"
msgstr ""
-#: templates/web/default/admin/index.html:30
+#: templates/web/default/admin/index.html:38
msgid "Update breakdown by state"
msgstr "Uppdatering per status"
@@ -3561,7 +3890,7 @@ msgstr "Uppdateringen markerade problemet som löst"
msgid "Update reopened problem"
msgstr "Uppdateringen öppnade rapporten på nytt"
-#: templates/web/default/admin/body.html:65
+#: templates/web/default/admin/body.html:83
msgid "Update statuses"
msgstr "Uppdaterad status"
@@ -3575,24 +3904,24 @@ msgstr "Uppdatering:"
msgid "Updated"
msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1011
-#: perllib/FixMyStreet/App/Controller/Admin.pm:775
-#: perllib/FixMyStreet/App/Controller/Admin.pm:919
-#: perllib/FixMyStreet/App/Controller/Admin.pm:972
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:424
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:488
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1042
+#: perllib/FixMyStreet/App/Controller/Admin.pm:796
+#: perllib/FixMyStreet/App/Controller/Admin.pm:940
+#: perllib/FixMyStreet/App/Controller/Admin.pm:998
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:487
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:556
msgid "Updated!"
msgstr "Uppdaterad!"
#: templates/web/default/admin/list_updates.html:2
#: templates/web/default/report/update.html:3
#: templates/web/fixmystreet/report/update.html:3
-#: templates/web/zurich/admin/list_updates.html:2
+#: templates/web/zurich/admin/list_updates.html:24
#: templates/web/zurich/report/updates.html:2
msgid "Updates"
msgstr "Uppdateringar"
-#: perllib/FixMyStreet/DB/Result/Comment.pm:150
+#: perllib/FixMyStreet/DB/Result/Comment.pm:131
msgid "Updates are limited to 2000 characters in length. Please shorten your update"
msgstr ""
@@ -3609,23 +3938,37 @@ msgstr "Uppdateringar för {{title}}"
msgid "Updates to this problem, FixMyStreet"
msgstr "Uppdateringar för det här problemet, FixaMinGata"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1309
+#: templates/web/default/admin/body.html:153
+msgid "Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body."
+msgstr ""
+
+#: templates/web/zurich/admin/list_updates.html:30
+#: templates/web/zurich/admin/list_updates.html:9
+#, fuzzy
+msgid "User"
+msgstr "Användare"
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1342
msgid "User flag removed"
msgstr "Användarflaggan borttagen"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1281
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1314
msgid "User flagged"
msgstr "Användaren flaggad"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:1148
-#: perllib/FixMyStreet/Cobrand/Zurich.pm:215
-#: templates/web/default/admin/flagged.html:24
+#: templates/web/default/admin/users.html:5
+msgid "User search finds matches in users' names and email addresses."
+msgstr ""
+
+#: perllib/FixMyStreet/App/Controller/Admin.pm:1180
+#: perllib/FixMyStreet/Cobrand/Zurich.pm:256
+#: templates/web/default/admin/flagged.html:29
#: templates/web/zurich/header.html:69
msgid "Users"
msgstr "Användare"
-#: perllib/FixMyStreet/App/Controller/Admin.pm:357
-#: perllib/FixMyStreet/App/Controller/Admin.pm:387
+#: perllib/FixMyStreet/App/Controller/Admin.pm:371
+#: perllib/FixMyStreet/App/Controller/Admin.pm:401
msgid "Values updated"
msgstr "Värden uppdaterade"
@@ -3695,7 +4038,7 @@ msgstr "Vi visar aldrig din epostadress publikt"
msgid "We never show your email address or phone number."
msgstr "Vi visar aldrig din epostadress eller telefonnummer publikt."
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:380
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:384
msgid "We realise this problem might be the responsibility of %s; however, we don't currently have any contact details for them. If you know of an appropriate contact address, please do get in touch."
msgstr "Det här problemet kan höra till %s. Dessvärre har vi ingen kontaktinformation till dem. Om du vet om en lämplig kontaktadress hör vi gärna från dig."
@@ -3722,7 +4065,7 @@ msgstr "Vi vill gärna höra vad du tycker om FixaMinGata. Fyll i formuläret ne
msgid "We'd love to hear what you think about this site. Just fill in the form, or send an email to <a href='mailto:%s'>%s</a>:"
msgstr "Vi vill gärna höra vad du tycker om FixaMinGata. Fyll i formuläret nedan och skicka in, eller skicka epost till <a href='mailto:%s'>%s</a>:"
-#: templates/web/default/admin/body.html:43
+#: templates/web/default/admin/body.html:61
#: templates/web/default/admin/body_edit.html:82
#: templates/web/zurich/admin/body.html:17
msgid "When edited"
@@ -3766,18 +4109,20 @@ msgstr "Om du skriver ditt meddelande endast med versaler blir det svårare att
msgid "Year"
msgstr "År"
-#: templates/web/default/admin/body.html:50
-#: templates/web/default/admin/body.html:51
-#: templates/web/default/admin/body.html:52
+#: templates/web/default/admin/bodies.html:57
+#: templates/web/default/admin/body.html:68
+#: templates/web/default/admin/body.html:69
+#: templates/web/default/admin/body.html:70
#: templates/web/default/admin/body_edit.html:5
-#: templates/web/default/admin/list_updates.html:37
-#: templates/web/default/admin/list_updates.html:38
-#: templates/web/default/admin/list_updates.html:39
+#: templates/web/default/admin/flagged.html:47
+#: templates/web/default/admin/list_updates.html:32
+#: templates/web/default/admin/list_updates.html:34
+#: templates/web/default/admin/list_updates.html:35
#: templates/web/default/admin/problem_row.html:20
#: templates/web/default/admin/report_edit.html:63
#: templates/web/default/admin/report_edit.html:77
#: templates/web/default/admin/update_edit.html:24
-#: templates/web/default/admin/users.html:26
+#: templates/web/default/admin/users.html:29
#: templates/web/default/questionnaire/creator_fixed.html:14
#: templates/web/default/questionnaire/index.html:109
#: templates/web/default/questionnaire/index.html:66
@@ -3810,6 +4155,17 @@ msgstr "Du vill anmäla missbruk, personlig inforation, eller motsvarande i föl
msgid "You can <a href=\"%s%s\">view the problem on this site</a>."
msgstr ""
+#: templates/web/default/admin/user-form.html:47
+msgid "You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create."
+msgstr ""
+
+#: templates/web/default/admin/flagged.html:5
+msgid ""
+"You can flag any report or user by editing them, and they will be listed on this page.\n"
+" For example, this can useful if you want to keep an eye on a user who has posted inappropriate\n"
+" reports in the past."
+msgstr ""
+
#: templates/web/default/report/new/councils_text_none.html:11
#: templates/web/default/report/new/councils_text_none.html:13
#: templates/web/default/report/new/councils_text_some.html:20
@@ -3817,7 +4173,12 @@ msgstr ""
msgid "You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."
msgstr "Du kan hjälpa oss med att hitta kontaktadressen för %s och eposta till oss på <a href='mailto:%s'>%s</a>."
-#: templates/web/default/js/translation_strings.html:30
+#: templates/web/default/admin/body-form.html:81
+msgid "You can mark a body as deleted if you do not want it to be active on the site."
+msgstr ""
+
+#: templates/web/default/js/translation_strings.html:36
+#: templates/web/oxfordshire/js/translation_strings.html:30
msgid "You declined; please fill in the box above"
msgstr "Du tackade nej; var vänlig använd textrutan ovan"
@@ -3892,6 +4253,17 @@ msgstr "Du har loggats in. Verifiera att dina uppgifter stämmer:"
msgid "You must now click the link in the email we've just sent you."
msgstr ""
+#: templates/web/default/admin/index.html:7
+msgid "You need to <a href=\"%s\">add some bodies</a> (such as councils or departments) before any reports can be sent."
+msgstr ""
+
+#: templates/web/default/admin/bodies.html:9
+msgid ""
+"You need to add bodies (such as councils or departments) so that you can then add\n"
+" the categories of problems they can handle (such as potholes or streetlights) and the\n"
+" contacts (such as an email address) to which reports are sent."
+msgstr ""
+
#: templates/web/default/admin/report_edit.html:71
msgid "You really want to resend?"
msgstr "Vill du verkligen skicka om?"
@@ -3927,7 +4299,7 @@ msgstr ""
#: templates/web/fixmystreet/report/update-form.html:80
#: templates/web/seesomething/auth/general.html:26
#: templates/web/zurich/auth/general.html:30
-#: templates/web/zurich/auth/general.html:56
+#: templates/web/zurich/auth/general.html:58
msgid "Your email address"
msgstr "Din epostadress"
@@ -3965,7 +4337,7 @@ msgstr "Ditt efternamn"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:192
#: templates/web/fixmystreet/report/update-form.html:140
#: templates/web/seesomething/report/new/fill_in_details_form.html:79
-#: templates/web/zurich/auth/general.html:59
+#: templates/web/zurich/auth/general.html:61
#: templates/web/zurich/report/new/fill_in_details_form.html:104
msgid "Your name"
msgstr "Ditt namn och efternamn"
@@ -3997,7 +4369,7 @@ msgstr "Ditt lösenord har ändrats"
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:139
#: templates/web/fixmystreet/report/new/fill_in_details_form.html:206
#: templates/web/seesomething/report/new/fill_in_details_form.html:90
-#: templates/web/zurich/report/new/fill_in_details_form.html:107
+#: templates/web/zurich/report/new/fill_in_details_form.html:110
msgid "Your phone number"
msgstr "Ditt telefonnummer"
@@ -4013,6 +4385,7 @@ msgstr ""
#: templates/web/bromley/header.html:75 templates/web/default/footer.html:9
#: templates/web/fiksgatami/footer.html:6
#: templates/web/fiksgatami/nn/footer.html:6
+#: templates/web/fixmindelo/footer.html:39
#: templates/web/fixmystreet/footer.html:46
#: templates/web/oxfordshire/footer.html:21
#: templates/web/oxfordshire/header.html:63
@@ -4037,13 +4410,13 @@ msgstr "av %s"
msgid "council"
msgstr "kommun"
-#: perllib/FixMyStreet/DB/Result/Problem.pm:683
+#: perllib/FixMyStreet/DB/Result/Problem.pm:649
msgid "council ref:&nbsp;%s"
msgstr "kommunens referens:&nbsp;%s"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "didn't use map"
msgstr "använde inte kartan"
@@ -4053,11 +4426,17 @@ msgstr "använde inte kartan"
msgid "e.g. ‘%s’ or ‘%s’"
msgstr "ex.v. '%s' eller '%s'"
-#: templates/web/default/admin/index.html:15
+#: templates/web/default/admin/flagged.html:51
+#, fuzzy
+msgid "edit user"
+msgstr "Ändrar användare %d"
+
+#: templates/web/default/admin/index.html:23
#: templates/web/zurich/admin/index.html:5
msgid "from %d different users"
msgstr "från %d olika användare"
+#: templates/web/bromley/report/_item.html:12
#: templates/web/fixmystreet/report/_item.html:12
#: templates/web/zurich/report/_item.html:16
msgid "last updated %s"
@@ -4072,9 +4451,8 @@ msgid "marked as a duplicate report"
msgstr ""
#: templates/web/default/report/updates.html:47
-#, fuzzy
msgid "marked as action scheduled"
-msgstr "markerad som löst"
+msgstr ""
#: templates/web/default/report/updates.html:59
msgid "marked as an internal referral"
@@ -4106,11 +4484,10 @@ msgid "marked as planned"
msgstr "markerad som att arbete planerat"
#: templates/web/default/report/updates.html:53
-#, fuzzy
msgid "marked as unable to fix"
-msgstr "markerad som löst"
+msgstr ""
-#: perllib/FixMyStreet/App/Controller/Admin.pm:128
+#: perllib/FixMyStreet/App/Controller/Admin.pm:130
#: templates/web/default/admin/questionnaire.html:15
#: templates/web/default/admin/questionnaire.html:16
msgid "n/a"
@@ -4122,22 +4499,23 @@ msgstr "Ej tillgängligt"
msgid "or"
msgstr "eller"
-#: templates/web/default/js/translation_strings.html:21
+#: templates/web/default/js/translation_strings.html:27
+#: templates/web/oxfordshire/js/translation_strings.html:21
msgid "or locate me automatically"
msgstr "Klicka här för att försöka <strong>hitta min position automatiskt</strong>."
#: templates/web/default/admin/report_edit.html:24
#: templates/web/default/admin/report_edit.html:26
-#: templates/web/zurich/admin/report_edit-sdm.html:27
-#: templates/web/zurich/admin/report_edit-sdm.html:29
-#: templates/web/zurich/admin/report_edit-sdm.html:36
-#: templates/web/zurich/admin/report_edit-sdm.html:38
-#: templates/web/zurich/admin/report_edit.html:28
+#: templates/web/zurich/admin/report_edit-sdm.html:30
+#: templates/web/zurich/admin/report_edit-sdm.html:32
+#: templates/web/zurich/admin/report_edit-sdm.html:39
+#: templates/web/zurich/admin/report_edit-sdm.html:41
#: templates/web/zurich/admin/report_edit.html:30
-#: templates/web/zurich/admin/report_edit.html:39
+#: templates/web/zurich/admin/report_edit.html:32
#: templates/web/zurich/admin/report_edit.html:41
-#: templates/web/zurich/admin/report_edit.html:51
+#: templates/web/zurich/admin/report_edit.html:43
#: templates/web/zurich/admin/report_edit.html:53
+#: templates/web/zurich/admin/report_edit.html:55
msgid "originally entered: &ldquo;%s&rdquo;"
msgstr ""
@@ -4176,7 +4554,7 @@ msgstr "kommunen"
msgid "there is no pin shown as the user did not use the map"
msgstr "det finns ingen kartmarkering eftersom användaren inte använde kartan"
-#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:358
+#: perllib/FixMyStreet/DB/ResultSet/Problem.pm:362
msgid "this type of local problem"
msgstr "den här typen av problem"
@@ -4185,8 +4563,8 @@ msgid "today"
msgstr "idag"
#: templates/web/default/admin/report_edit.html:28
-#: templates/web/zurich/admin/report_edit-sdm.html:40
-#: templates/web/zurich/admin/report_edit.html:55
+#: templates/web/zurich/admin/report_edit-sdm.html:43
+#: templates/web/zurich/admin/report_edit.html:57
msgid "used map"
msgstr "använde kartan"
@@ -4279,3 +4657,19 @@ msgid "%d day"
msgid_plural "%d days"
msgstr[0] "%d dag"
msgstr[1] "%d dagar"
+
+#, fuzzy
+#~ msgid "The email field is required"
+#~ msgstr "Den här informationen krävs"
+
+#~ msgid "End Year:"
+#~ msgstr "Slutår:"
+
+#~ msgid "End month:"
+#~ msgstr "Slutmånad:"
+
+#~ msgid "Start Year:"
+#~ msgstr "Startår:"
+
+#~ msgid "Start month:"
+#~ msgstr "Startmånad:"
diff --git a/notes/trouble_shooting.md b/notes/trouble_shooting.md
new file mode 100644
index 000000000..7a982ff4b
--- /dev/null
+++ b/notes/trouble_shooting.md
@@ -0,0 +1,42 @@
+# Trouble shooting
+
+## Empty datetime object
+
+ Couldn't render template "index.html: undef error - Can't call method "strftime" without a package or object reference at /var/www/fixmystreet.127.0.0.1.xip.io/fixmystreet/perllib/Utils.pm line 232
+
+- You might have a problem with a datefield that has been left empty by one cobrand that another expects to have a value. Inspert the problem table in the database.
+- You may have problems being returned by memcached that your database does not have. Restart memcached to rule this out.
+
+## Wrong cobrand is displaying
+
+- Make sure that your hostname does not contain anything that another cobrand is matching on. For example if your config is
+
+``` yaml
+ALLOWED_COBRANDS:
+ - fixmystreet
+ - zurich
+````
+
+Then a domain like `zurich.fixmystreet.com` will match `fixmystreet` first and that is the cobrand that will be served.
+
+## Account creation emails not arriving
+
+Your receiving email servers may be rejecting them because:
+
+* your VM IP address has been blacklisted
+* your ISP blocks outgoing connections to port 25 (mobile broadband providers often do this)
+* sender verification has failed (applies to `@mysociety.org` servers) - check that your `DO_NOT_REPLY_EMAIL` conf setting passes sender verification (using your own email address works well).
+
+Perhaps check the entries in `/var/log/mail.log` to check that the message has been sent by the app, and if it has been possible to send them on.
+
+## Translations not being used
+
+The locale needs to be installed too or the translations will not be used. Use
+`locale -a` to list them all and ensure the one your translation uses is in the
+list.
+
+
+## Database connection errors trying to run update-schema
+
+Make sure that you specify a database host and password in `general.yml`. You
+may need to explicitly give your user a password.
diff --git a/notes/vagrant.md b/notes/vagrant.md
new file mode 100644
index 000000000..0ef9202f7
--- /dev/null
+++ b/notes/vagrant.md
@@ -0,0 +1,66 @@
+# Using Vagrant
+
+Vagrant provides an easy method to setup virtual development environments, for
+further information see [their website](http://www.vagrantup.com).
+
+The included steps will use vagrant to create a dev environment where you can
+run the test suite, the development server and of course make changes to the
+codebase.
+
+The basic process is to create a "base" vm, and then "provision" it with the
+software packages and setup needed. There are several ways to do this, including
+Chef, Puppet, or the existing FixMyStreet install script which we will use. The
+supplied scripts will create you a Vagrant VM based on the server edition of
+Ubuntu 12.04 LTS that contains everything you need to work on FixMyStreet.
+
+## Pre-requisites
+
+1. Install [VirtualBox](http://www.virtualbox.org/wiki/Downloads)
+2. Install [Vagrant](http://downloads.vagrantup.com/)
+
+## Get the FixMyStreet code
+
+Create a folder somewhere that you'll be doing your work from and clone the repo
+into it.
+
+``` bash
+mkdir FMS-vagrant
+cd FMS-vagrant
+git clone --recursive https://github.com/mysociety/fixmystreet.git
+```
+
+## Set up the Vagrant box
+
+The vagrant configuration needs to be placed in the correct place.
+
+``` bash
+# NOTE - you need to be in the 'FMS-vagrant' dir
+
+cp fixmystreet/conf/Vagrantfile.example Vagrantfile
+
+# start the vagrant box. This will provision the system and can take a long time.
+vagrant up --no-color
+```
+
+## Working with the vagrant box
+
+You should now have a local FixMyStreet development server to work with. You
+can edit the files locally and the changes will be reflected on the virtual
+machine.
+
+To start the dev server:
+
+``` bash
+vagrant ssh
+
+# You are now in a terminal on the virtual machine
+cd /vagrant/fixmystreet
+
+# run the dev server
+bin/cron-wrapper script/fixmystreet_app_server.pl -d -r --fork
+```
+
+The server should now be running and you can visit it at the address
+http://127.0.0.1.xip.io:3000/
+
+Enjoy!
diff --git a/perllib/CrossSell.pm b/perllib/CrossSell.pm
index f9cde6936..231bb9361 100644
--- a/perllib/CrossSell.pm
+++ b/perllib/CrossSell.pm
@@ -142,6 +142,15 @@ details. You can unsubscribe at any time.</p>
EOF
}
+sub display_survey_link {
+ return <<EOF;
+<h1 style="padding-top:0.5em">User Survey</h1>
+<p>
+We're running a survey to help us understand who uses our sites. If you have 10-15 minutes to spare then we'd be grateful if you could <a href="http://questions.mysociety.org/S/fms/w/" target="_blank">take part</a>.
+</p>
+EOF
+}
+
# Not currently used, needs more explanation and testing; perhaps in future.
sub display_gny_groups {
my ($lon, $lat) = @_;
@@ -201,6 +210,11 @@ sub display_advert ($$;$%) {
#EOF
#unless (defined $data{done_tms} && $data{done_tms}==1) {
+ $c->stash->{scratch} = 'advert=survey';
+ return '<div style="margin: 0 5em; border-top: dotted 1px #666666;">'
+ . display_survey_link()
+ . '</div>';
+
$c->stash->{scratch} = 'advert=news';
my $auth_signature = '';
unless (defined $data{emailunvalidated} && $data{emailunvalidated}==1) {
diff --git a/perllib/FixMyStreet.pm b/perllib/FixMyStreet.pm
index be488a796..cc5286bbb 100644
--- a/perllib/FixMyStreet.pm
+++ b/perllib/FixMyStreet.pm
@@ -7,6 +7,7 @@ use Path::Class;
my $ROOT_DIR = file(__FILE__)->parent->parent->absolute->resolve;
use Readonly;
+use Sub::Override;
use mySociety::Config;
use mySociety::DBHandle;
@@ -85,6 +86,42 @@ sub config {
return exists $CONFIG{$key} ? $CONFIG{$key} : undef;
}
+sub override_config($&) {
+ my $config = shift;
+ my $code = \&{shift @_};
+
+ mySociety::MaPit::configure($config->{MAPIT_URL}) if $config->{MAPIT_URL};
+
+ # For historical reasons, we have two ways of asking for config variables.
+ # Override them both, I'm sure we'll find time to get rid of one eventually.
+ my $override_guard1 = Sub::Override->new(
+ "FixMyStreet::config",
+ sub {
+ my ($class, $key) = @_;
+ return { %CONFIG, %$config } unless $key;
+ return $config->{$key} if exists $config->{$key};
+ my $orig_config = mySociety::Config::load_default();
+ return $orig_config->{$key} if exists $orig_config->{$key};
+ }
+ );
+ my $override_guard2 = Sub::Override->new(
+ "mySociety::Config::get",
+ sub ($;$) {
+ my ($key, $default) = @_;
+ return $config->{$key} if exists $config->{$key};
+ my $orig_config = mySociety::Config::load_default();
+ return $orig_config->{$key} if exists $orig_config->{$key};
+ return $default if @_ == 2;
+ }
+ );
+
+ $code->();
+
+ $override_guard1->restore();
+ $override_guard2->restore();
+ mySociety::MaPit::configure() if $config->{MAPIT_URL};;
+}
+
=head2 dbic_connect_info
$connect_info = FixMyStreet->dbic_connect_info();
diff --git a/perllib/FixMyStreet/App.pm b/perllib/FixMyStreet/App.pm
index cf766348f..4f70d2c68 100644
--- a/perllib/FixMyStreet/App.pm
+++ b/perllib/FixMyStreet/App.pm
@@ -208,6 +208,14 @@ sub setup_request {
DateTime->DefaultLocale( 'en_US' );
}
+ if (FixMyStreet->test_mode) {
+ # Is there a better way of altering $c->config that may have
+ # override_config involved?
+ $c->setup_finished(0);
+ $c->config( %{ FixMyStreet->config() } );
+ $c->setup_finished(1);
+ }
+
return $c;
}
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 133c83024..9c0018f38 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -9,6 +9,8 @@ use POSIX qw(strftime strcoll);
use Digest::SHA qw(sha1_hex);
use mySociety::EmailUtil qw(is_valid_email);
use if !$ENV{TRAVIS}, 'Image::Magick';
+use DateTime::Format::Strptime;
+
use FixMyStreet::SendReport;
@@ -130,9 +132,21 @@ sub index : Path : Args(0) {
$c->stash->{categories} = $c->cobrand->problems->categories_summary();
+ $c->stash->{total_bodies} = $c->model('DB::Body')->count();
+
return 1;
}
+sub config_page : Path( 'config' ) : Args(0) {
+ my ($self, $c) = @_;
+ my $dir = $c->stash->{additional_template_paths}->[0];
+ my $git_version = `cd $dir && git describe --tags`;
+ chomp $git_version;
+ $c->stash(
+ git_version => $git_version,
+ );
+}
+
sub timeline : Path( 'timeline' ) : Args(0) {
my ($self, $c) = @_;
@@ -411,7 +425,7 @@ sub update_contacts : Private {
sub body_params : Private {
my ( $self, $c ) = @_;
- my @fields = qw/name endpoint jurisdiction api_key send_method send_comments suppress_alerts send_extended_statuses comment_user_id can_be_devolved parent/;
+ my @fields = qw/name endpoint jurisdiction api_key send_method send_comments suppress_alerts send_extended_statuses comment_user_id can_be_devolved parent deleted/;
my %defaults = map { $_ => '' } @fields;
%defaults = ( %defaults,
send_comments => 0,
@@ -420,6 +434,7 @@ sub body_params : Private {
send_extended_statuses => 0,
can_be_devolved => 0,
parent => undef,
+ deleted => 0,
);
my %params = map { $_ => $c->req->param($_) || $defaults{$_} } @fields;
return \%params;
@@ -430,6 +445,7 @@ sub display_contacts : Private {
my $contacts = $c->stash->{body}->contacts->search(undef, { order_by => [ 'category' ] } );
$c->stash->{contacts} = $contacts;
+ $c->stash->{live_contacts} = $contacts->search({ deleted => 0 });
if ( $c->req->param('text') && $c->req->param('text') == 1 ) {
$c->stash->{template} = 'admin/council_contacts.txt';
@@ -546,10 +562,15 @@ sub reports : Path('reports') {
$query->{'-or'} = [
'me.areas' => { like => "%,$1,%" }
];
+ } elsif ($search =~ /^ref:(\d+)$/) {
+ $query->{'-or'} = [
+ 'me.external_id' => { like => "%$1%" }
+ ];
} else {
$query->{'-or'} = [
'me.id' => $search_n,
'user.email' => { ilike => $like_search },
+ 'me.external_id' => { ilike => $like_search },
'me.name' => { ilike => $like_search },
'me.title' => { ilike => $like_search },
detail => { ilike => $like_search },
@@ -749,11 +770,15 @@ sub report_edit : Path('report_edit') : Args(1) {
$problem->user( $user );
}
+ # Deal with photos
if ( $c->req->param('remove_photo') ) {
$problem->photo(undef);
}
+ if ( $new_state eq 'hidden' ) {
+ unlink glob FixMyStreet->path_to( 'web', 'photo', $problem->id . '.*' );
+ }
- if ( $new_state eq 'confirmed' and $old_state eq 'unconfirmed' ) {
+ if ( $problem->is_visible() and $old_state eq 'unconfirmed' ) {
$problem->confirmed( \'ms_current_timestamp()' );
}
@@ -894,7 +919,7 @@ sub update_edit : Path('update_edit') : Args(1) {
$update->name( $c->req->param('name') || '' );
$update->text( $c->req->param('text') );
$update->anonymous( $c->req->param('anonymous') );
- $update->state( $c->req->param('state') );
+ $update->state( $new_state );
if ( $c->req->param('email') ne $update->user->email ) {
my $user =
@@ -914,6 +939,10 @@ sub update_edit : Path('update_edit') : Args(1) {
}
}
+ if ( $new_state eq 'hidden' ) {
+ unlink glob FixMyStreet->path_to( 'web', 'photo', 'c', $update->id . '.*' );
+ }
+
$update->update;
$c->stash->{status_message} = '<p><em>' . _('Updated!') . '</em></p>';
@@ -954,6 +983,11 @@ sub user_add : Path('user_edit') : Args(0) {
$c->forward('check_token');
+ if ( $c->cobrand->moniker eq 'zurich' and $c->req->param('email') eq '' ) {
+ $c->stash->{field_errors}->{email} = _('Please enter a valid email');
+ return 1;
+ }
+
return unless $c->req->param('name') && $c->req->param('email');
my $user = $c->model('DB::User')->find_or_create( {
@@ -1001,6 +1035,11 @@ sub user_edit : Path('user_edit') : Args(1) {
$user->email( $c->req->param('email') );
$user->from_body( $c->req->param('body') || undef );
$user->flagged( $c->req->param('flagged') || 0 );
+
+ if ( $c->cobrand->moniker eq 'zurich' and $user->email eq '' ) {
+ $c->stash->{field_errors}->{email} = _('Please enter a valid email');
+ return 1;
+ }
$user->update;
if ($edited) {
@@ -1024,8 +1063,20 @@ sub flagged : Path('flagged') : Args(0) {
$c->stash->{problems} = [ $problems->all ];
my $users = $c->model('DB::User')->search( { flagged => 1 } );
+ my @users = $users->all;
+ my %email2user = map { $_->email => $_ } @users;
+ $c->stash->{users} = [ @users ];
- $c->stash->{users} = $users;
+ my @abuser_emails = $c->model('DB::Abuse')->all();
+
+ foreach my $email (@abuser_emails) {
+ # Slight abuse of the boolean flagged value
+ if ($email2user{$email->email}) {
+ $email2user{$email->email}->flagged( 2 );
+ } else {
+ push @{$c->stash->{users}}, { email => $email->email, flagged => 2 };
+ }
+ }
return 1;
}
@@ -1042,26 +1093,15 @@ sub stats : Path('stats') : Args(0) {
if ( $c->req->param('getcounts') ) {
my ( $start_date, $end_date, @errors );
+ my $parser = DateTime::Format::Strptime->new( pattern => '%d/%m/%Y' );
- eval {
- $start_date = DateTime->new(
- year => $c->req->param('start_date_year'),
- month => $c->req->param('start_date_month'),
- day => $c->req->param('start_date_day'),
- );
- };
+ $start_date = $parser-> parse_datetime ( $c->req->param('start_date') );
- push @errors, _('Invalid start date') if $@;
+ push @errors, _('Invalid start date') unless defined $start_date;
- eval {
- $end_date = DateTime->new(
- year => $c->req->param('end_date_year'),
- month => $c->req->param('end_date_month'),
- day => $c->req->param('end_date_day'),
- );
- };
+ $end_date = $parser-> parse_datetime ( $c->req->param('end_date') ) ;
- push @errors, _('Invalid end date') if $@;
+ push @errors, _('Invalid end date') unless defined $end_date;
$c->stash->{errors} = \@errors;
$c->stash->{start_date} = $start_date;
@@ -1148,6 +1188,7 @@ sub set_allowed_pages : Private {
'users' => [_('Users'), 5],
'flagged' => [_('Flagged'), 6],
'stats' => [_('Stats'), 6],
+ 'config' => [ undef, undef ],
'user_edit' => [undef, undef],
'body' => [undef, undef],
'body_edit' => [undef, undef],
diff --git a/perllib/FixMyStreet/App/Controller/Contact.pm b/perllib/FixMyStreet/App/Controller/Contact.pm
index 3fcb449d2..7ba18ed2d 100644
--- a/perllib/FixMyStreet/App/Controller/Contact.pm
+++ b/perllib/FixMyStreet/App/Controller/Contact.pm
@@ -149,7 +149,7 @@ sub prepare_params_for_email : Private {
my $problem_url = $base_url . '/report/' . $c->stash->{update}->problem_id
. '#update_' . $c->stash->{update}->id;
- my $admin_url = " - $admin_url" . 'update_edit/' . $c->stash->{update}->id
+ my $admin_url = " - $admin_url" . '/update_edit/' . $c->stash->{update}->id
if $admin_url;
$c->stash->{message} .= sprintf(
" \n\n[ Complaint about update %d on report %d - %s%s ]",
@@ -161,7 +161,7 @@ sub prepare_params_for_email : Private {
elsif ( $c->stash->{problem} ) {
my $problem_url = $base_url . '/report/' . $c->stash->{problem}->id;
- $admin_url = " - $admin_url" . 'report_edit/' . $c->stash->{problem}->id
+ $admin_url = " - $admin_url" . '/report_edit/' . $c->stash->{problem}->id
if $admin_url;
$c->stash->{message} .= sprintf(
" \n\n[ Complaint about report %d - %s%s ]",
diff --git a/perllib/FixMyStreet/App/Controller/Dashboard.pm b/perllib/FixMyStreet/App/Controller/Dashboard.pm
index 028b9aadd..b47a1f54b 100644
--- a/perllib/FixMyStreet/App/Controller/Dashboard.pm
+++ b/perllib/FixMyStreet/App/Controller/Dashboard.pm
@@ -121,16 +121,22 @@ sub index : Path : Args(0) {
if $c->stash->{category};
$c->stash->{where} = \%where;
my $prob_where = { %where };
- $prob_where->{state} = $prob_where->{'problem.state'};
+ $prob_where->{'me.state'} = $prob_where->{'problem.state'};
delete $prob_where->{'problem.state'};
$c->stash->{prob_where} = $prob_where;
+ my $dtf = $c->model('DB')->storage->datetime_parser;
+
my %counts;
my $t = DateTime->today;
- $counts{wtd} = $c->forward( 'updates_search', [ $t->subtract( days => $t->dow - 1 ) ] );
- $counts{week} = $c->forward( 'updates_search', [ DateTime->now->subtract( weeks => 1 ) ] );
- $counts{weeks} = $c->forward( 'updates_search', [ DateTime->now->subtract( weeks => 4 ) ] );
- $counts{ytd} = $c->forward( 'updates_search', [ DateTime->today->set( day => 1, month => 1 ) ] );
+ $counts{wtd} = $c->forward( 'updates_search',
+ [ $dtf->format_datetime( $t->subtract( days => $t->dow - 1 ) ) ] );
+ $counts{week} = $c->forward( 'updates_search',
+ [ $dtf->format_datetime( DateTime->now->subtract( weeks => 1 ) ) ] );
+ $counts{weeks} = $c->forward( 'updates_search',
+ [ $dtf->format_datetime( DateTime->now->subtract( weeks => 4 ) ) ] );
+ $counts{ytd} = $c->forward( 'updates_search',
+ [ $dtf->format_datetime( DateTime->today->set( day => 1, month => 1 ) ) ] );
$c->stash->{problems} = \%counts;
@@ -138,17 +144,19 @@ sub index : Path : Args(0) {
$c->stash->{q_state} = $c->req->param('state') || '';
if ( $c->stash->{q_state} eq 'fixed' ) {
- $prob_where->{state} = [ FixMyStreet::DB::Result::Problem->fixed_states() ];
+ $prob_where->{'me.state'} = [ FixMyStreet::DB::Result::Problem->fixed_states() ];
} elsif ( $c->stash->{q_state} ) {
- $prob_where->{state} = $c->stash->{q_state};
- $prob_where->{state} = { IN => [ 'planned', 'action scheduled' ] }
- if $prob_where->{state} eq 'action scheduled';
+ $prob_where->{'me.state'} = $c->stash->{q_state};
+ $prob_where->{'me.state'} = { IN => [ 'planned', 'action scheduled' ] }
+ if $prob_where->{'me.state'} eq 'action scheduled';
}
my $params = {
%$prob_where,
- 'me.confirmed' => { '>=', DateTime->now->subtract( days => 30 ) },
+ 'me.confirmed' => { '>=', $dtf->format_datetime( DateTime->now->subtract( days => 30 ) ) },
};
- my @problems = $c->cobrand->problems->search( $params )->all;
+ my $problems_rs = $c->cobrand->problems->search( $params );
+ my @problems = $problems_rs->all;
+
my %problems;
foreach (@problems) {
if ($_->confirmed >= DateTime->now->subtract(days => 7)) {
@@ -160,6 +168,102 @@ sub index : Path : Args(0) {
}
}
$c->stash->{lists} = \%problems;
+
+ if ( $c->req->params->{export} ) {
+ $self->export_as_csv($c, $problems_rs, $body);
+ }
+}
+
+sub export_as_csv {
+ my ($self, $c, $problems_rs, $body) = @_;
+ require Text::CSV;
+ my $problems = $problems_rs->search(
+ {}, { prefetch => 'comments' });
+
+ my $filename = do {
+ my %where = (
+ body => $body->id,
+ category => $c->stash->{category},
+ state => $c->stash->{q_state},
+ ward => $c->stash->{ward},
+ );
+ join '-',
+ $c->req->uri->host,
+ map {
+ my $value = $where{$_};
+ (defined $value and length $value) ? ($_, $value) : ()
+ } sort keys %where };
+
+ my $csv = Text::CSV->new();
+ $csv->combine(
+ 'Report ID',
+ 'Title',
+ 'Detail',
+ 'User Name',
+ 'Category',
+ 'Created',
+ 'Confirmed',
+ 'Acknowledged',
+ 'Fixed',
+ 'Closed',
+ 'Status',
+ 'Latitude', 'Longitude',
+ 'Nearest Postcode',
+ 'Report URL',
+ );
+ my @body = ($csv->string);
+
+ my $fixed_states = FixMyStreet::DB::Result::Problem->fixed_states;
+ my $closed_states = FixMyStreet::DB::Result::Problem->closed_states;
+
+ while ( my $report = $problems->next ) {
+ my $external_body;
+ my $body_name = "";
+ if ( $external_body = $report->body($c) ) {
+ # seems to be a zurich specific thing
+ $body_name = $external_body->name if ref $external_body;
+ }
+ my $hashref = $report->as_hashref($c);
+
+ $hashref->{user_name_display} = $report->anonymous?
+ '(anonymous)' : $report->user->name;
+
+ for my $comment ($report->comments) {
+ my $problem_state = $comment->problem_state or next;
+ next if $problem_state eq 'confirmed';
+ $hashref->{acknowledged_pp} //= $c->cobrand->prettify_dt( $comment->created );
+ $hashref->{fixed_pp} //= $fixed_states->{ $problem_state } ?
+ $c->cobrand->prettify_dt( $comment->created ): undef;
+ if ($closed_states->{ $problem_state }) {
+ $hashref->{closed_pp} = $c->cobrand->prettify_dt( $comment->created );
+ last;
+ }
+ }
+
+ $csv->combine(
+ @{$hashref}{
+ 'id',
+ 'title',
+ 'detail',
+ 'user_name_display',
+ 'category',
+ 'created_pp',
+ 'confirmed_pp',
+ 'acknowledged_pp',
+ 'fixed_pp',
+ 'closed_pp',
+ 'state',
+ 'latitude', 'longitude',
+ 'postcode',
+ },
+ (join '', $c->cobrand->base_url_for_report($report), $report->url),
+ );
+
+ push @body, $csv->string;
+ }
+ $c->res->content_type('text/csv; charset=utf-8');
+ $c->res->header('content-disposition' => "attachment; filename=${filename}.csv");
+ $c->res->body( join "\n", @body );
}
sub updates_search : Private {
diff --git a/perllib/FixMyStreet/App/Controller/FakeMapit.pm b/perllib/FixMyStreet/App/Controller/FakeMapit.pm
index bc46df712..253c75ba4 100755
--- a/perllib/FixMyStreet/App/Controller/FakeMapit.pm
+++ b/perllib/FixMyStreet/App/Controller/FakeMapit.pm
@@ -12,13 +12,13 @@ FixMyStreet::App::Controller::FakeMapit - Catalyst Controller
A controller to fake mapit when we don't have it. If you set MAPIT_URL to
.../fakemapit/ it should all just work, with a mapit that assumes the whole
-world is one area, with ID 161 and name "Default Area".
+world is one area, with ID 161 and name "Everywhere".
=head1 METHODS
=cut
-my $area = { "name" => "Default Area", "type" => "ZZZ", "id" => 161 };
+my $area = { "name" => "Everywhere", "type" => "ZZZ", "id" => 161 };
sub output : Private {
my ( $self, $c, $data ) = @_;
diff --git a/perllib/FixMyStreet/App/Controller/My.pm b/perllib/FixMyStreet/App/Controller/My.pm
index c00264315..bbef1f8d8 100644
--- a/perllib/FixMyStreet/App/Controller/My.pm
+++ b/perllib/FixMyStreet/App/Controller/My.pm
@@ -45,6 +45,7 @@ sub my : Path : Args(0) {
} )->page( $p_page );
while ( my $problem = $rs->next ) {
+ $c->stash->{has_content}++;
push @$pins, {
latitude => $problem->latitude,
longitude => $problem->longitude,
@@ -64,7 +65,9 @@ sub my : Path : Args(0) {
order_by => { -desc => 'confirmed' },
rows => 50
} )->page( $u_page );
+
my @updates = $rs->all;
+ $c->stash->{has_content} += scalar @updates;
$c->stash->{updates} = \@updates;
$c->stash->{updates_pager} = $rs->pager;
diff --git a/perllib/FixMyStreet/App/Controller/Photo.pm b/perllib/FixMyStreet/App/Controller/Photo.pm
index 8b00d1533..09afabecf 100644
--- a/perllib/FixMyStreet/App/Controller/Photo.pm
+++ b/perllib/FixMyStreet/App/Controller/Photo.pm
@@ -30,17 +30,19 @@ Display a photo
=cut
-sub during :LocalRegex('^([0-9a-f]{40})\.temp\.jpeg$') {
+sub during :LocalRegex('^([0-9a-f]{40})\.(temp|fulltemp)\.jpeg$') {
my ( $self, $c ) = @_;
- my ( $hash ) = @{ $c->req->captures };
+ my ( $hash, $size ) = @{ $c->req->captures };
my $file = file( $c->config->{UPLOAD_DIR}, "$hash.jpeg" );
my $photo = $file->slurp;
- if ( $c->cobrand->default_photo_resize ) {
- $photo = _shrink( $photo, $c->cobrand->default_photo_resize );
- } else {
- $photo = _shrink( $photo, '250x250' );
+ if ( $size eq 'temp' ) {
+ if ( $c->cobrand->default_photo_resize ) {
+ $photo = _shrink( $photo, $c->cobrand->default_photo_resize );
+ } else {
+ $photo = _shrink( $photo, '250x250' );
+ }
}
$c->forward( 'output', [ $photo ] );
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 128ef2790..a419e9cc1 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -585,7 +585,7 @@ sub setup_categories_and_bodies : Private {
my $first_area = ( values %$all_areas )[0];
my @bodies = $c->model('DB::Body')->search(
- { 'body_areas.area_id' => [ keys %$all_areas ] },
+ { 'body_areas.area_id' => [ keys %$all_areas ], deleted => 0 },
{ join => 'body_areas' }
)->all;
my %bodies = map { $_->id => $_ } @bodies;
@@ -666,6 +666,15 @@ sub setup_categories_and_bodies : Private {
}
}
+ if ($c->cobrand->can('hidden_categories')) {
+ my %hidden_categories = map { $_ => 1 }
+ $c->cobrand->hidden_categories;
+
+ @category_options = grep {
+ !$hidden_categories{$_}
+ } @category_options;
+ }
+
# put results onto stash for display
$c->stash->{bodies} = \%bodies;
$c->stash->{all_body_names} = [ map { $_->name } values %bodies ];
@@ -957,6 +966,13 @@ sub check_for_errors : Private {
delete $field_errors{name};
my $report = $c->stash->{report};
$report->title( Utils::cleanup_text( substr($report->detail, 0, 25) ) );
+
+ # We only want to validate the phone number web requests (where the
+ # service parameter is blank) because previous versions of the mobile
+ # apps don't validate the presence of a phone number.
+ if ( ! $c->req->param('phone') and ! $c->req->param('service') ) {
+ $field_errors{phone} = _("This information is required");
+ }
}
# FIXME: need to check for required bromley fields here
diff --git a/perllib/FixMyStreet/App/View/Web.pm b/perllib/FixMyStreet/App/View/Web.pm
index 8d3775ddc..e4aafe951 100644
--- a/perllib/FixMyStreet/App/View/Web.pm
+++ b/perllib/FixMyStreet/App/View/Web.pm
@@ -19,7 +19,7 @@ __PACKAGE__->config(
render_die => 1,
expose_methods => [
'loc', 'nget', 'tprintf', 'display_crosssell_advert', 'prettify_dt',
- 'add_links', 'version',
+ 'add_links', 'version', 'decode',
],
FILTERS => {
escape_js => \&escape_js,
@@ -181,5 +181,11 @@ sub version {
return "$file?$version_hash{$file}";
}
+sub decode {
+ my ( $self, $c, $text ) = @_;
+ utf8::decode($text) unless utf8::is_utf8($text);
+ return $text;
+}
+
1;
diff --git a/perllib/FixMyStreet/Cobrand.pm b/perllib/FixMyStreet/Cobrand.pm
index 881183463..ff7d7f943 100644
--- a/perllib/FixMyStreet/Cobrand.pm
+++ b/perllib/FixMyStreet/Cobrand.pm
@@ -8,6 +8,7 @@ use warnings;
use FixMyStreet;
use Carp;
+use Moose;
use Module::Pluggable
sub_name => '_cobrands',
@@ -38,7 +39,10 @@ Simply returns the config variable (so this function can be overridden in test s
=cut
sub _get_allowed_cobrands {
- return FixMyStreet->config('ALLOWED_COBRANDS') || [];
+ my $allowed = FixMyStreet->config('ALLOWED_COBRANDS') || [];
+ # If the user has supplied a string, convert to an arrayref
+ $allowed = [ $allowed ] unless ref $allowed;
+ return $allowed;
}
=head2 available_cobrand_classes
@@ -92,7 +96,14 @@ sub get_class_for_host {
my $class = shift;
my $host = shift;
- foreach my $avail ( $class->available_cobrand_classes ) {
+ my @available = $class->available_cobrand_classes;
+
+ # If only one entry, always use it
+ return class($available[0]) if 1 == @available;
+
+ # If more than one entry, pick first whose regex (or
+ # name by default) matches hostname
+ foreach my $avail ( @available ) {
return class($avail) if $host =~ /$avail->{host}/;
}
diff --git a/perllib/FixMyStreet/Cobrand/BellaVistaEnAccion.pm b/perllib/FixMyStreet/Cobrand/BellaVistaEnAccion.pm
new file mode 100644
index 000000000..d96e7bc96
--- /dev/null
+++ b/perllib/FixMyStreet/Cobrand/BellaVistaEnAccion.pm
@@ -0,0 +1,33 @@
+package FixMyStreet::Cobrand::BellaVistaEnAccion;
+use base 'FixMyStreet::Cobrand::Default';
+
+use strict;
+use warnings;
+
+sub path_to_web_templates {
+ my $self = shift;
+ return [
+ FixMyStreet->path_to( 'templates/web', $self->moniker )->stringify,
+ FixMyStreet->path_to( 'templates/web/fixmystreet' )->stringify
+ ];
+}
+
+sub country {
+ return 'CL';
+}
+
+sub example_places {
+ return ( 'Dominica, Recoleta', 'Pio Nono' );
+}
+
+sub languages { [ 'es-cl,Castellano,es_CL', 'en-gb,English,en_GB' ] }
+
+sub disambiguate_location {
+ return {
+ country => 'cl',
+ town => 'Santiago',
+ };
+}
+
+1;
+
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm
index 38efb7a35..a39a98135 100644
--- a/perllib/FixMyStreet/Cobrand/Default.pm
+++ b/perllib/FixMyStreet/Cobrand/Default.pm
@@ -295,8 +295,11 @@ to null/0.
sub uri {
my ( $self, $uri ) = @_;
- (my $map_class = $FixMyStreet::Map::map_class) =~ s/^FixMyStreet::Map:://;
- return $uri unless $map_class =~ /OSM|FMS/;
+ {
+ no warnings 'once';
+ (my $map_class = $FixMyStreet::Map::map_class) =~ s/^FixMyStreet::Map:://;
+ return $uri unless $map_class =~ /OSM|FMS/;
+ }
$uri->query_param( zoom => 3 )
if $uri->query_param('lat') && !$uri->query_param('zoom');
diff --git a/perllib/FixMyStreet/Cobrand/FiksGataMi.pm b/perllib/FixMyStreet/Cobrand/FiksGataMi.pm
index 5e90db038..461018639 100644
--- a/perllib/FixMyStreet/Cobrand/FiksGataMi.pm
+++ b/perllib/FixMyStreet/Cobrand/FiksGataMi.pm
@@ -38,7 +38,7 @@ sub area_types {
}
sub admin_base_url {
- return 'http://www.fiksgatami.no/admin/';
+ return 'http://www.fiksgatami.no/admin';
}
# If lat/lon are present in the URL, OpenLayers will use that to centre the map.
diff --git a/perllib/FixMyStreet/Cobrand/FixMindelo.pm b/perllib/FixMyStreet/Cobrand/FixMindelo.pm
index 59debf157..fd3a55c6c 100644
--- a/perllib/FixMyStreet/Cobrand/FixMindelo.pm
+++ b/perllib/FixMyStreet/Cobrand/FixMindelo.pm
@@ -4,6 +4,8 @@ use base 'FixMyStreet::Cobrand::Default';
use strict;
use warnings;
+sub site_title { return 'FixMindelo'; }
+
sub country {
return 'CV';
}
diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
index aa2be4a0f..c3a1f9d9d 100644
--- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
+++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm
@@ -9,7 +9,7 @@ sub restriction {
}
sub admin_base_url {
- return 'https://secure.mysociety.org/admin/bci/';
+ return 'https://secure.mysociety.org/admin/bci';
}
sub title_list {
diff --git a/perllib/FixMyStreet/Cobrand/Hart.pm b/perllib/FixMyStreet/Cobrand/Hart.pm
new file mode 100644
index 000000000..cab834b69
--- /dev/null
+++ b/perllib/FixMyStreet/Cobrand/Hart.pm
@@ -0,0 +1,72 @@
+package FixMyStreet::Cobrand::Hart;
+use parent 'FixMyStreet::Cobrand::UKCouncils';
+
+use strict;
+use warnings;
+
+sub council_id { return 2333; } # http://mapit.mysociety.org/area/2333.html
+sub council_area { return 'Hart'; }
+sub council_name { return 'Hart Council'; }
+sub council_url { return 'hart'; }
+sub is_two_tier { return 1; }
+
+# Different to councils parent due to this being a two-tier council. If we get
+# more, this can be genericised in the parent.
+sub problems_clause {
+ return { bodies_str => { like => '%2333%' } };
+}
+
+sub path_to_web_templates {
+ my $self = shift;
+ return [
+ FixMyStreet->path_to( 'templates/web', $self->moniker )->stringify,
+ FixMyStreet->path_to( 'templates/web/fixmystreet' )->stringify
+ ];
+}
+
+sub disambiguate_location {
+ my $self = shift;
+ my $string = shift;
+
+ my $town = 'Hart, Hampshire';
+
+ return {
+ %{ $self->SUPER::disambiguate_location() },
+ town => $town,
+ # these are taken from mapit http://mapit.mysociety.org/area/2333/geometry -- should be automated?
+ centre => '51.284839,-0.8974600',
+ span => '0.180311,0.239375',
+ bounds => [ 51.186005, -1.002295, 51.366316, -0.762920 ],
+ };
+}
+
+sub example_places {
+ return ( 'GU51 4JX', 'Primrose Drive' );
+}
+
+sub hidden_categories {
+ return (
+ 'Graffiti on bridges/subways',
+ );
+}
+
+sub send_questionnaires {
+ return 0;
+}
+
+sub ask_ever_reported {
+ return 0;
+}
+
+sub contact_email {
+ my $self = shift;
+ return join( '@', 'info', 'hart.gov.uk' );
+}
+sub contact_name { 'Hart District Council (do not reply)'; }
+
+sub default_map_zoom { 3 }
+
+sub reports_per_page { return 20; }
+
+1;
+
diff --git a/perllib/FixMyStreet/Cobrand/Oxfordshire.pm b/perllib/FixMyStreet/Cobrand/Oxfordshire.pm
index 173d5a09f..33611b219 100644
--- a/perllib/FixMyStreet/Cobrand/Oxfordshire.pm
+++ b/perllib/FixMyStreet/Cobrand/Oxfordshire.pm
@@ -53,6 +53,9 @@ sub example_places {
# don't send questionnaires to people who used the OCC cobrand to report their problem
sub send_questionnaires { return 0; }
+# increase map zoom level so street names are visible
+sub default_map_zoom { return 3; }
+
# let staff hide OCC reports
sub users_can_hide { return 1; }
diff --git a/perllib/FixMyStreet/Cobrand/UKCouncils.pm b/perllib/FixMyStreet/Cobrand/UKCouncils.pm
index 5531ed048..ec3423f35 100644
--- a/perllib/FixMyStreet/Cobrand/UKCouncils.pm
+++ b/perllib/FixMyStreet/Cobrand/UKCouncils.pm
@@ -84,10 +84,7 @@ sub all_reports_single_body {
sub reports_body_check {
my ( $self, $c, $code ) = @_;
- # First, the normal UK checks
- $self->SUPER::find_closest( $c, $code );
-
- # Now we want to make sure we're only on our page.
+ # We want to make sure we're only on our page.
unless ( $self->council_name =~ /^\Q$code\E/ ) {
$c->res->redirect( 'http://www.fixmystreet.com' . $c->req->uri->path_query, 301 );
$c->detach();
@@ -102,13 +99,19 @@ sub recent_photos {
return $self->problems->recent_photos( $num, $lat, $lon, $dist );
}
+# Returns true if the cobrand owns the problem.
+sub owns_problem {
+ my ($self, $report) = @_;
+ my $bodies = $report->bodies;
+ my %areas = map { %{$_->areas} } values %$bodies;
+ return $areas{$self->council_id} ? 1 : undef;
+}
+
# If we ever link to a county problem report, needs to be to main FixMyStreet
sub base_url_for_report {
my ( $self, $report ) = @_;
if ( $self->is_two_tier ) {
- my $bodies = $report->bodies;
- my %areas = map { %{$_->areas} } values %$bodies;
- if ( $areas{$self->council_id} ) {
+ if ( $self->owns_problem( $report ) ) {
return $self->base_url;
} else {
return FixMyStreet->config('BASE_URL');
diff --git a/perllib/FixMyStreet/Cobrand/Zurich.pm b/perllib/FixMyStreet/Cobrand/Zurich.pm
index ffdc1feab..0a05fe835 100644
--- a/perllib/FixMyStreet/Cobrand/Zurich.pm
+++ b/perllib/FixMyStreet/Cobrand/Zurich.pm
@@ -8,6 +8,48 @@ use RABX;
use strict;
use warnings;
+=head1 NAME
+
+Zurich FixMyStreet cobrand
+
+=head1 DESCRIPTION
+
+This module provides the specific functionality for the Zurich FMS cobrand.
+
+=head1 DEVELOPMENT NOTES
+
+The admin for Zurich is different to the other cobrands. To access it you need
+to be logged in as a user associated with an appropriate body.
+
+You can create the bodies needed to develop by running the 't/cobrand/zurich.t'
+test script with the three C<$mech->delete...> lines at the end commented out.
+This should leave you with the bodies and users correctly set up.
+
+The entries will be something like this (but with different ids).
+
+ Bodies:
+ id | name | parent | endpoint
+ ----+---------------+--------+---------------------------
+ 1 | Zurich | |
+ 2 | Division 1 | 1 | division@example.org
+ 3 | Subdivision A | 2 | subdivision@example.org
+ 4 | External Body | | external_body@example.org
+
+ Users:
+ id | email | from_body
+ ----+------------------+-----------
+ 1 | super@example.org| 1
+ 2 | dm1@example.org | 2
+ 3 | sdm1@example.org | 3
+
+The passwords for the users is 'secret'.
+
+Note: the password hashes are salted with the user's id so cannot be easily
+changed. High ids have been used so that it should not conflict with anything
+you already have, and the countres set so that they shouldn't in future.
+
+=cut
+
sub shorten_recency_if_new_greater_than_fixed {
return 0;
}
@@ -53,6 +95,27 @@ sub prettify_dt {
return Utils::prettify_dt( $dt, 'zurich' );
}
+# problem already has a concept of is_fixed/is_closed, but Zurich has different
+# workflow for this here.
+#
+# TODO: look at more elegant way of doing this, for example having ::DB::Problem
+# consider cobrand specific state config?
+
+sub zurich_closed_states {
+ my $states = {
+ 'fixed - council' => 1,
+ 'closed' => 1,
+ 'hidden' => 1,
+ };
+
+ return wantarray ? keys %{ $states } : $states;
+}
+
+sub problem_is_closed {
+ my ($self, $problem) = @_;
+ return exists $self->zurich_closed_states->{ $problem->state } ? 1 : 0;
+}
+
sub problem_as_hashref {
my $self = shift;
my $problem = shift;
@@ -174,19 +237,47 @@ sub overdue {
my $w = $problem->created;
return 0 unless $w;
- if ( $problem->state eq 'unconfirmed' || $problem->state eq 'confirmed' ) {
+ # call with previous state
+ if ( $problem->state eq 'unconfirmed' ) {
# One working day
$w = add_days( $w, 1 );
return $w < DateTime->now() ? 1 : 0;
- } elsif ( $problem->state eq 'in progress' || $problem->state eq 'planned' ) {
+ } elsif ( $problem->state eq 'confirmed' || $problem->state eq 'in progress' || $problem->state eq 'planned' ) {
+ # States which affect the subdiv_overdue statistic. TODO: this may no longer be required
# Six working days from creation
$w = add_days( $w, 6 );
return $w < DateTime->now() ? 1 : 0;
+
+ # call with new state
+ } elsif ( $self->problem_is_closed($problem) ) {
+ # States which affect the closed_overdue statistic
+ # Five working days from moderation (so 6 from creation)
+
+ $w = add_days( $w, 6 );
+ return $w < DateTime->now() ? 1 : 0;
} else {
return 0;
}
}
+sub get_or_check_overdue {
+ my ($self, $problem) = @_;
+
+ # use the cached version is it exists (e.g. when called from template)
+ my $extra = $problem->extra;
+ if (exists $extra->{closed_overdue} and defined $extra->{closed_overdue}) {
+ return $extra->{closed_overdue}
+ }
+ return $self->overdue($problem);
+}
+
+sub set_problem_state {
+ my ($self, $c, $problem, $new_state) = @_;
+ return if $new_state eq $problem->state;
+ $problem->state( $new_state );
+ $c->forward( 'log_edit', [ $problem->id, 'problem', "state change to $new_state" ] );
+}
+
sub email_indent { ''; }
# Specific administrative displays
@@ -356,52 +447,87 @@ sub admin_report_edit {
}
- # Problem updates upon submission
+ # If super or sdm check that the token is correct before proceeding
if ( ($type eq 'super' || $type eq 'dm') && $c->req->param('submit') ) {
$c->forward('check_token');
+ }
+ # All types of users can add internal notes
+ if ( ($type eq 'super' || $type eq 'dm' || $type eq 'sdm') && $c->req->param('submit') ) {
+ # If there is a new note add it as a comment to the problem (with is_internal_note set true in extra).
+ if ( my $new_internal_note = $c->req->params->{new_internal_note} ) {
+ $problem->add_to_comments( {
+ text => $new_internal_note,
+ user => $c->user->obj,
+ state => 'hidden', # seems best fit, should not be shown publicly
+ mark_fixed => 0,
+ anonymous => 1,
+ extra => { is_internal_note => 1 },
+ } );
+ }
+ }
+
+ # Problem updates upon submission
+ if ( ($type eq 'super' || $type eq 'dm') && $c->req->param('submit') ) {
# Predefine the hash so it's there for lookups
- # XXX Note you need to shallow copy each time you set it, due to a bug? in FilterColumn.
my $extra = $problem->extra || {};
- $extra->{internal_notes} = $c->req->param('internal_notes');
$extra->{publish_photo} = $c->req->params->{publish_photo} || 0;
$extra->{third_personal} = $c->req->params->{third_personal} || 0;
# Make sure we have a copy of the original detail field
$extra->{original_detail} = $problem->detail if !$extra->{original_detail} && $c->req->params->{detail} && $problem->detail ne $c->req->params->{detail};
+ # Some changes will be accompanied by an internal note, which if needed
+ # should be stored in this variable.
+ my $internal_note_text = "";
+
# Workflow things
my $redirect = 0;
my $new_cat = $c->req->params->{category};
if ( $new_cat && $new_cat ne $problem->category ) {
my $cat = $c->model('DB::Contact')->search( { category => $c->req->params->{category} } )->first;
+ my $old_cat = $problem->category;
$problem->category( $new_cat );
$problem->external_body( undef );
$problem->bodies_str( $cat->body_id );
$problem->whensent( undef );
$extra->{changed_category} = 1;
+ $internal_note_text = "Weitergeleitet von $old_cat an $new_cat";
$redirect = 1 if $cat->body_id ne $body->id;
} elsif ( my $subdiv = $c->req->params->{body_subdivision} ) {
- $extra->{moderated_overdue} = $self->overdue( $problem );
- $problem->state( 'in progress' );
+ $extra->{moderated_overdue} //= $self->overdue( $problem );
+ $self->set_problem_state($c, $problem, 'in progress');
$problem->external_body( undef );
$problem->bodies_str( $subdiv );
$problem->whensent( undef );
$redirect = 1;
} elsif ( my $external = $c->req->params->{body_external} ) {
- $extra->{moderated_overdue} = $self->overdue( $problem );
- $problem->state( 'closed' );
+ $extra->{moderated_overdue} //= $self->overdue( $problem );
+ $self->set_problem_state($c, $problem, 'closed');
+ $extra->{closed_overdue} //= $self->overdue( $problem );
$problem->external_body( $external );
$problem->whensent( undef );
_admin_send_email( $c, 'problem-external.txt', $problem );
$redirect = 1;
} else {
- $problem->state( $c->req->params->{state} ) if $c->req->params->{state};
- if ( $problem->state eq 'hidden' ) {
- _admin_send_email( $c, 'problem-rejected.txt', $problem );
+ if (my $state = $c->req->params->{state}) {
+
+ if ($problem->state eq 'unconfirmed' and $state ne 'unconfirmed') {
+ # only set this for the first state change
+ $extra->{moderated_overdue} //= $self->overdue( $problem );
+ }
+
+ $self->set_problem_state($c, $problem, $state);
+
+ if ($self->problem_is_closed($problem)) {
+ $extra->{closed_overdue} //= $self->overdue( $problem );
+ }
+ if ( $state eq 'hidden' && $c->req->params->{send_rejected_email} ) {
+ _admin_send_email( $c, 'problem-rejected.txt', $problem );
+ }
}
}
- $problem->extra( { %$extra } );
+ $problem->extra( $extra );
$problem->title( $c->req->param('title') );
$problem->detail( $c->req->param('detail') );
$problem->latitude( $c->req->param('latitude') );
@@ -410,9 +536,11 @@ sub admin_report_edit {
# Final, public, Update from DM
if (my $update = $c->req->param('status_update')) {
$extra->{public_response} = $update;
- $problem->extra( { %$extra } );
+ $problem->extra( $extra );
if ($c->req->params->{publish_response}) {
- $problem->state( 'fixed - council' );
+ $self->set_problem_state($c, $problem, 'fixed - council');
+ $extra->{closed_overdue} = $self->overdue( $problem );
+ $problem->extra( { %$extra } );
_admin_send_email( $c, 'problem-closed.txt', $problem );
}
}
@@ -424,9 +552,22 @@ sub admin_report_edit {
'<p><em>' . _('Updated!') . '</em></p>';
# do this here otherwise lastupdate and confirmed times
- # do not display correctly
+ # do not display correctly (reloads problem from database, including
+ # fields modified by the database when saving)
$problem->discard_changes;
+ # Create an internal note if required
+ if ($internal_note_text) {
+ $problem->add_to_comments( {
+ text => $internal_note_text,
+ user => $c->user->obj,
+ state => 'hidden', # seems best fit, should not be shown publicly
+ mark_fixed => 0,
+ anonymous => 1,
+ extra => { is_internal_note => 1 },
+ } );
+ }
+
if ( $redirect ) {
$c->detach('index');
}
@@ -447,7 +588,7 @@ sub admin_report_edit {
$c->forward('check_token');
$problem->bodies_str( $body->parent->id );
- $problem->state( 'confirmed' );
+ $self->set_problem_state($c, $problem, 'confirmed');
$problem->update;
# log here
$c->res->redirect( '/admin/summary' );
@@ -462,14 +603,6 @@ sub admin_report_edit {
$db_update = 1;
}
- my $extra = $problem->extra || {};
- $extra->{internal_notes} ||= '';
- if ($c->req->param('internal_notes') && $c->req->param('internal_notes') ne $extra->{internal_notes}) {
- $extra->{internal_notes} = $c->req->param('internal_notes');
- $problem->extra( { %$extra } );
- $db_update = 1;
- }
-
$problem->update if $db_update;
# Add new update from status_update
@@ -491,10 +624,10 @@ sub admin_report_edit {
if ($c->req->param('no_more_updates')) {
my $extra = $problem->extra || {};
$extra->{subdiv_overdue} = $self->overdue( $problem );
- $problem->extra( { %$extra } );
+ $problem->extra( $extra );
$problem->bodies_str( $body->parent->id );
$problem->whensent( undef );
- $problem->state( 'planned' );
+ $self->set_problem_state($c, $problem, 'planned');
$problem->update;
$c->res->redirect( '/admin/summary' );
}
@@ -578,7 +711,7 @@ sub admin_stats {
my %date_params;
my $ym = $c->req->params->{ym};
- my ($m, $y) = $ym =~ /^(\d+)\.(\d+)$/;
+ my ($m, $y) = $ym ? ($ym =~ /^(\d+)\.(\d+)$/) : ();
$c->stash->{ym} = $ym;
if ($y && $m) {
$c->stash->{start_date} = DateTime->new( year => $y, month => $m, day => 1 );
@@ -592,10 +725,31 @@ sub admin_stats {
);
if ( $c->req->params->{export} ) {
- my $problems = $c->model('DB::Problem')->search( { %params }, { columns => [ 'id', 'created', 'latitude', 'longitude', 'cobrand', 'category' ] } );
- my $body = "ID,Created,E,N,Category\n";
- while (my $report = $problems->next) {
- $body .= join( ',', $report->id, $report->created, $report->local_coords, $report->category ) . "\n";
+ my $problems = $c->model('DB::Problem')->search(
+ {%date_params},
+ {
+ columns => [
+ 'id', 'created',
+ 'latitude', 'longitude',
+ 'cobrand', 'category',
+ 'state', 'user_id',
+ 'external_body'
+ ]
+ }
+ );
+ my $body = "ID,Created,E,N,Category,Status,UserID,External Body\n";
+ while ( my $report = $problems->next ) {
+ my $external_body;
+ my $body_name = "";
+ if ( $external_body = $report->body($c) ) {
+ $body_name = $external_body->name;
+ }
+ $body .= join( ',',
+ $report->id, $report->created,
+ $report->local_coords, $report->category,
+ $report->state, $report->user_id,
+ "\"$body_name\"" )
+ . "\n";
}
$c->res->content_type('text/csv; charset=utf-8');
$c->res->body($body);
@@ -616,9 +770,11 @@ sub admin_stats {
# Reports assigned to third party
my $closed = $c->model('DB::Problem')->search( { state => 'closed', %date_params } )->count;
# Reports moderated within 1 day
- my $moderated = $c->model('DB::Problem')->search( { extra => { like => '%moderated_overdue,I1:0%' }, %params } )->count;
- # Reports solved within 5 days
+ my $moderated = $c->model('DB::Problem')->search( { extra => { like => '%moderated_overdue,I1:0%' }, %date_params } )->count;
+ # Reports solved within 5 days (sent back from subdiv)
my $subdiv_dealtwith = $c->model('DB::Problem')->search( { extra => { like => '%subdiv_overdue,I1:0%' }, %params } )->count;
+ # Reports solved within 5 days (marked as 'fixed - council', 'closed', or 'hidden'
+ my $fixed_in_time = $c->model('DB::Problem')->search( { extra => { like => '%closed_overdue,I1:0%' }, %date_params } )->count;
# Reports per category
my $per_category = $c->model('DB::Problem')->search( \%params, {
select => [ 'category', { count => 'id' } ],
@@ -649,7 +805,7 @@ sub admin_stats {
reports_spam => $hidden,
reports_assigned => $closed,
reports_moderated => $moderated,
- reports_dealtwith => $subdiv_dealtwith,
+ reports_dealtwith => $fixed_in_time,
reports_category_changed => $changed,
pictures_taken => $pictures_taken,
pictures_published => $pictures_published,
diff --git a/perllib/FixMyStreet/DB/RABXColumn.pm b/perllib/FixMyStreet/DB/RABXColumn.pm
new file mode 100644
index 000000000..5f1583018
--- /dev/null
+++ b/perllib/FixMyStreet/DB/RABXColumn.pm
@@ -0,0 +1,98 @@
+package FixMyStreet::DB::RABXColumn;
+
+use strict;
+use warnings;
+
+use IO::String;
+use RABX;
+
+=head1 NAME
+
+FixMyStreet::DB::RABXColumn
+
+=head2 DESCRIPTION
+
+This is a helper component that will setup the RABX serialisation for some
+fields. This is useful for when you want to persist some data structure such as
+hashrefs etc.
+
+This code will also change the default FilterColumn behaviour so that whenever
+your set a column, or specify a RABX'd column in an ->update the value is saved
+to the database. The default behaviour is to check if the value is already set,
+and for hashrefs this means that changes to the contents are missed as it is
+still the same hashref.
+
+By putting all this code in one place there is also much less repetition.
+
+=cut
+
+# Store which columns are RABX cols.
+# $RABX_COLUMNS{$class}{$col} = 1
+my %RABX_COLUMNS = ();
+
+sub _get_class_identifier {
+ my $class = ref $_[0] || $_[0];
+ $class =~ s/.*?(\w+)$/$1/;
+ return $class;
+}
+
+=head1 METHODS
+
+=head2 rabx_column
+
+ # In one of your ::Result:: modules
+ __PACKAGE__->load_components("+FixMyStreet::DB::RABXColumn");
+ __PACKAGE__->rabx_column('data');
+
+This sets up the filtering to and from the database, and also changes the
+set_filtered_column behaviour to not trust the cache.
+
+=cut
+
+sub rabx_column {
+ my ($class, $col) = @_;
+
+ # Apply the filtering for this column
+ $class->filter_column(
+ $col => {
+ filter_from_storage => sub {
+ my $self = shift;
+ my $ser = shift;
+ return undef unless defined $ser;
+ utf8::encode($ser) if utf8::is_utf8($ser);
+ my $h = new IO::String($ser);
+ return RABX::wire_rd($h);
+ },
+ filter_to_storage => sub {
+ my $self = shift;
+ my $data = shift;
+ my $ser = '';
+ my $h = new IO::String($ser);
+ RABX::wire_wr( $data, $h );
+ return $ser;
+ },
+ }
+ );
+
+ # store that this column is a RABX column.
+ $RABX_COLUMNS{ _get_class_identifier($class) }{$col} = 1;
+}
+
+
+sub set_filtered_column {
+ my ($self, $col, $val) = @_;
+
+ my $class = ref $self;
+
+ # because filtered objects may be expensive to marshall for storage there
+ # is a cache that attempts to detect if they have changed or not. For us
+ # this cache breaks things and our marshalling is cheap, so clear it when
+ # trying set a column.
+ delete $self->{_filtered_column}{$col}
+ if $RABX_COLUMNS{ _get_class_identifier($class) }{$col};
+
+ return $self->next::method($col, $val);
+}
+
+
+1;
diff --git a/perllib/FixMyStreet/DB/Result/Alert.pm b/perllib/FixMyStreet/DB/Result/Alert.pm
index fc84c8fd5..4ce72f873 100644
--- a/perllib/FixMyStreet/DB/Result/Alert.pm
+++ b/perllib/FixMyStreet/DB/Result/Alert.pm
@@ -48,7 +48,7 @@ __PACKAGE__->belongs_to(
"alert_type",
"FixMyStreet::DB::Result::AlertType",
{ ref => "alert_type" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->has_many(
"alerts_sent",
@@ -60,12 +60,12 @@ __PACKAGE__->belongs_to(
"user",
"FixMyStreet::DB::Result::User",
{ id => "user_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-03-08 17:19:55
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:vump36YxUO4FQi5Do6DwvA
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:d9yIFiTGtbtFaULXZNKstQ
# You can replace this text with custom code or comments, and it will be preserved on regeneration
diff --git a/perllib/FixMyStreet/DB/Result/AlertSent.pm b/perllib/FixMyStreet/DB/Result/AlertSent.pm
index a537c95cd..422e010a9 100644
--- a/perllib/FixMyStreet/DB/Result/AlertSent.pm
+++ b/perllib/FixMyStreet/DB/Result/AlertSent.pm
@@ -26,12 +26,12 @@ __PACKAGE__->belongs_to(
"alert",
"FixMyStreet::DB::Result::Alert",
{ id => "alert_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-03-08 17:19:55
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oN+36hDWJuc0hqkCW9BHOw
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:COwsprqRSNZS1IxJrPYgMQ
# You can replace this text with custom code or comments, and it will be preserved on regeneration
diff --git a/perllib/FixMyStreet/DB/Result/Body.pm b/perllib/FixMyStreet/DB/Result/Body.pm
index bab16061b..be4adeca9 100644
--- a/perllib/FixMyStreet/DB/Result/Body.pm
+++ b/perllib/FixMyStreet/DB/Result/Body.pm
@@ -20,6 +20,8 @@ __PACKAGE__->add_columns(
},
"name",
{ data_type => "text", is_nullable => 0 },
+ "parent",
+ { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
"endpoint",
{ data_type => "text", is_nullable => 1 },
"jurisdiction",
@@ -38,8 +40,8 @@ __PACKAGE__->add_columns(
{ data_type => "boolean", default_value => \"false", is_nullable => 0 },
"send_extended_statuses",
{ data_type => "boolean", default_value => \"false", is_nullable => 0 },
- "parent",
- { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
+ "deleted",
+ { data_type => "boolean", default_value => \"false", is_nullable => 0 },
"external_url",
{ data_type => "text", is_nullable => 0 },
);
@@ -61,10 +63,10 @@ __PACKAGE__->belongs_to(
"FixMyStreet::DB::Result::User",
{ id => "comment_user_id" },
{
- is_deferrable => 1,
+ is_deferrable => 0,
join_type => "LEFT",
- on_delete => "CASCADE",
- on_update => "CASCADE",
+ on_delete => "NO ACTION",
+ on_update => "NO ACTION",
},
);
__PACKAGE__->has_many(
@@ -78,10 +80,10 @@ __PACKAGE__->belongs_to(
"FixMyStreet::DB::Result::Body",
{ id => "parent" },
{
- is_deferrable => 1,
+ is_deferrable => 0,
join_type => "LEFT",
- on_delete => "CASCADE",
- on_update => "CASCADE",
+ on_delete => "NO ACTION",
+ on_update => "NO ACTION",
},
);
__PACKAGE__->has_many(
@@ -92,8 +94,8 @@ __PACKAGE__->has_many(
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-12-19 12:47:10
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:DdtXjMWRpz20ZHjtY3oP2w
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 18:11:23
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:hTOxxiiHmC8nmQK/p8dXhQ
sub url {
my ( $self, $c ) = @_;
diff --git a/perllib/FixMyStreet/DB/Result/BodyArea.pm b/perllib/FixMyStreet/DB/Result/BodyArea.pm
index 844a3277d..4447777dc 100644
--- a/perllib/FixMyStreet/DB/Result/BodyArea.pm
+++ b/perllib/FixMyStreet/DB/Result/BodyArea.pm
@@ -21,12 +21,12 @@ __PACKAGE__->belongs_to(
"body",
"FixMyStreet::DB::Result::Body",
{ id => "body_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-12-19 12:47:10
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aAr+Nadyu8IckZlK6+PTNg
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+hzie6kHleUBoEt199c/nQ
__PACKAGE__->set_primary_key(__PACKAGE__->columns);
diff --git a/perllib/FixMyStreet/DB/Result/Comment.pm b/perllib/FixMyStreet/DB/Result/Comment.pm
index c747f7fc1..e170a5655 100644
--- a/perllib/FixMyStreet/DB/Result/Comment.pm
+++ b/perllib/FixMyStreet/DB/Result/Comment.pm
@@ -54,6 +54,10 @@ __PACKAGE__->add_columns(
{ data_type => "boolean", default_value => \"false", is_nullable => 0 },
"problem_state",
{ data_type => "text", is_nullable => 1 },
+ "external_id",
+ { data_type => "text", is_nullable => 1 },
+ "extra",
+ { data_type => "text", is_nullable => 1 },
"send_fail_count",
{ data_type => "integer", default_value => 0, is_nullable => 0 },
"send_fail_reason",
@@ -62,55 +66,32 @@ __PACKAGE__->add_columns(
{ data_type => "timestamp", is_nullable => 1 },
"whensent",
{ data_type => "timestamp", is_nullable => 1 },
- "external_id",
- { data_type => "text", is_nullable => 1 },
- "extra",
- { data_type => "text", is_nullable => 1 },
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"problem",
"FixMyStreet::DB::Result::Problem",
{ id => "problem_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"user",
"FixMyStreet::DB::Result::User",
{ id => "user_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-07-11 18:53:26
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:tSejJzLxHD/fMWjpa10lfA
-
-__PACKAGE__->filter_column(
- extra => {
- filter_from_storage => sub {
- my $self = shift;
- my $ser = shift;
- return undef unless defined $ser;
- utf8::encode($ser) if utf8::is_utf8($ser);
- my $h = new IO::String($ser);
- return RABX::wire_rd($h);
- },
- filter_to_storage => sub {
- my $self = shift;
- my $data = shift;
- my $ser = '';
- my $h = new IO::String($ser);
- RABX::wire_wr( $data, $h );
- return $ser;
- },
- }
-);
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:D/+UWcF7JO/EkCiJaAHUOw
+
+__PACKAGE__->load_components("+FixMyStreet::DB::RABXColumn");
+__PACKAGE__->rabx_column('extra');
use DateTime::TimeZone;
use Image::Size;
use Moose;
use namespace::clean -except => [ 'meta' ];
-use RABX;
with 'FixMyStreet::Roles::Abuser';
@@ -145,9 +126,10 @@ sub check_for_errors {
$errors{update} = _('Please enter a message')
unless $self->text =~ m/\S/;
+ # Bromley Council custom character limit
if ( $self->text && $self->problem && $self->problem->bodies_str
- && $self->problem->bodies_str eq '2482' && length($self->text) > 2000 ) {
- $errors{update} = _('Updates are limited to 2000 characters in length. Please shorten your update');
+ && $self->problem->bodies_str eq '2482' && length($self->text) > 1750 ) {
+ $errors{update} = sprintf( _('Updates are limited to %s characters in length. Please shorten your update'), 1750 );
}
return \%errors;
diff --git a/perllib/FixMyStreet/DB/Result/Contact.pm b/perllib/FixMyStreet/DB/Result/Contact.pm
index 551bcd019..eca028c9b 100644
--- a/perllib/FixMyStreet/DB/Result/Contact.pm
+++ b/perllib/FixMyStreet/DB/Result/Contact.pm
@@ -53,32 +53,14 @@ __PACKAGE__->belongs_to(
"body",
"FixMyStreet::DB::Result::Body",
{ id => "body_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-12-13 12:34:33
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:imXq3EtrC0FrQwj+E2xfBw
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:hq/BFHDEu4OUI4MSy3OyHg
-__PACKAGE__->filter_column(
- extra => {
- filter_from_storage => sub {
- my $self = shift;
- my $ser = shift;
- return undef unless defined $ser;
- utf8::encode($ser) if utf8::is_utf8($ser);
- my $h = new IO::String($ser);
- return RABX::wire_rd($h);
- },
- filter_to_storage => sub {
- my $self = shift;
- my $data = shift;
- my $ser = '';
- my $h = new IO::String($ser);
- RABX::wire_wr( $data, $h );
- return $ser;
- },
- }
-);
+__PACKAGE__->load_components("+FixMyStreet::DB::RABXColumn");
+__PACKAGE__->rabx_column('extra');
1;
diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm
index ec15600b6..a06a339bf 100644
--- a/perllib/FixMyStreet/DB/Result/Problem.pm
+++ b/perllib/FixMyStreet/DB/Result/Problem.pm
@@ -120,12 +120,12 @@ __PACKAGE__->belongs_to(
"user",
"FixMyStreet::DB::Result::User",
{ id => "user_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-12-13 15:13:48
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:H2P3Og37G569nQdQA1IWaA
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:U/4BT8EGfcCLKA/7LX+qyQ
# Add fake relationship to stored procedure table
__PACKAGE__->has_one(
@@ -135,54 +135,15 @@ __PACKAGE__->has_one(
{ cascade_copy => 0, cascade_delete => 0 },
);
-__PACKAGE__->filter_column(
- extra => {
- filter_from_storage => sub {
- my $self = shift;
- my $ser = shift;
- return undef unless defined $ser;
- utf8::encode($ser) if utf8::is_utf8($ser);
- my $h = new IO::String($ser);
- return RABX::wire_rd($h);
- },
- filter_to_storage => sub {
- my $self = shift;
- my $data = shift;
- my $ser = '';
- my $h = new IO::String($ser);
- RABX::wire_wr( $data, $h );
- return $ser;
- },
- }
-);
-
-__PACKAGE__->filter_column(
- geocode => {
- filter_from_storage => sub {
- my $self = shift;
- my $ser = shift;
- return undef unless defined $ser;
- utf8::encode($ser) if utf8::is_utf8($ser);
- my $h = new IO::String($ser);
- return RABX::wire_rd($h);
- },
- filter_to_storage => sub {
- my $self = shift;
- my $data = shift;
- my $ser = '';
- my $h = new IO::String($ser);
- RABX::wire_wr( $data, $h );
- return $ser;
- },
- }
-);
+__PACKAGE__->load_components("+FixMyStreet::DB::RABXColumn");
+__PACKAGE__->rabx_column('extra');
+__PACKAGE__->rabx_column('geocode');
use DateTime::TimeZone;
use Image::Size;
use Moose;
use namespace::clean -except => [ 'meta' ];
use Utils;
-use RABX;
with 'FixMyStreet::Roles::Abuser';
@@ -427,9 +388,16 @@ sub check_for_errors {
$self->category(undef);
}
- if ( $self->bodies_str && $self->detail &&
- $self->bodies_str eq '2482' && length($self->detail) > 2000 ) {
- $errors{detail} = _('Reports are limited to 2000 characters in length. Please shorten your report');
+ if ( $self->bodies_str && $self->detail ) {
+ # Custom character limit:
+ # Bromley Council
+ if ( $self->bodies_str eq '2482' && length($self->detail) > 1750 ) {
+ $errors{detail} = sprintf( _('Reports are limited to %s characters in length. Please shorten your report'), 1750 );
+ }
+ # Oxfordshire
+ if ( $self->bodies_str eq '2237' && length($self->detail) > 1700 ) {
+ $errors{detail} = sprintf( _('Reports are limited to %s characters in length. Please shorten your report'), 1700 );
+ }
}
return \%errors;
@@ -578,11 +546,11 @@ sub meta_line {
and $problem->category && $problem->category ne _('Other') )
{
$meta =
- sprintf( _('Reported by %s in the %s category anonymously at %s'),
+ sprintf( _('Reported via %s in the %s category anonymously at %s'),
$problem->service, $problem->category, $date_time );
}
elsif ( $problem->service ) {
- $meta = sprintf( _('Reported by %s anonymously at %s'),
+ $meta = sprintf( _('Reported via %s anonymously at %s'),
$problem->service, $date_time );
}
elsif ( $problem->category and $problem->category ne _('Other') ) {
@@ -598,13 +566,13 @@ sub meta_line {
and $problem->category && $problem->category ne _('Other') )
{
$meta = sprintf(
- _('Reported by %s in the %s category by %s at %s'),
+ _('Reported via %s in the %s category by %s at %s'),
$problem->service, $problem->category,
$problem->name, $date_time
);
}
elsif ( $problem->service ) {
- $meta = sprintf( _('Reported by %s by %s at %s'),
+ $meta = sprintf( _('Reported via %s by %s at %s'),
$problem->service, $problem->name, $date_time );
}
elsif ( $problem->category and $problem->category ne _('Other') ) {
diff --git a/perllib/FixMyStreet/DB/Result/Questionnaire.pm b/perllib/FixMyStreet/DB/Result/Questionnaire.pm
index fcaa17d99..7f9c79d9a 100644
--- a/perllib/FixMyStreet/DB/Result/Questionnaire.pm
+++ b/perllib/FixMyStreet/DB/Result/Questionnaire.pm
@@ -36,12 +36,12 @@ __PACKAGE__->belongs_to(
"problem",
"FixMyStreet::DB::Result::Problem",
{ id => "problem_id" },
- { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
+ { is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-03-08 17:19:55
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:NGlSRjoBpDoIvK3EueqN6Q
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oL1Hk4/bNG14CY74GA75SA
use DateTime::TimeZone;
use Moose;
diff --git a/perllib/FixMyStreet/DB/Result/Token.pm b/perllib/FixMyStreet/DB/Result/Token.pm
index 028300842..5525fe7a5 100644
--- a/perllib/FixMyStreet/DB/Result/Token.pm
+++ b/perllib/FixMyStreet/DB/Result/Token.pm
@@ -34,8 +34,6 @@ __PACKAGE__->set_primary_key("scope", "token");
# use mySociety::DBHandle qw(dbh);
use mySociety::AuthToken;
-use IO::String;
-use RABX;
=head1 NAME
@@ -54,26 +52,9 @@ ms_current_timestamp.
=cut
-__PACKAGE__->filter_column(
- data => {
- filter_from_storage => sub {
- my $self = shift;
- my $ser = shift;
- return undef unless defined $ser;
- utf8::encode($ser) if utf8::is_utf8($ser);
- my $h = new IO::String($ser);
- return RABX::wire_rd($h);
- },
- filter_to_storage => sub {
- my $self = shift;
- my $data = shift;
- my $ser = '';
- my $h = new IO::String($ser);
- RABX::wire_wr( $data, $h );
- return $ser;
- },
- }
-);
+__PACKAGE__->load_components("+FixMyStreet::DB::RABXColumn");
+__PACKAGE__->rabx_column('data');
+
sub new {
my ( $class, $attrs ) = @_;
diff --git a/perllib/FixMyStreet/DB/Result/User.pm b/perllib/FixMyStreet/DB/Result/User.pm
index 481b654c9..523382670 100644
--- a/perllib/FixMyStreet/DB/Result/User.pm
+++ b/perllib/FixMyStreet/DB/Result/User.pm
@@ -58,10 +58,10 @@ __PACKAGE__->belongs_to(
"FixMyStreet::DB::Result::Body",
{ id => "from_body" },
{
- is_deferrable => 1,
+ is_deferrable => 0,
join_type => "LEFT",
- on_delete => "CASCADE",
- on_update => "CASCADE",
+ on_delete => "NO ACTION",
+ on_update => "NO ACTION",
},
);
__PACKAGE__->has_many(
@@ -72,8 +72,8 @@ __PACKAGE__->has_many(
);
-# Created by DBIx::Class::Schema::Loader v0.07017 @ 2012-12-14 09:23:59
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aw374WQraL5ysOvUmUIU3w
+# Created by DBIx::Class::Schema::Loader v0.07035 @ 2013-09-10 17:11:54
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jRAtXRLRNozCmthAg9p0dA
__PACKAGE__->add_columns(
"password" => {
diff --git a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
index a2784950a..cc4fc67fc 100644
--- a/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/AlertType.pm
@@ -58,6 +58,7 @@ sub email_alerts ($) {
while (my $row = $query->fetchrow_hashref) {
my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($row->{alert_cobrand})->new();
+ $cobrand->set_lang_and_domain( $row->{alert_lang}, 1, FixMyStreet->path_to('locale')->stringify );
# Cobranded and non-cobranded messages can share a database. In this case, the conf file
# should specify a vhost to send the reports for each cobrand, so that they don't get sent
@@ -204,7 +205,7 @@ sub _send_aggregated_alert_email(%) {
my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($data{cobrand})->new();
- $cobrand->set_lang_and_domain( $data{lang}, 1 );
+ $cobrand->set_lang_and_domain( $data{lang}, 1, FixMyStreet->path_to('locale')->stringify );
if (!$data{alert_email}) {
my $user = FixMyStreet::App->model('DB::User')->find( {
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
index 97d457297..5499af474 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
@@ -216,6 +216,11 @@ sub categories_summary {
return \%categories;
}
+sub get_admin_url {
+ my ($rs, $cobrand, $row) = @_;
+ return $cobrand->admin_base_url . '/report_edit/' . $row->id;
+}
+
sub send_reports {
my ( $rs, $site_override ) = @_;
@@ -259,10 +264,14 @@ sub send_reports {
}
$cobrand->set_lang_and_domain($row->lang, 1);
- if ( $row->is_from_abuser ) {
+ if ( $row->is_from_abuser) {
$row->update( { state => 'hidden' } );
debug_print("hiding because its sender is flagged as an abuser", $row->id) if $debug_mode;
next;
+ } elsif ( $row->title =~ /app store test/i ) {
+ $row->update( { state => 'hidden' } );
+ debug_print("hiding because it is an app store test message", $row->id) if $debug_mode;
+ next;
}
# Template variables for the email
@@ -274,7 +283,7 @@ sub send_reports {
$h{query} = $row->postcode;
$h{url} = $email_base_url . $row->url;
- $h{admin_url} = $cobrand->admin_base_url . 'report_edit/' . $row->id;
+ $h{admin_url} = $rs->get_admin_url($cobrand, $row);
$h{phone_line} = $h{phone} ? _('Phone:') . " $h{phone}\n\n" : '';
if ($row->photo) {
$h{has_photo} = _("This web page also contains a photo of the problem, provided by the user.") . "\n\n";
@@ -331,7 +340,10 @@ sub send_reports {
# XXX Only copes with at most one missing body
my ($bodies, $missing) = $row->bodies_str =~ /^([\d,]+)(?:\|(\d+))?/;
my @bodies = split(/,/, $bodies);
- $bodies = FixMyStreet::App->model("DB::Body")->search({ id => \@bodies });
+ $bodies = FixMyStreet::App->model("DB::Body")->search(
+ { id => \@bodies },
+ { order_by => 'name' },
+ );
$missing = FixMyStreet::App->model("DB::Body")->find($missing) if $missing;
my @dear;
diff --git a/perllib/FixMyStreet/Map/GoogleOL.pm b/perllib/FixMyStreet/Map/GoogleOL.pm
new file mode 100644
index 000000000..64baf8d36
--- /dev/null
+++ b/perllib/FixMyStreet/Map/GoogleOL.pm
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+#
+# FixMyStreet:Map::GoogleOL
+# Google maps on FixMyStreet, using OpenLayers.
+#
+# Copyright (c) 2013 UK Citizens Online Democracy. All rights reserved.
+# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
+
+package FixMyStreet::Map::GoogleOL;
+use parent 'FixMyStreet::Map::OSM';
+
+use strict;
+
+sub map_type {
+ return '""';
+}
+
+sub map_template {
+ return 'google-ol';
+}
+
+1;
diff --git a/perllib/FixMyStreet/SendReport/Email.pm b/perllib/FixMyStreet/SendReport/Email.pm
index 9006e2f11..e8151f175 100644
--- a/perllib/FixMyStreet/SendReport/Email.pm
+++ b/perllib/FixMyStreet/SendReport/Email.pm
@@ -33,14 +33,24 @@ sub build_recipient_list {
$self->unconfirmed_notes->{$body_email}{$row->category} = $note;
}
+ my $body_name = $body->name;
# see something uses council areas but doesn't send to councils so just use a
# generic name here to minimise confusion
if ( $row->cobrand eq 'seesomething' ) {
- push @{ $self->to }, [ $body_email, 'See Something, Say Something' ];
+ $body_name = 'See Something, Say Something';
+ }
+
+ my @emails;
+ # allow multiple emails per contact
+ if ( $body_email =~ /,/ ) {
+ @emails = split(/,/, $body_email);
} else {
- push @{ $self->to }, [ $body_email, $body->name ];
+ @emails = ( $body_email );
+ }
+ for my $email ( @emails ) {
+ push @{ $self->to }, [ $email, $body_name ];
+ $recips{$email} = 1;
}
- $recips{$body_email} = 1;
}
return () unless $all_confirmed;
@@ -74,7 +84,7 @@ sub send {
# on a staging server send emails to ourselves rather than the bodies
if (mySociety::Config::get('STAGING_SITE') && !mySociety::Config::get('SEND_REPORTS_ON_STAGING') && !FixMyStreet->test_mode) {
- @recips = ( mySociety::Config::get('CONTACT_EMAIL') );
+ @recips = ( $row->user->email );
}
unless ( @recips ) {
diff --git a/perllib/FixMyStreet/TestMech.pm b/perllib/FixMyStreet/TestMech.pm
index e91c6a1d6..be8f004a5 100644
--- a/perllib/FixMyStreet/TestMech.pm
+++ b/perllib/FixMyStreet/TestMech.pm
@@ -87,8 +87,8 @@ sub log_in_ok {
my $user = $mech->create_user_ok($email);
- # store the old password and then change it
- my $old_password = $user->password;
+ # remember the old password and then change it to a known one
+ my $old_password = $user->password || '';
$user->update( { password => 'secret' } );
# log in
@@ -99,7 +99,19 @@ sub log_in_ok {
$mech->logged_in_ok;
# restore the password (if there was one)
- $user->update( { password => $old_password } ) if $old_password;
+ if ($old_password) {
+
+ # Use store_column and then make_column_dirty to bypass the filters that
+ # would hash the password, otherwise the password required ito log in
+ # would be the hash of the previous one.
+ $user->store_column("password", $old_password);
+ $user->make_column_dirty("password");
+ $user->update();
+
+ # Belt and braces, check that the password has been correctly saved.
+ die "password not correctly restored after log_in_ok"
+ if $user->password ne $old_password;
+ }
return $user;
}
@@ -296,7 +308,7 @@ sub extract_location {
$meta = $mech->extract_problem_meta;
-Returns the problem meta information ( submitted by, at etc ) from a
+Returns the problem meta information ( submitted by, at etc ) from a
problem report page
=cut
diff --git a/perllib/Open311.pm b/perllib/Open311.pm
index 6c811d445..c8289a442 100644
--- a/perllib/Open311.pm
+++ b/perllib/Open311.pm
@@ -290,6 +290,7 @@ sub _populate_service_request_update_params {
my $name = $comment->name || $comment->user->name;
my ( $firstname, $lastname ) = ( $name =~ /(\w+)\.?\s+(.+)/ );
+ $lastname ||= '-';
# fall back to problem state as it's probably correct
my $state = $comment->problem_state || $comment->problem->state;
diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm
index ae1f06a50..f7b758137 100644
--- a/perllib/Open311/GetServiceRequestUpdates.pm
+++ b/perllib/Open311/GetServiceRequestUpdates.pm
@@ -127,7 +127,9 @@ sub update_comments {
# actually changing the state of the problem
if ( FixMyStreet::DB::Result::Problem->council_states()->{$state} && $p->state ne $state &&
!( $p->is_fixed && FixMyStreet::DB::Result::Problem->fixed_states()->{$state} ) ) {
- $p->state($state);
+ if ($p->is_visible) {
+ $p->state($state);
+ }
$comment->problem_state($state);
}
}
@@ -137,17 +139,19 @@ sub update_comments {
$comment->insert();
if ( $self->suppress_alerts ) {
- my $alert = FixMyStreet::App->model('DB::Alert')->find( {
+ my @alerts = FixMyStreet::App->model('DB::Alert')->search( {
alert_type => 'new_updates',
parameter => $p->id,
confirmed => 1,
user_id => $p->user->id,
} );
- my $alerts_sent = FixMyStreet::App->model('DB::AlertSent')->find_or_create( {
- alert_id => $alert->id,
- parameter => $comment->id,
- } );
+ for my $alert (@alerts) {
+ my $alerts_sent = FixMyStreet::App->model('DB::AlertSent')->find_or_create( {
+ alert_id => $alert->id,
+ parameter => $comment->id,
+ } );
+ }
}
}
}
diff --git a/t/app/controller/about.t b/t/app/controller/about.t
index ed28eb584..b3562ea04 100644
--- a/t/app/controller/about.t
+++ b/t/app/controller/about.t
@@ -11,10 +11,9 @@ $mech->get_ok('/about');
$mech->content_like(qr{About us ::\s+FixMyStreet});
$mech->content_contains('html class="no-js" lang="en-gb"');
-SKIP: {
- skip( "Need 'emptyhomes' in ALLOWED_COBRANDS config", 8 )
- unless FixMyStreet::Cobrand->exists('emptyhomes');
-
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes' ],
+}, sub {
# check that geting the page as EHA produces a different page
ok $mech->host("reportemptyhomes.co.uk"), 'change host to reportemptyhomes';
$mech->get_ok('/about');
@@ -26,6 +25,6 @@ SKIP: {
$mech->get_ok('/about');
$mech->content_like(qr{Amdanom ni ::\s+Rhoi gwybod am eiddo gwag});
$mech->content_contains('html lang="cy"');
-}
+};
done_testing();
diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t
index 521497f3e..e369968b4 100644
--- a/t/app/controller/admin.t
+++ b/t/app/controller/admin.t
@@ -53,6 +53,7 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create(
used_map => 't',
name => 'Test User',
anonymous => 'f',
+ external_id => '13',
state => 'confirmed',
confirmed => $dt->ymd . ' ' . $dt->hms,
lang => 'en-gb',
@@ -93,7 +94,11 @@ subtest 'check summary counts' => sub {
my $alerts = FixMyStreet::App->model('DB::Alert')->search( { confirmed => { '>' => 0 } } );
my $a_count = $alerts->count;
- $mech->get_ok('/admin');
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmystreet' ],
+ }, sub {
+ $mech->get_ok('/admin');
+ };
$mech->title_like(qr/Summary/);
@@ -105,10 +110,9 @@ subtest 'check summary counts' => sub {
$mech->content_contains( "$q_count questionnaires sent" );
- SKIP: {
- skip( "Need 'barnet' in ALLOWED_COBRANDS config", 7 )
- unless FixMyStreet::Cobrand->exists('barnet');
-
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'barnet' ],
+ }, sub {
ok $mech->host('barnet.fixmystreet.com');
$mech->get_ok('/admin');
@@ -137,19 +141,23 @@ subtest 'check summary counts' => sub {
$alert->cobrand('');
$alert->update;
- }
+ };
FixMyStreet::App->model('DB::Problem')->search( { bodies_str => 1 } )->update( { bodies_str => 2489 } );
ok $mech->host('fixmystreet.com');
};
-my $host = FixMyStreet->config('BASE_URL');
-
my $body = $mech->create_body_ok(2650, 'Aberdeen City Council');
-$mech->get_ok('/admin/body/2650');
+FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ MAPIT_TYPES => [ 'UTA' ],
+ BASE_URL => 'http://www.example.org',
+}, sub {
+ $mech->get_ok('/admin/body/2650');
+};
$mech->content_contains('Aberdeen City Council');
$mech->content_like(qr{AB\d\d});
-$mech->content_contains("$host/around");
+$mech->content_contains("http://www.example.org/around");
subtest 'check contact creation' => sub {
my $contact = FixMyStreet::App->model('DB::Contact')->search(
@@ -555,7 +563,7 @@ foreach my $test (
$report->discard_changes;
if ( $report->state eq 'confirmed' ) {
- $mech->content_contains( 'type="submit" name="resend"', 'no resend button' );
+ $mech->content_contains( 'type="submit" name="resend"', 'resend button' );
} else {
$mech->content_lacks( 'type="submit" name="resend"', 'no resend button' );
}
@@ -1032,13 +1040,19 @@ subtest 'report search' => sub {
$mech->content_contains( $report->title );
my $r_id = $report->id;
- $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id">$r_id</a>} );
+ $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id"[^>]*>$r_id</a>} );
+
+ $mech->get_ok('/admin/reports?search=' . $report->external_id);
+ $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id"[^>]*>$r_id</a>} );
+
+ $mech->get_ok('/admin/reports?search=ref:' . $report->external_id);
+ $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id"[^>]*>$r_id</a>} );
$mech->get_ok('/admin/reports?search=' . $report->user->email);
my $u_id = $update->id;
- $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id">$r_id</a>} );
- $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id#update_$u_id">$u_id</a>} );
+ $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id"[^>]*>$r_id</a>} );
+ $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id#update_$u_id"[^>]*>$u_id</a>} );
$update->state('hidden');
$update->update;
@@ -1056,7 +1070,7 @@ subtest 'report search' => sub {
$report->update;
$mech->get_ok('/admin/reports?search=' . $report->user->email);
- $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id">$r_id</a>} );
+ $mech->content_like( qr{href="http://[^/]*[^.]/report/$r_id"[^>]*>$r_id</a>} );
};
subtest 'search abuse' => sub {
@@ -1205,6 +1219,26 @@ for my $test (
};
}
+subtest "Test setting a report from unconfirmed to something else doesn't cause a front end error" => sub {
+ $report->update( { confirmed => undef, state => 'unconfirmed', non_public => 0 } );
+ $mech->get_ok("/admin/report_edit/$report_id");
+ $mech->submit_form_ok( { with_fields => { state => 'investigating' } } );
+ $report->discard_changes;
+ ok( $report->confirmed, 'report has a confirmed timestamp' );
+ $mech->get_ok("/report/$report_id");
+};
+
+subtest "Check admin_base_url" => sub {
+ my $rs = FixMyStreet::App->model('DB::Problem');
+ my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($report->cobrand)->new();
+
+ is (FixMyStreet::App->model('DB::Problem')->get_admin_url(
+ $cobrand,
+ $report),
+ (sprintf 'https://secure.mysociety.org/admin/bci/report_edit/%d', $report_id),
+ 'get_admin_url OK');
+};
+
$mech->delete_user( $user );
$mech->delete_user( $user2 );
$mech->delete_user( $user3 );
diff --git a/t/app/controller/alert.t b/t/app/controller/alert.t
index 847aa1a17..6fab4d3e3 100644
--- a/t/app/controller/alert.t
+++ b/t/app/controller/alert.t
@@ -12,56 +12,61 @@ $mech->content_contains('Local RSS feeds and email alerts');
$mech->content_contains('html class="no-js" lang="en-gb"');
# check that we can get list page
-$mech->get_ok('/alert/list');
-$mech->title_like(qr/^Local RSS feeds and email alerts/);
-$mech->content_contains('Local RSS feeds and email alerts');
-$mech->content_contains('html class="no-js" lang="en-gb"');
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $mech->get_ok('/alert/list');
+ $mech->title_like(qr/^Local RSS feeds and email alerts/);
+ $mech->content_contains('Local RSS feeds and email alerts');
+ $mech->content_contains('html class="no-js" lang="en-gb"');
-$mech->get_ok('/alert/list?pc=EH99 1SP');
-$mech->title_like(qr/^Local RSS feeds and email alerts/);
-$mech->content_contains('Here are the types of local problem alerts for &lsquo;EH99&nbsp;1SP&rsquo;');
-$mech->content_contains('html class="no-js" lang="en-gb"');
-$mech->content_contains('Problems within 8.5km');
-$mech->content_contains('rss/pc/EH991SP/2');
-$mech->content_contains('rss/pc/EH991SP/5');
-$mech->content_contains('rss/pc/EH991SP/10');
-$mech->content_contains('rss/pc/EH991SP/20');
-$mech->content_contains('Problems within City of Edinburgh');
-$mech->content_contains('Problems within City Centre ward');
-$mech->content_contains('/rss/reports/City+of+Edinburgh');
-$mech->content_contains('/rss/reports/City+of+Edinburgh/City+Centre');
-$mech->content_contains('council:2651:City_of_Edinburgh');
-$mech->content_contains('ward:2651:20728:City_of_Edinburgh:City_Centre');
+ $mech->get_ok('/alert/list?pc=EH99 1SP');
+ $mech->title_like(qr/^Local RSS feeds and email alerts/);
+ $mech->content_contains('Here are the types of local problem alerts for &lsquo;EH99&nbsp;1SP&rsquo;');
+ $mech->content_contains('html class="no-js" lang="en-gb"');
+ $mech->content_contains('Problems within 8.5km');
+ $mech->content_contains('rss/pc/EH991SP/2');
+ $mech->content_contains('rss/pc/EH991SP/5');
+ $mech->content_contains('rss/pc/EH991SP/10');
+ $mech->content_contains('rss/pc/EH991SP/20');
+ $mech->content_contains('Problems within City of Edinburgh');
+ $mech->content_contains('Problems within City Centre ward');
+ $mech->content_contains('/rss/reports/City+of+Edinburgh');
+ $mech->content_contains('/rss/reports/City+of+Edinburgh/City+Centre');
+ $mech->content_contains('council:2651:City_of_Edinburgh');
+ $mech->content_contains('ward:2651:20728:City_of_Edinburgh:City_Centre');
-$mech->get_ok('/alert/list?pc=High Street');
-$mech->content_contains('We found more than one match for that location');
+ $mech->get_ok('/alert/list?pc=High Street');
+ $mech->content_contains('We found more than one match for that location');
-$mech->get_ok('/alert/list?pc=');
-$mech->content_contains('To find out what local alerts we have for you');
+ $mech->get_ok('/alert/list?pc=');
+ $mech->content_contains('To find out what local alerts we have for you');
-$mech->get_ok('/alert/list?pc=GL502PR');
-$mech->content_contains('Problems within the boundary of');
+ $mech->get_ok('/alert/list?pc=GL502PR');
+ $mech->content_contains('Problems within the boundary of');
-$mech->get_ok('/alert/subscribe?rss=1&type=local&pc=ky16+8yg&rss=Give+me+an+RSS+feed&rznvy=' );
-$mech->content_contains('Please select the feed you want');
+ $mech->get_ok('/alert/subscribe?rss=1&type=local&pc=ky16+8yg&rss=Give+me+an+RSS+feed&rznvy=' );
+ $mech->content_contains('Please select the feed you want');
-$mech->get_ok('/alert/subscribe?rss=1&feed=invalid:1000:A_Locationtype=local&pc=ky16+8yg&rss=Give+me+an+RSS+feed&rznvy=');
-$mech->content_contains('Illegal feed selection');
+ $mech->get_ok('/alert/subscribe?rss=1&feed=invalid:1000:A_Locationtype=local&pc=ky16+8yg&rss=Give+me+an+RSS+feed&rznvy=');
+ $mech->content_contains('Illegal feed selection');
-$mech->create_body_ok(2504, 'Birmingham City Council');
-$mech->create_body_ok(2226, 'Gloucestershire County Council');
-$mech->create_body_ok(2326, 'Cheltenham Borough Council');
+ $mech->create_body_ok(2504, 'Birmingham City Council');
+ $mech->create_body_ok(2226, 'Gloucestershire County Council');
+ $mech->create_body_ok(2326, 'Cheltenham Borough Council');
-$mech->get_ok('/alert/subscribe?rss=1&feed=area:1000:Birmingham');
-is $mech->uri->path, '/rss/reports/Birmingham';
+ $mech->get_ok('/alert/subscribe?rss=1&feed=area:1000:Birmingham');
+ is $mech->uri->path, '/rss/reports/Birmingham';
-$mech->get_ok('/alert/subscribe?rss=1&feed=area:1000:1001:Cheltenham:Lansdown');
-is $mech->uri->path, '/rss/area/Cheltenham/Lansdown';
+ $mech->get_ok('/alert/subscribe?rss=1&feed=area:1000:1001:Cheltenham:Lansdown');
+ is $mech->uri->path, '/rss/area/Cheltenham/Lansdown';
-$mech->get_ok('/alert/subscribe?rss=1&feed=council:1000:Gloucestershire');
-is $mech->uri->path, '/rss/reports/Gloucestershire';
+ $mech->get_ok('/alert/subscribe?rss=1&feed=council:1000:Gloucestershire');
+ is $mech->uri->path, '/rss/reports/Gloucestershire';
-$mech->get_ok('/alert/subscribe?rss=1&feed=ward:1000:1001:Cheltenham:Lansdown');
-is $mech->uri->path, '/rss/reports/Cheltenham/Lansdown';
+ $mech->get_ok('/alert/subscribe?rss=1&feed=ward:1000:1001:Cheltenham:Lansdown');
+ is $mech->uri->path, '/rss/reports/Cheltenham/Lansdown';
+};
done_testing();
diff --git a/t/app/controller/alert_new.t b/t/app/controller/alert_new.t
index 23240c3b9..1804da32e 100644
--- a/t/app/controller/alert_new.t
+++ b/t/app/controller/alert_new.t
@@ -207,7 +207,12 @@ foreach my $test (
$mech->log_in_ok( $test->{email} );
$mech->clear_emails_ok;
- $mech->get_ok('/alert/list?pc=EH991SP');
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok('/alert/list?pc=EH991SP');
+ };
$mech->set_visible( [ radio => 'council:2651:City_of_Edinburgh' ] );
$mech->click('alert');
@@ -306,13 +311,18 @@ subtest "Test two-tier council alerts" => sub {
result => '/rss/reports/Gloucestershire/Lansdown+and+Park'
},
) {
- $mech->get_ok( '/alert/list?pc=GL502PR' );
- $mech->submit_form_ok( {
- button => 'rss',
- with_fields => {
- feed => $alert->{feed},
- }
- } );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok( '/alert/list?pc=GL502PR' );
+ $mech->submit_form_ok( {
+ button => 'rss',
+ with_fields => {
+ feed => $alert->{feed},
+ }
+ } );
+ };
is $mech->uri->path, $alert->{result}, 'Redirected to right RSS feed';
}
};
@@ -344,11 +354,16 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
},
) {
$mech->get_ok( '/alert' );
- $mech->submit_form_ok( { with_fields => { pc => 'EH11BB' } } );
- $mech->submit_form_ok( {
- button => 'alert',
- with_fields => $alert->{fields},
- } );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH11BB' } } );
+ $mech->submit_form_ok( {
+ button => 'alert',
+ with_fields => $alert->{fields},
+ } );
+ };
if ( $alert->{email_confirm} ) {
my $email = $mech->get_email;
$mech->clear_emails_ok;
@@ -425,7 +440,11 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
$update_id = $update->id;
ok $update, "created test update - $update_id";
- FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
# TODO Note the below will fail if the db has an existing alert that matches
$mech->email_count_is(3);
my @emails = $mech->get_email;
@@ -545,11 +564,19 @@ for my $test (
} );
$mech->clear_emails_ok;
- FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
$mech->email_count_is(0);
$report->update( { non_public => 0 } );
- FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
$mech->email_count_is(1);
my $email = $mech->get_email;
like $email->body, qr/Alert\s+test\s+for\s+non\s+public\s+reports/, 'alert contains public report';
diff --git a/t/app/controller/around.t b/t/app/controller/around.t
index fa2d94aed..cbb110a1a 100644
--- a/t/app/controller/around.t
+++ b/t/app/controller/around.t
@@ -14,7 +14,11 @@ subtest "check that if no query we get sent back to the homepage" => sub {
# historic links
subtest "redirect x,y requests to lat/lon (301 - permanent)" => sub {
- $mech->get_ok('/around?x=3281&y=1113');
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok('/around?x=3281&y=1113');
+ };
# did we redirect to lat,lon?
is $mech->uri->path, '/around', "still on /around";
@@ -75,8 +79,13 @@ foreach my $test (
{
subtest "check lat/lng for '$test->{pc}'" => sub {
$mech->get_ok('/');
- $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } },
- "good location" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } },
+ "good location" );
+ };
is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'";
is_deeply $mech->extract_location, $test,
"got expected location for pc '$test->{pc}'";
@@ -93,8 +102,13 @@ subtest 'check non public reports are not displayed on around page' => sub {
$mech->create_problems_for_body( 5, 2651, 'Around page', $params );
$mech->get_ok('/');
- $mech->submit_form_ok( { with_fields => { pc => 'EH99 1SP' } },
- "good location" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH99 1SP' } },
+ "good location" );
+ };
$mech->content_contains( 'Around page Test 3 for 2651',
'problem to be marked non public visible' );
diff --git a/t/app/controller/dashboard.t b/t/app/controller/dashboard.t
index c1e9c3ace..5e4b4cbeb 100644
--- a/t/app/controller/dashboard.t
+++ b/t/app/controller/dashboard.t
@@ -2,10 +2,6 @@ use strict;
use warnings;
use Test::More;
-# XXX
-plan skip_all => 'Disabling failing dashboard tests until they can be looked at';
-exit;
-
use FixMyStreet::TestMech;
use Web::Scraper;
@@ -28,579 +24,592 @@ my $p_user = FixMyStreet::App->model('DB::User')->find_or_create( {
email => 'p_user@example.com'
} );
-$mech->not_logged_in_ok;
-$mech->get_ok('/dashboard');
-
-$mech->content_contains( 'sign in' );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
-$mech->submit_form(
- with_fields => { email => $test_user, password_sign_in => $test_pass }
-);
+ $mech->not_logged_in_ok;
+ $mech->get_ok('/dashboard');
-is $mech->status, '404', 'If not council user get 404';
+ $mech->content_contains( 'sign in' );
-$user->from_body( $test_council );
-$user->update;
-
-$mech->log_out_ok;
-$mech->get_ok('/dashboard');
-$mech->submit_form_ok( {
- with_fields => { email => $test_user, password_sign_in => $test_pass }
-} );
+ $mech->submit_form(
+ with_fields => { email => $test_user, password_sign_in => $test_pass }
+ );
-$mech->content_contains( 'City of Edinburgh' );
+ is $mech->status, '404', 'If not council user get 404';
-FixMyStreet::App->model('DB::Contact')->search( { body_id => $test_council } )
- ->delete;
+ $user->from_body( $test_council );
+ $user->update;
-delete_problems();
+ $mech->log_out_ok;
+ $mech->get_ok('/dashboard');
+ $mech->submit_form_ok( {
+ with_fields => { email => $test_user, password_sign_in => $test_pass }
+ } );
-my @cats = qw( Grafitti Litter Potholes Other );
-for my $contact ( @cats ) {
- FixMyStreet::App->model('DB::Contact')->create(
- {
- body_id => $test_council,
- category => $contact,
- email => "$contact\@example.org",
- confirmed => 1,
- whenedited => DateTime->now,
- deleted => 0,
- editor => 'test',
- note => 'test',
- }
- );
-}
+ $mech->content_contains( 'City of Edinburgh' );
-$mech->get_ok('/dashboard');
-
-my $categories = scraper {
- process "select[name=category] > option", 'cats[]' => 'TEXT',
- process "select[name=ward] > option", 'wards[]' => 'TEXT',
- process "table[id=overview] > tr", 'rows[]' => scraper {
- process 'td', 'cols[]' => 'TEXT'
- },
- process "tr[id=total] > td", 'totals[]' => 'TEXT',
- process "tr[id=fixed_council] > td", 'council[]' => 'TEXT',
- process "tr[id=fixed_user] > td", 'user[]' => 'TEXT',
- process "tr[id=total_fixed] > td", 'total_fixed[]' => 'TEXT',
- process "tr[id=in_progress] > td", 'in_progress[]' => 'TEXT',
- process "tr[id=action_scheduled] > td", 'action_scheduled[]' => 'TEXT',
- process "tr[id=investigating] > td", 'investigating[]' => 'TEXT',
- process "tr[id=marked] > td", 'marked[]' => 'TEXT',
- process "tr[id=avg_marked] > td", 'avg_marked[]' => 'TEXT',
- process "tr[id=avg_fixed] > td", 'avg_fixed[]' => 'TEXT',
- process "tr[id=not_marked] > td", 'not_marked[]' => 'TEXT',
- process "tr[id=closed] > td", 'closed[]' => 'TEXT',
- process "table[id=reports] > tr > td", 'report_lists[]' => scraper {
- process 'ul > li', 'reports[]' => 'TEXT'
- },
-};
+ FixMyStreet::App->model('DB::Contact')->search( { body_id => $test_council } )
+ ->delete;
-my $expected_cats = [ 'All', '-- Pick a category --', @cats ];
-my $res = $categories->scrape( $mech->content );
-is_deeply( $res->{cats}, $expected_cats, 'correct list of categories' );
+ delete_problems();
-foreach my $row ( @{ $res->{rows} }[1 .. 11] ) {
- foreach my $col ( @{ $row->{cols} } ) {
- is $col, 0;
+ my @cats = qw( Grafitti Litter Potholes Other );
+ for my $contact ( @cats ) {
+ FixMyStreet::App->model('DB::Contact')->create(
+ {
+ body_id => $test_council,
+ category => $contact,
+ email => "$contact\@example.org",
+ confirmed => 1,
+ whenedited => DateTime->now,
+ deleted => 0,
+ editor => 'test',
+ note => 'test',
+ }
+ );
}
-}
-for my $reports ( @{ $res->{report_lists} } ) {
- is_deeply $reports, {}, 'No reports';
-}
+ $mech->get_ok('/dashboard');
-foreach my $test (
- {
- desc => 'confirmed today with no state',
- dt => DateTime->now,
- counts => [1,1,1,1],
- report_counts => [1, 0, 0],
- },
- {
- desc => 'confirmed last 7 days with no state',
- dt => DateTime->now->subtract( days => 6, hours => 23 ),
- counts => [1,2,2,2],
- report_counts => [2, 0, 0],
- },
- {
- desc => 'confirmed last 8 days with no state',
- dt => DateTime->now->subtract( days => 8 ),
- counts => [1,2,3,3],
- report_counts => [2, 1, 0],
- },
- {
- desc => 'confirmed last 4 weeks with no state',
- dt => DateTime->now->subtract( weeks => 2 ),
- counts => [1,2,4,4],
- report_counts => [2, 1, 1],
- },
- {
- desc => 'confirmed this year with no state',
- dt => DateTime->now->subtract( weeks => 7 ),
- counts => [1,2,4,5],
- report_counts => [2, 1, 1],
- },
-) {
- subtest $test->{desc} => sub {
- make_problem( { state => 'confirmed', conf_dt => $test->{dt} } );
-
- $mech->get_ok('/dashboard');
- $res = $categories->scrape( $mech->content );
-
- check_row( $res, 'totals', $test->{counts} );
- check_row( $res, 'not_marked', $test->{counts} );
-
- check_report_counts( $res, $test->{report_counts} );
+ my $categories = scraper {
+ process "select[name=category] > option", 'cats[]' => 'TEXT',
+ process "select[name=ward] > option", 'wards[]' => 'TEXT',
+ process "table[id=overview] > tr", 'rows[]' => scraper {
+ process 'td', 'cols[]' => 'TEXT'
+ },
+ process "tr[id=total] > td", 'totals[]' => 'TEXT',
+ process "tr[id=fixed_council] > td", 'council[]' => 'TEXT',
+ process "tr[id=fixed_user] > td", 'user[]' => 'TEXT',
+ process "tr[id=total_fixed] > td", 'total_fixed[]' => 'TEXT',
+ process "tr[id=in_progress] > td", 'in_progress[]' => 'TEXT',
+ process "tr[id=action_scheduled] > td", 'action_scheduled[]' => 'TEXT',
+ process "tr[id=investigating] > td", 'investigating[]' => 'TEXT',
+ process "tr[id=marked] > td", 'marked[]' => 'TEXT',
+ process "tr[id=avg_marked] > td", 'avg_marked[]' => 'TEXT',
+ process "tr[id=avg_fixed] > td", 'avg_fixed[]' => 'TEXT',
+ process "tr[id=not_marked] > td", 'not_marked[]' => 'TEXT',
+ process "tr[id=closed] > td", 'closed[]' => 'TEXT',
+ process "table[id=reports] > tr > td", 'report_lists[]' => scraper {
+ process 'ul > li', 'reports[]' => 'TEXT'
+ },
};
-}
-delete_problems();
-
-my $is_monday = DateTime->now->day_of_week == 1 ? 1 : 0;
-
-foreach my $test (
- {
- desc => 'user fixed today',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'fixed - user',
- counts => {
- totals => $is_monday ? [0,1,1,1] : [1,1,1,1],
- user => [1,1,1,1],
- council => [0,0,0,0],
- avg_fixed => [0,0,0,0],
- total_fixed => [1,1,1,1],
- }
- },
- {
- desc => 'council fixed today',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'fixed - council',
- counts => {
- totals => $is_monday ? [0,2,2,2] : [2,2,2,2],
- user => [1,1,1,1],
- council => [1,1,1,1],
- avg_fixed => [1,1,1,1],
- total_fixed => [2,2,2,2],
- }
- },
- {
- desc => 'marked investigating today',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'investigating',
- counts => {
- totals => $is_monday ? [0,3,3,3] : [3,3,3,3],
- user => [1,1,1,1],
- council => [1,1,1,1],
- total_fixed => [2,2,2,2],
- avg_marked => [1,1,1,1],
- investigating => [1,1,1,1],
- marked => [1,1,1,1]
- }
- },
- {
- desc => 'marked in progress today',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'in progress',
- counts => {
- totals => $is_monday ? [0,4,4,4] : [4,4,4,4],
- user => [1,1,1,1],
- council => [1,1,1,1],
- total_fixed => [2,2,2,2],
- avg_marked => [1,1,1,1],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- marked => [2,2,2,2]
- }
- },
- {
- desc => 'marked as action scheduled today',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'action scheduled',
- counts => {
- totals => $is_monday ? [ 0,5,5,5] : [5,5,5,5],
- user => [1,1,1,1],
- council => [1,1,1,1],
- total_fixed => [2,2,2,2],
- avg_marked => [1,1,1,1],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [1,1,1,1],
- marked => [3,3,3,3]
- }
- },
- {
- desc => 'marked as action scheduled today, confirmed a week ago',
- confirm_dt => DateTime->now->subtract( days => 8 ),
- mark_dt => DateTime->now,
- state => 'action scheduled',
- counts => {
- totals => $is_monday ? [0,5,6,6] : [5,5,6,6],
- user => [1,1,1,1],
- council => [1,1,1,1],
- total_fixed => [2,2,2,2],
- avg_marked => [3,3,3,3],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [2,2,2,2],
- marked => [4,4,4,4]
- }
- },
- {
- desc => 'marked as council fixed today, confirmed a week ago',
- confirm_dt => DateTime->now->subtract( days => 8 ),
- mark_dt => DateTime->now,
- state => 'fixed - council',
- counts => {
- totals => $is_monday ? [0,5,7,7] : [5,5,7,7],
- user => [1,1,1,1],
- council => [2,2,2,2],
- total_fixed => [3,3,3,3],
- avg_fixed => [5,5,5,5],
- avg_marked => [3,3,3,3],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [2,2,2,2],
- marked => [4,4,4,4]
- }
- },
- {
- desc => 'marked as council fixed a week ago, confirmed 3 weeks ago',
- confirm_dt => DateTime->now->subtract( days => 21),
- mark_dt => DateTime->now->subtract( days => 8 ),
- state => 'fixed - council',
- counts => {
- totals => $is_monday ? [0,5,8,8] : [5,5,8,8],
- user => [1,1,1,1],
- council => [2,2,3,3],
- total_fixed => [3,3,4,4],
- avg_fixed => [5,5,7,7],
- avg_marked => [3,3,3,3],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [2,2,2,2],
- marked => [4,4,4,4]
- }
- },
- {
- desc => 'marked as user fixed 6 weeks ago, confirmed 7 weeks ago',
- confirm_dt => DateTime->now->subtract( weeks => 6 ),
- mark_dt => DateTime->now->subtract( weeks => 7 ),
- state => 'fixed - user',
- counts => {
- totals => $is_monday ? [0,5,8,9] : [5,5,8,9],
- user => [1,1,1,2],
- council => [2,2,3,3],
- total_fixed => [3,3,4,5],
- avg_fixed => [5,5,7,7],
- avg_marked => [3,3,3,3],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [2,2,2,2],
- marked => [4,4,4,4]
- }
- },
- {
- desc => 'marked as closed',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'closed',
- counts => {
- totals => $is_monday ? [0,6,9,10] : [6,6,9,10],
- user => [1,1,1,2],
- council => [2,2,3,3],
- total_fixed => [3,3,4,5],
- avg_fixed => [5,5,7,7],
- avg_marked => [2,2,2,2],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [2,2,2,2],
- closed => [1,1,1,1],
- marked => [5,5,5,5]
- }
- },
- {
- desc => 'marked as planned',
- confirm_dt => DateTime->now->subtract( days => 1 ),
- mark_dt => DateTime->now,
- state => 'planned',
- counts => {
- totals => $is_monday ? [0,7,10,11] : [7,7,10,11],
- user => [1,1,1,2],
- council => [2,2,3,3],
- total_fixed => [3,3,4,5],
- avg_fixed => [5,5,7,7],
- avg_marked => [2,2,2,2],
- investigating => [1,1,1,1],
- in_progress => [1,1,1,1],
- action_scheduled => [3,3,3,3],
- closed => [1,1,1,1],
- marked => [6,6,6,6]
- }
- },
-) {
- subtest $test->{desc} => sub {
- make_problem(
- {
- state => $test->{state},
- conf_dt => $test->{confirm_dt},
- mark_dt => $test->{mark_dt},
- }
- );
+ my $expected_cats = [ 'All', '-- Pick a category --', @cats ];
+ my $res = $categories->scrape( $mech->content );
+ is_deeply( $res->{cats}, $expected_cats, 'correct list of categories' );
- $mech->get_ok('/dashboard');
- $res = $categories->scrape( $mech->content );
-
- foreach my $row ( keys %{ $test->{counts} } ) {
- check_row( $res, $row, $test->{counts}->{$row} );
+ foreach my $row ( @{ $res->{rows} }[1 .. 11] ) {
+ foreach my $col ( @{ $row->{cols} } ) {
+ is $col, 0;
}
- };
-}
+ }
-delete_problems();
+ for my $reports ( @{ $res->{report_lists} } ) {
+ is_deeply $reports, {}, 'No reports';
+ }
-for my $test (
- {
- desc => 'Selecting no category does nothing',
- p1 => {
- state => 'confirmed',
- conf_dt => DateTime->now(),
- category => 'Potholes',
+ foreach my $test (
+ {
+ desc => 'confirmed today with no state',
+ dt => DateTime->now,
+ counts => [1,1,1,1],
+ report_counts => [1, 0, 0],
},
- p2 => {
- state => 'confirmed',
- conf_dt => DateTime->now(),
- category => 'Litter',
+ {
+ desc => 'confirmed last 7 days with no state',
+ dt => DateTime->now->subtract( days => 6, hours => 23 ),
+ counts => [1,2,2,2],
+ report_counts => [2, 0, 0],
+ },
+ {
+ desc => 'confirmed last 8 days with no state',
+ dt => DateTime->now->subtract( days => 8 ),
+ counts => [1,2,3,3],
+ report_counts => [2, 1, 0],
},
- category => '',
- counts => {
- totals => [2,2,2,2],
+ {
+ desc => 'confirmed last 4 weeks with no state',
+ dt => DateTime->now->subtract( weeks => 2 ),
+ counts => [1,2,4,4],
+ report_counts => [2, 1, 1],
},
- counts_after => {
- totals => [2,2,2,2],
+ {
+ desc => 'confirmed this year with no state',
+ dt => DateTime->now->subtract( weeks => 7 ),
+ counts => [1,2,4,5],
+ report_counts => [2, 1, 1],
+ },
+ ) {
+ subtest $test->{desc} => sub {
+ make_problem( { state => 'confirmed', conf_dt => $test->{dt} } );
+
+ $mech->get_ok('/dashboard');
+ $res = $categories->scrape( $mech->content );
+
+ check_row( $res, 'totals', $test->{counts} );
+ check_row( $res, 'not_marked', $test->{counts} );
+
+ check_report_counts( $res, $test->{report_counts} );
+ };
+ }
+
+ delete_problems();
+
+ my $is_monday = DateTime->now->day_of_week == 1 ? 1 : 0;
+
+ foreach my $test (
+ {
+ desc => 'user fixed today',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'fixed - user',
+ counts => {
+ totals => $is_monday ? [0,1,1,1] : [1,1,1,1],
+ user => [1,1,1,1],
+ council => [0,0,0,0],
+ avg_fixed => [0,0,0,0],
+ total_fixed => [1,1,1,1],
+ }
},
- report_counts => [2,0,0],
- report_counts_after => [2,0,0],
- },
- {
- desc => 'Limit display by category',
- category => 'Potholes',
- counts => {
- totals => [2,2,2,2],
+ {
+ desc => 'council fixed today',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'fixed - council',
+ counts => {
+ totals => $is_monday ? [0,2,2,2] : [2,2,2,2],
+ user => [1,1,1,1],
+ council => [1,1,1,1],
+ avg_fixed => [1,1,1,1],
+ total_fixed => [2,2,2,2],
+ }
},
- counts_after => {
- totals => [1,1,1,1],
+ {
+ desc => 'marked investigating today',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'investigating',
+ counts => {
+ totals => $is_monday ? [0,3,3,3] : [3,3,3,3],
+ user => [1,1,1,1],
+ council => [1,1,1,1],
+ total_fixed => [2,2,2,2],
+ avg_marked => [1,1,1,1],
+ investigating => [1,1,1,1],
+ marked => [1,1,1,1]
+ }
},
- report_counts => [2,0,0],
- report_counts_after => [1,0,0],
- },
- {
- desc => 'Limit display for category with no entries',
- category => 'Grafitti',
- counts => {
- totals => [2,2,2,2],
+ {
+ desc => 'marked in progress today',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'in progress',
+ counts => {
+ totals => $is_monday ? [0,4,4,4] : [4,4,4,4],
+ user => [1,1,1,1],
+ council => [1,1,1,1],
+ total_fixed => [2,2,2,2],
+ avg_marked => [1,1,1,1],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ marked => [2,2,2,2]
+ }
},
- counts_after => {
- totals => [0,0,0,0],
+ {
+ desc => 'marked as action scheduled today',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'action scheduled',
+ counts => {
+ totals => $is_monday ? [ 0,5,5,5] : [5,5,5,5],
+ user => [1,1,1,1],
+ council => [1,1,1,1],
+ total_fixed => [2,2,2,2],
+ avg_marked => [1,1,1,1],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [1,1,1,1],
+ marked => [3,3,3,3]
+ }
},
- report_counts => [2,0,0],
- report_counts_after => [0,0,0],
- },
- {
- desc => 'Limit display by category for council fixed',
- p1 => {
- state => 'fixed - council',
- conf_dt => DateTime->now()->subtract( weeks => 1 ),
- mark_dt => DateTime->now()->subtract( weeks => 1 ),
- category => 'Potholes',
+ {
+ desc => 'marked as action scheduled today, confirmed a week ago',
+ confirm_dt => DateTime->now->subtract( days => 8 ),
+ mark_dt => DateTime->now,
+ state => 'action scheduled',
+ counts => {
+ totals => $is_monday ? [0,5,6,6] : [5,5,6,6],
+ user => [1,1,1,1],
+ council => [1,1,1,1],
+ total_fixed => [2,2,2,2],
+ avg_marked => [3,3,3,3],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [2,2,2,2],
+ marked => [4,4,4,4]
+ }
},
- p2 => {
- state => 'fixed - council',
- conf_dt => DateTime->now()->subtract( weeks => 1 ),
- mark_dt => DateTime->now()->subtract( weeks => 1 ),
- category => 'Litter',
+ {
+ desc => 'marked as council fixed today, confirmed a week ago',
+ confirm_dt => DateTime->now->subtract( days => 8 ),
+ mark_dt => DateTime->now,
+ state => 'fixed - council',
+ counts => {
+ totals => $is_monday ? [0,5,7,7] : [5,5,7,7],
+ user => [1,1,1,1],
+ council => [2,2,2,2],
+ total_fixed => [3,3,3,3],
+ avg_fixed => [5,5,5,5],
+ avg_marked => [3,3,3,3],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [2,2,2,2],
+ marked => [4,4,4,4]
+ }
},
- category => 'Potholes',
- counts => {
- council => [0,0,2,2],
- totals => [2,2,4,4],
+ {
+ desc => 'marked as council fixed a week ago, confirmed 3 weeks ago',
+ confirm_dt => DateTime->now->subtract( days => 21),
+ mark_dt => DateTime->now->subtract( days => 8 ),
+ state => 'fixed - council',
+ counts => {
+ totals => $is_monday ? [0,5,8,8] : [5,5,8,8],
+ user => [1,1,1,1],
+ council => [2,2,3,3],
+ total_fixed => [3,3,4,4],
+ avg_fixed => [5,5,7,7],
+ avg_marked => [3,3,3,3],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [2,2,2,2],
+ marked => [4,4,4,4]
+ }
},
- counts_after => {
- council => [0,0,1,1],
- totals => [1,1,2,2],
+ {
+ desc => 'marked as user fixed 6 weeks ago, confirmed 7 weeks ago',
+ confirm_dt => DateTime->now->subtract( weeks => 6 ),
+ mark_dt => DateTime->now->subtract( weeks => 7 ),
+ state => 'fixed - user',
+ counts => {
+ totals => $is_monday ? [0,5,8,9] : [5,5,8,9],
+ user => [1,1,1,2],
+ council => [2,2,3,3],
+ total_fixed => [3,3,4,5],
+ avg_fixed => [5,5,7,7],
+ avg_marked => [3,3,3,3],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [2,2,2,2],
+ marked => [4,4,4,4]
+ }
},
- report_counts => [2,2,0],
- report_counts_after => [1,1,0],
- },
- {
- desc => 'Limit display by category for user fixed',
- p1 => {
- state => 'fixed - user',
- conf_dt => DateTime->now()->subtract( weeks => 1 ),
- mark_dt => DateTime->now()->subtract( weeks => 1 ),
- category => 'Potholes',
+ {
+ desc => 'marked as closed',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'closed',
+ counts => {
+ totals => $is_monday ? [0,6,9,10] : [6,6,9,10],
+ user => [1,1,1,2],
+ council => [2,2,3,3],
+ total_fixed => [3,3,4,5],
+ avg_fixed => [5,5,7,7],
+ avg_marked => [2,2,2,2],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [2,2,2,2],
+ closed => [1,1,1,1],
+ marked => [5,5,5,5]
+ }
},
- p2 => {
- state => 'fixed - user',
- conf_dt => DateTime->now()->subtract( weeks => 1 ),
- mark_dt => DateTime->now()->subtract( weeks => 1 ),
- category => 'Litter',
+ {
+ desc => 'marked as planned',
+ confirm_dt => DateTime->now->subtract( days => 1 ),
+ mark_dt => DateTime->now,
+ state => 'planned',
+ counts => {
+ totals => $is_monday ? [0,7,10,11] : [7,7,10,11],
+ user => [1,1,1,2],
+ council => [2,2,3,3],
+ total_fixed => [3,3,4,5],
+ avg_fixed => [5,5,7,7],
+ avg_marked => [2,2,2,2],
+ investigating => [1,1,1,1],
+ in_progress => [1,1,1,1],
+ action_scheduled => [3,3,3,3],
+ closed => [1,1,1,1],
+ marked => [6,6,6,6]
+ }
},
- category => 'Potholes',
- counts => {
- user => [0,0,2,2],
- council => [0,0,2,2],
- totals => [2,2,6,6],
+ ) {
+ subtest $test->{desc} => sub {
+ make_problem(
+ {
+ state => $test->{state},
+ conf_dt => $test->{confirm_dt},
+ mark_dt => $test->{mark_dt},
+ }
+ );
+
+ $mech->get_ok('/dashboard');
+ $res = $categories->scrape( $mech->content );
+
+ foreach my $row ( keys %{ $test->{counts} } ) {
+ check_row( $res, $row, $test->{counts}->{$row} );
+ }
+ };
+ }
+
+ delete_problems();
+
+ for my $test (
+ {
+ desc => 'Selecting no category does nothing',
+ p1 => {
+ state => 'confirmed',
+ conf_dt => DateTime->now(),
+ category => 'Potholes',
+ },
+ p2 => {
+ state => 'confirmed',
+ conf_dt => DateTime->now(),
+ category => 'Litter',
+ },
+ category => '',
+ counts => {
+ totals => [2,2,2,2],
+ },
+ counts_after => {
+ totals => [2,2,2,2],
+ },
+ report_counts => [2,0,0],
+ report_counts_after => [2,0,0],
},
- counts_after => {
- user => [0,0,1,1],
- council => [0,0,1,1],
- totals => [1,1,3,3],
+ {
+ desc => 'Limit display by category',
+ category => 'Potholes',
+ counts => {
+ totals => [2,2,2,2],
+ },
+ counts_after => {
+ totals => [1,1,1,1],
+ },
+ report_counts => [2,0,0],
+ report_counts_after => [1,0,0],
},
- report_counts => [2,4,0],
- report_counts_after => [1,2,0],
- },
- {
- desc => 'Limit display by ward',
- p1 => {
- state => 'confirmed',
- conf_dt => DateTime->now()->subtract( weeks => 1 ),
- category => 'Potholes',
- # in real life it has commas around it and the search
- # uses them
- areas => ',20720,',
+ {
+ desc => 'Limit display for category with no entries',
+ category => 'Grafitti',
+ counts => {
+ totals => [2,2,2,2],
+ },
+ counts_after => {
+ totals => [0,0,0,0],
+ },
+ report_counts => [2,0,0],
+ report_counts_after => [0,0,0],
},
- p2 => {
- state => 'fixed - council',
- conf_dt => DateTime->now()->subtract( weeks => 1 ),
- mark_dt => DateTime->now()->subtract( weeks => 1 ),
- category => 'Litter',
- areas => ',20720,',
+ {
+ desc => 'Limit display by category for council fixed',
+ p1 => {
+ state => 'fixed - council',
+ conf_dt => DateTime->now()->subtract( weeks => 1 ),
+ mark_dt => DateTime->now()->subtract( weeks => 1 ),
+ category => 'Potholes',
+ },
+ p2 => {
+ state => 'fixed - council',
+ conf_dt => DateTime->now()->subtract( weeks => 1 ),
+ mark_dt => DateTime->now()->subtract( weeks => 1 ),
+ category => 'Litter',
+ },
+ category => 'Potholes',
+ counts => {
+ council => [0,0,2,2],
+ totals => [2,2,4,4],
+ },
+ counts_after => {
+ council => [0,0,1,1],
+ totals => [1,1,2,2],
+ },
+ report_counts => [2,2,0],
+ report_counts_after => [1,1,0],
},
- ward => 20720,
- counts => {
- user => [0,0,2,2],
- council => [0,0,3,3],
- totals => [2,2,8,8],
+ {
+ desc => 'Limit display by category for user fixed',
+ p1 => {
+ state => 'fixed - user',
+ conf_dt => DateTime->now()->subtract( weeks => 1 ),
+ mark_dt => DateTime->now()->subtract( weeks => 1 ),
+ category => 'Potholes',
+ },
+ p2 => {
+ state => 'fixed - user',
+ conf_dt => DateTime->now()->subtract( weeks => 1 ),
+ mark_dt => DateTime->now()->subtract( weeks => 1 ),
+ category => 'Litter',
+ },
+ category => 'Potholes',
+ counts => {
+ user => [0,0,2,2],
+ council => [0,0,2,2],
+ totals => [2,2,6,6],
+ },
+ counts_after => {
+ user => [0,0,1,1],
+ council => [0,0,1,1],
+ totals => [1,1,3,3],
+ },
+ report_counts => [2,4,0],
+ report_counts_after => [1,2,0],
},
- counts_after => {
- user => [0,0,0,0],
- council => [0,0,1,1],
- totals => [0,0,2,2],
+ {
+ desc => 'Limit display by ward',
+ p1 => {
+ state => 'confirmed',
+ conf_dt => DateTime->now()->subtract( weeks => 1 ),
+ category => 'Potholes',
+ # in real life it has commas around it and the search
+ # uses them
+ areas => ',20720,',
+ },
+ p2 => {
+ state => 'fixed - council',
+ conf_dt => DateTime->now()->subtract( weeks => 1 ),
+ mark_dt => DateTime->now()->subtract( weeks => 1 ),
+ category => 'Litter',
+ areas => ',20720,',
+ },
+ ward => 20720,
+ counts => {
+ user => [0,0,2,2],
+ council => [0,0,3,3],
+ totals => [2,2,8,8],
+ },
+ counts_after => {
+ user => [0,0,0,0],
+ council => [0,0,1,1],
+ totals => [0,0,2,2],
+ },
+ report_counts => [2,6,0],
+ report_counts_after => [0,2,0],
},
- report_counts => [2,6,0],
- report_counts_after => [0,2,0],
- },
-) {
- subtest $test->{desc} => sub {
- make_problem( $test->{p1} ) if $test->{p1};
- make_problem( $test->{p2} ) if $test->{p2};
+ ) {
+ subtest $test->{desc} => sub {
+ make_problem( $test->{p1} ) if $test->{p1};
+ make_problem( $test->{p2} ) if $test->{p2};
- $mech->get_ok('/dashboard');
+ $mech->get_ok('/dashboard');
- $res = $categories->scrape( $mech->content );
+ $res = $categories->scrape( $mech->content );
- foreach my $row ( keys %{ $test->{counts} } ) {
- check_row( $res, $row, $test->{counts}->{$row} );
- }
+ foreach my $row ( keys %{ $test->{counts} } ) {
+ check_row( $res, $row, $test->{counts}->{$row} );
+ }
- check_report_counts( $res, $test->{report_counts} );
+ check_report_counts( $res, $test->{report_counts} );
- $mech->submit_form_ok( {
- with_fields => {
- category => $test->{category},
- ward => $test->{ward},
- }
- } );
+ $mech->submit_form_ok( {
+ with_fields => {
+ category => $test->{category},
+ ward => $test->{ward},
+ }
+ } );
- $res = $categories->scrape( $mech->content );
+ $res = $categories->scrape( $mech->content );
- foreach my $row ( keys %{ $test->{counts_after} } ) {
- check_row( $res, $row, $test->{counts_after}->{$row} );
- }
- check_report_counts( $res, $test->{report_counts_after} );
- };
-}
+ foreach my $row ( keys %{ $test->{counts_after} } ) {
+ check_row( $res, $row, $test->{counts_after}->{$row} );
+ }
+ check_report_counts( $res, $test->{report_counts_after} );
+ };
+ }
-delete_problems();
+ delete_problems();
-for my $test (
- {
- desc => 'Selecting no state does nothing',
- p1 => {
- state => 'fixed - user',
- conf_dt => DateTime->now(),
- category => 'Potholes',
- },
- p2 => {
- state => 'confirmed',
- conf_dt => DateTime->now(),
- category => 'Litter',
+ for my $test (
+ {
+ desc => 'Selecting no state does nothing',
+ p1 => {
+ state => 'fixed - user',
+ conf_dt => DateTime->now(),
+ category => 'Potholes',
+ },
+ p2 => {
+ state => 'confirmed',
+ conf_dt => DateTime->now(),
+ category => 'Litter',
+ },
+ state => '',
+ report_counts => [2,0,0],
+ report_counts_after => [2,0,0],
},
- state => '',
- report_counts => [2,0,0],
- report_counts_after => [2,0,0],
- },
- {
- desc => 'limit by state works',
- state => 'fixed',
- report_counts => [2,0,0],
- report_counts_after => [1,0,0],
- },
- {
- desc => 'planned counted as action scheduled',
- p1 => {
- state => 'planned',
- conf_dt => DateTime->now(),
- category => 'Potholes',
+ {
+ desc => 'limit by state works',
+ state => 'fixed',
+ report_counts => [2,0,0],
+ report_counts_after => [1,0,0],
},
- state => 'action scheduled',
- report_counts => [3,0,0],
- report_counts_after => [1,0,0],
- },
- {
- desc => 'All fixed states count as fixed',
- p1 => {
- state => 'fixed - council',
- conf_dt => DateTime->now(),
- category => 'Potholes',
+ {
+ desc => 'planned counted as action scheduled',
+ p1 => {
+ state => 'planned',
+ conf_dt => DateTime->now(),
+ category => 'Potholes',
+ },
+ state => 'action scheduled',
+ report_counts => [3,0,0],
+ report_counts_after => [1,0,0],
},
- p2 => {
- state => 'fixed',
- conf_dt => DateTime->now(),
- category => 'Potholes',
+ {
+ desc => 'All fixed states count as fixed',
+ p1 => {
+ state => 'fixed - council',
+ conf_dt => DateTime->now(),
+ category => 'Potholes',
+ },
+ p2 => {
+ state => 'fixed',
+ conf_dt => DateTime->now(),
+ category => 'Potholes',
+ },
+ state => 'fixed',
+ report_counts => [5,0,0],
+ report_counts_after => [3,0,0],
},
- state => 'fixed',
- report_counts => [5,0,0],
- report_counts_after => [3,0,0],
- },
-) {
- subtest $test->{desc} => sub {
- make_problem( $test->{p1} ) if $test->{p1};
- make_problem( $test->{p2} ) if $test->{p2};
+ ) {
+ subtest $test->{desc} => sub {
+ make_problem( $test->{p1} ) if $test->{p1};
+ make_problem( $test->{p2} ) if $test->{p2};
- $mech->get_ok('/dashboard');
+ $mech->get_ok('/dashboard');
- $res = $categories->scrape( $mech->content );
+ $res = $categories->scrape( $mech->content );
- check_report_counts( $res, $test->{report_counts} );
+ check_report_counts( $res, $test->{report_counts} );
- $mech->submit_form_ok( {
- with_fields => {
- state => $test->{state},
- }
- } );
+ $mech->submit_form_ok( {
+ with_fields => {
+ state => $test->{state},
+ }
+ } );
+
+ $res = $categories->scrape( $mech->content );
- $res = $categories->scrape( $mech->content );
+ check_report_counts( $res, $test->{report_counts_after} );
+ };
+ }
- check_report_counts( $res, $test->{report_counts_after} );
+ subtest 'export as csv' => sub {
+ $mech->get_ok('/dashboard?export=1');
+ my @lines = split /\n/, $mech->content;
+ is scalar @lines, 6, '1 (header) + 5 (reports) = 6 lines';
};
-}
+};
+
sub make_problem {
my $args = shift;
diff --git a/t/app/controller/index.t b/t/app/controller/index.t
index 47c08291f..7fc15ab4b 100644
--- a/t/app/controller/index.t
+++ b/t/app/controller/index.t
@@ -47,7 +47,11 @@ subtest "does pc, (x,y), (e,n) or (lat,lon) go to /around" => sub {
$uri->query_form( $test->{in} );
# get the uri and check for 302
- $mech->get_ok($uri);
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok($uri);
+ };
# check that we are at /around
is $mech->uri->path, '/around', "Got to /around";
diff --git a/t/app/controller/questionnaire.t b/t/app/controller/questionnaire.t
index 5c81a43d1..3468909b9 100644
--- a/t/app/controller/questionnaire.t
+++ b/t/app/controller/questionnaire.t
@@ -383,10 +383,9 @@ for my $test (
};
}
-SKIP: {
- skip( "Need 'emptyhomes' in ALLOWED_COBRANDS config", 18 )
- unless FixMyStreet::Cobrand->exists('emptyhomes');
-
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes', 'fixmystreet' ],
+}, sub {
# EHA extra checking
ok $mech->host("reportemptyhomes.com"), 'change host to reportemptyhomes';
@@ -436,12 +435,11 @@ SKIP: {
ok $questionnaire, 'found questionnaire';
$questionnaire2->delete;
-}
-
-SKIP: {
- skip( "Need 'fiksgatami' in ALLOWED_COBRANDS config", 5 )
- unless FixMyStreet::Cobrand->exists('fiksgatami');
+};
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fiksgatami' ],
+}, sub {
# I18N Unicode extra testing using FiksGataMi
$report->send_questionnaire( 1 );
$report->cobrand( 'fiksgatami' );
@@ -455,7 +453,7 @@ SKIP: {
like $email->body, qr/Testing =96 Detail/, 'email contains encoded character from user';
like $email->body, qr/sak p=E5 FiksGataMi/, 'email contains encoded character from template';
is $email->header('Content-Type'), 'text/plain; charset="windows-1252"', 'email is in right encoding';
-}
+};
$mech->delete_user('test@example.com');
done_testing();
diff --git a/t/app/controller/report_display.t b/t/app/controller/report_display.t
index 7904b6736..07e8caa9b 100644
--- a/t/app/controller/report_display.t
+++ b/t/app/controller/report_display.t
@@ -97,15 +97,16 @@ subtest "change report to unconfirmed and check for 404 status" => sub {
subtest "Zurich unconfirmeds are 200" => sub {
- if ( !FixMyStreet::Cobrand->exists('zurich') ) {
- plan skip_all => 'Skipping Zurich test without Zurich cobrand';
- }
- $mech->host( 'zurich.fixmystreet.com' );
- ok $report->update( { state => 'unconfirmed' } ), 'unconfirm report';
- $mech->get_ok("/report/$report_id");
- $mech->content_contains( '&Uuml;berpr&uuml;fung ausstehend' );
- ok $report->update( { state => 'confirmed' } ), 'confirm report again';
- $mech->host( 'www.fixmystreet.com' );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->host( 'zurich.example.com' );
+ ok $report->update( { state => 'unconfirmed' } ), 'unconfirm report';
+ $mech->get_ok("/report/$report_id");
+ $mech->content_contains( '&Uuml;berpr&uuml;fung ausstehend' );
+ ok $report->update( { state => 'confirmed' } ), 'confirm report again';
+ $mech->host( 'www.fixmystreet.com' );
+ };
};
subtest "change report to hidden and check for 410 status" => sub {
@@ -183,14 +184,14 @@ foreach my $meta (
category => '',
service => 'Transport service',
meta =>
-'Reported by Transport service by Test User at 15:47, Sat 16 April 2011'
+'Reported via Transport service by Test User at 15:47, Sat 16 April 2011'
},
{
anonymous => 'f',
category => 'Roads',
service => 'Transport service',
meta =>
-'Reported by Transport service in the Roads category by Test User at 15:47, Sat 16 April 2011'
+'Reported via Transport service in the Roads category by Test User at 15:47, Sat 16 April 2011'
},
{
anonymous => 't',
@@ -210,14 +211,14 @@ foreach my $meta (
category => '',
service => 'Transport service',
meta =>
-'Reported by Transport service anonymously at 15:47, Sat 16 April 2011'
+'Reported via Transport service anonymously at 15:47, Sat 16 April 2011'
},
{
anonymous => 't',
category => 'Roads',
service => 'Transport service',
meta =>
-'Reported by Transport service in the Roads category anonymously at 15:47, Sat 16 April 2011'
+'Reported via Transport service in the Roads category anonymously at 15:47, Sat 16 April 2011'
},
)
{
@@ -400,10 +401,10 @@ for my $test (
}
subtest "Zurich banners are displayed correctly" => sub {
- if ( !FixMyStreet::Cobrand->exists('zurich') ) {
- plan skip_all => 'Skipping Zurich test without Zurich cobrand';
- }
- $mech->host( 'zurich.fixmystreet.com' );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->host( 'zurich.example.com' );
for my $test (
{
@@ -466,6 +467,7 @@ subtest "Zurich banners are displayed correctly" => sub {
}
$mech->host( 'www.fixmystreet.com' );
+ };
};
$mech->create_body_ok(2504, 'Westminster City Council');
diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t
index e25764c4b..a6ccc9604 100644
--- a/t/app/controller/report_import.t
+++ b/t/app/controller/report_import.t
@@ -63,10 +63,14 @@ subtest "Test creating bad partial entries" => sub {
{
$mech->get_ok('/import');
- $mech->submit_form_ok( #
- { with_fields => $test->{fields} },
- "fill in form"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ }, sub {
+ $mech->submit_form_ok( #
+ { with_fields => $test->{fields} },
+ "fill in form"
+ );
+ };
is_deeply( $mech->import_errors, $test->{errors}, "expected errors" );
}
@@ -103,7 +107,11 @@ subtest "Submit a correct entry" => sub {
ok $token_url, "Found a token url $token_url";
# go to the token url
- $mech->get_ok($token_url);
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok($token_url);
+ };
# check that we are on '/around'
is $mech->uri->path, '/around', "sent to /around";
@@ -112,10 +120,15 @@ subtest "Submit a correct entry" => sub {
is_deeply $mech->visible_form_values, { pc => '' },
"check only pc field is shown";
- $mech->submit_form_ok( #
- { with_fields => { pc => 'SW1A 1AA' } },
- "fill in postcode"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok(
+ { with_fields => { pc => 'SW1A 1AA' } },
+ "fill in postcode"
+ );
+ };
is $mech->uri->path, '/report/new', "sent to report page";
@@ -136,14 +149,19 @@ subtest "Submit a correct entry" => sub {
$mech->content_contains( '<img align="right" src="/photo/' );
$mech->content_contains('latitude" value="51.50101"', 'Check latitude');
$mech->content_contains('longitude" value="-0.141587"', 'Check longitude');
- $mech->submit_form_ok(
- {
- button => 'tile_32742.21793',
- x => 10,
- y => 10,
- },
- "New map location"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok(
+ {
+ button => 'tile_32742.21793',
+ x => 10,
+ y => 10,
+ },
+ "New map location"
+ );
+ };
$mech->content_contains( '<img align="right" src="/photo/' );
$mech->content_contains('latitude" value="51.50519"', 'Check latitude');
$mech->content_contains('longitude" value="-0.142608"', 'Check longitude');
@@ -162,19 +180,24 @@ subtest "Submit a correct entry" => sub {
"check imported fields are shown";
# change the details
- $mech->submit_form_ok( #
- {
- with_fields => {
- name => 'New Test User',
- title => 'New Test report',
- detail => 'This is a test report',
- phone => '01234 567 890',
- may_show_name => '1',
- category => 'Street lighting',
- }
- },
- "Update details and save"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok(
+ {
+ with_fields => {
+ name => 'New Test User',
+ title => 'New Test report',
+ detail => 'This is a test report',
+ phone => '01234 567 890',
+ may_show_name => '1',
+ category => 'Street lighting',
+ }
+ },
+ "Update details and save"
+ );
+ };
# check that report has been created
my $user =
@@ -221,7 +244,12 @@ subtest "Submit a correct entry (with location)" => sub {
ok $token_url, "Found a token url $token_url";
# go to the token url
- $mech->get_ok($token_url);
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok($token_url);
+ };
# check that we are on '/report/new'
is $mech->uri->path, '/report/new', "sent to /report/new";
@@ -240,19 +268,24 @@ subtest "Submit a correct entry (with location)" => sub {
"check imported fields are shown";
# change the details
- $mech->submit_form_ok( #
- {
- with_fields => {
- name => 'New Test User ll',
- title => 'New Test report ll',
- detail => 'This is a test report ll',
- phone => '01234 567 890',
- may_show_name => '1',
- category => 'Street lighting',
- }
- },
- "Update details and save"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( #
+ {
+ with_fields => {
+ name => 'New Test User ll',
+ title => 'New Test report ll',
+ detail => 'This is a test report ll',
+ phone => '01234 567 890',
+ may_show_name => '1',
+ category => 'Street lighting',
+ }
+ },
+ "Update details and save"
+ );
+ };
# check that report has been created
my $user =
@@ -268,72 +301,71 @@ subtest "Submit a correct entry (with location)" => sub {
};
subtest "Submit a correct entry (with location) to cobrand" => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fiksgatami' ],
+ MAPIT_URL => 'http://mapit.nuug.no/',
+ }, sub {
+ ok $mech->host("fiksgatami.no"), 'change host to fiksgatami';
- SKIP: {
- skip( "Need 'fiksgatami' in ALLOWED_COBRANDS config", 20 )
- unless FixMyStreet::Cobrand->exists('fiksgatami');
- mySociety::MaPit::configure('http://mapit.nuug.no/');
- ok $mech->host("fiksgatami.no"), 'change host to fiksgatami';
+ $mech->get_ok('/import');
- $mech->get_ok('/import');
+ $mech->submit_form_ok( #
+ {
+ with_fields => {
+ service => 'test-script',
+ lat => '59',
+ lon => '10',
+ name => 'Test User ll',
+ email => 'test-ll@example.com',
+ subject => 'Test report ll',
+ detail => 'This is a test report ll',
+ photo => $sample_file,
+ }
+ },
+ "fill in form"
+ );
- $mech->submit_form_ok( #
- {
- with_fields => {
- service => 'test-script',
- lat => '59',
- lon => '10',
- name => 'Test User ll',
- email => 'test-ll@example.com',
- subject => 'Test report ll',
- detail => 'This is a test report ll',
- photo => $sample_file,
- }
- },
- "fill in form"
- );
+ is_deeply( $mech->import_errors, [], "got no errors" );
+ is $mech->content, 'SUCCESS', "Got success response";
- is_deeply( $mech->import_errors, [], "got no errors" );
- is $mech->content, 'SUCCESS', "Got success response";
+ # check that we have received the email
+ $mech->email_count_is(1);
+ my $email = $mech->get_email;
+ $mech->clear_emails_ok;
- # check that we have received the email
- $mech->email_count_is(1);
- my $email = $mech->get_email;
- $mech->clear_emails_ok;
+ my ($token_url) = $email->body =~ m{(http://\S+)};
+ ok $token_url, "Found a token url $token_url";
- my ($token_url) = $email->body =~ m{(http://\S+)};
- ok $token_url, "Found a token url $token_url";
+ # go to the token url
+ $mech->get_ok($token_url);
- # go to the token url
- $mech->get_ok($token_url);
+ # check that we are on '/report/new'
+ is $mech->uri->path, '/report/new', "sent to /report/new";
- # check that we are on '/report/new'
- is $mech->uri->path, '/report/new', "sent to /report/new";
-
- # check that fields are prefilled for us
- is_deeply $mech->visible_form_values,
- {
- name => 'Test User ll',
- title => 'Test report ll',
- detail => 'This is a test report ll',
- photo => '',
- phone => '',
- may_show_name => '1',
- },
- "check imported fields are shown";
-
- my $user =
- FixMyStreet::App->model('DB::User')
- ->find( { email => 'test-ll@example.com' } );
- ok $user, "Found a user";
-
- my $report = $user->problems->first;
- is $report->state, 'partial', 'is still partial';
- is $report->title, 'Test report ll', 'title is correct';
- is $report->lang, 'nb', 'language is correct';
-
- $mech->delete_user($user);
- }
+ # check that fields are prefilled for us
+ is_deeply $mech->visible_form_values,
+ {
+ name => 'Test User ll',
+ title => 'Test report ll',
+ detail => 'This is a test report ll',
+ photo => '',
+ phone => '',
+ may_show_name => '1',
+ },
+ "check imported fields are shown";
+
+ my $user =
+ FixMyStreet::App->model('DB::User')
+ ->find( { email => 'test-ll@example.com' } );
+ ok $user, "Found a user";
+
+ my $report = $user->problems->first;
+ is $report->state, 'partial', 'is still partial';
+ is $report->title, 'Test report ll', 'title is correct';
+ is $report->lang, 'nb', 'language is correct';
+
+ $mech->delete_user($user);
+ };
};
done_testing();
diff --git a/t/app/controller/report_interest_count.t b/t/app/controller/report_interest_count.t
index bfd1a8d1f..3de931c74 100644
--- a/t/app/controller/report_interest_count.t
+++ b/t/app/controller/report_interest_count.t
@@ -51,10 +51,9 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create(
my $report_id = $report->id;
ok $report, "created test report - $report_id";
-SKIP: {
- skip( "Need 'fixmybarangay' in ALLOWED_COBRANDS config", 29 )
- unless FixMyStreet::Cobrand->exists('fixmybarangay');
-
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmybarangay' ],
+}, sub {
$mech->create_body_ok(2504, 'Westminster City Council');
for my $test (
diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t
index d1f246e95..2993eddac 100644
--- a/t/app/controller/report_new.t
+++ b/t/app/controller/report_new.t
@@ -454,17 +454,22 @@ foreach my $test (
$mech->get_ok('/around');
# submit initial pc form
- $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } },
- "submit location" );
- is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'";
-
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
-
- # submit the main form
- $mech->submit_form_ok( { with_fields => $test->{fields} },
- "submit form" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } },
+ "submit location" );
+ is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'";
+
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
+
+ # submit the main form
+ $mech->submit_form_ok( { with_fields => $test->{fields} },
+ "submit form" );
+ };
# check that we got the errors expected
is_deeply $mech->page_errors, $test->{errors}, "check errors";
@@ -522,30 +527,35 @@ foreach my $test (
# submit initial pc form
$mech->get_ok('/around');
- $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
- "submit location" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
+ "submit location" );
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
- $mech->submit_form_ok(
- {
- button => 'submit_register',
- with_fields => {
- title => 'Test Report',
- detail => 'Test report details.',
- photo => '',
- name => 'Joe Bloggs',
- may_show_name => '1',
- email => 'test-1@example.com',
- phone => '07903 123 456',
- category => 'Street lighting',
- password_register => $test->{password} ? 'secret' : '',
- }
- },
- "submit good details"
- );
+ $mech->submit_form_ok(
+ {
+ button => 'submit_register',
+ with_fields => {
+ title => 'Test Report',
+ detail => 'Test report details.',
+ photo => '',
+ name => 'Joe Bloggs',
+ may_show_name => '1',
+ email => 'test-1@example.com',
+ phone => '07903 123 456',
+ category => 'Street lighting',
+ password_register => $test->{password} ? 'secret' : '',
+ }
+ },
+ "submit good details"
+ );
+ };
# check that we got the errors expected
is_deeply $mech->page_errors, [], "check there were no errors";
@@ -635,27 +645,32 @@ subtest "test password errors for a user who is signing in as they report" => su
# submit initial pc form
$mech->get_ok('/around');
- $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
- "submit location" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
+ "submit location" );
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
- $mech->submit_form_ok(
- {
- button => 'submit_sign_in',
- with_fields => {
- title => 'Test Report',
- detail => 'Test report details.',
- photo => '',
- email => 'test-2@example.com',
- password_sign_in => 'secret1',
- category => 'Street lighting',
- }
- },
- "submit with wrong password"
- );
+ $mech->submit_form_ok(
+ {
+ button => 'submit_sign_in',
+ with_fields => {
+ title => 'Test Report',
+ detail => 'Test report details.',
+ photo => '',
+ email => 'test-2@example.com',
+ password_sign_in => 'secret1',
+ category => 'Street lighting',
+ }
+ },
+ "submit with wrong password"
+ );
+ };
# check that we got the errors expected
is_deeply $mech->page_errors, [
@@ -682,42 +697,47 @@ subtest "test report creation for a user who is signing in as they report" => su
# submit initial pc form
$mech->get_ok('/around');
- $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
- "submit location" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
+ "submit location" );
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
- $mech->submit_form_ok(
- {
- button => 'submit_sign_in',
- with_fields => {
- title => 'Test Report',
- detail => 'Test report details.',
- photo => '',
- email => 'test-2@example.com',
- password_sign_in => 'secret2',
- category => 'Street lighting',
- }
- },
- "submit good details"
- );
+ $mech->submit_form_ok(
+ {
+ button => 'submit_sign_in',
+ with_fields => {
+ title => 'Test Report',
+ detail => 'Test report details.',
+ photo => '',
+ email => 'test-2@example.com',
+ password_sign_in => 'secret2',
+ category => 'Street lighting',
+ }
+ },
+ "submit good details"
+ );
- # check that we got the errors expected
- is_deeply $mech->page_errors, [
- 'You have successfully signed in; please check and confirm your details are accurate:',
- ], "check there were errors";
+ # check that we got the errors expected
+ is_deeply $mech->page_errors, [
+ 'You have successfully signed in; please check and confirm your details are accurate:',
+ ], "check there were errors";
- # Now submit with a name
- $mech->submit_form_ok(
- {
- with_fields => {
- name => 'Joe Bloggs',
- }
- },
- "submit good details"
- );
+ # Now submit with a name
+ $mech->submit_form_ok(
+ {
+ with_fields => {
+ name => 'Joe Bloggs',
+ }
+ },
+ "submit good details"
+ );
+ };
# find the report
my $report = $user->problems->first;
@@ -776,42 +796,47 @@ foreach my $test (
# submit initial pc form
$mech->get_ok('/around');
- $mech->submit_form_ok( { with_fields => { pc => 'GL50 2PR', } },
- "submit location" );
-
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
-
- # check that the fields are correctly prefilled
- is_deeply(
- $mech->visible_form_values,
- {
- title => '',
- detail => '',
- may_show_name => '1',
- name => 'Test User',
- phone => '01234 567 890',
- photo => '',
- category => '-- Pick a category --',
- },
- "user's details prefilled"
- );
-
- $mech->submit_form_ok(
- {
- with_fields => {
- title => "Test Report at café",
- detail => 'Test report details.',
- photo => '',
- name => 'Joe Bloggs',
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'GL50 2PR', } },
+ "submit location" );
+
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
+
+ # check that the fields are correctly prefilled
+ is_deeply(
+ $mech->visible_form_values,
+ {
+ title => '',
+ detail => '',
may_show_name => '1',
- phone => '07903 123 456',
- category => $test->{category},
- }
- },
- "submit good details"
- );
+ name => 'Test User',
+ phone => '01234 567 890',
+ photo => '',
+ category => '-- Pick a category --',
+ },
+ "user's details prefilled"
+ );
+
+ $mech->submit_form_ok(
+ {
+ with_fields => {
+ title => "Test Report at café",
+ detail => 'Test report details.',
+ photo => '',
+ name => 'Joe Bloggs',
+ may_show_name => '1',
+ phone => '07903 123 456',
+ category => $test->{category},
+ }
+ },
+ "submit good details"
+ );
+ };
# find the report
my $report = $user->problems->first;
@@ -870,27 +895,32 @@ subtest "test report creation for a category that is non public" => sub {
# submit initial pc form
$mech->get_ok('/around');
- $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
- "submit location" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH1 1BB', } },
+ "submit location" );
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
- $mech->submit_form_ok(
- {
- button => 'submit_register',
- with_fields => {
- title => 'Test Report',
- detail => 'Test report details.',
- photo => '',
- email => 'test-2@example.com',
- name => 'Joe Bloggs',
- category => 'Street lighting',
- }
- },
- "submit good details"
- );
+ $mech->submit_form_ok(
+ {
+ button => 'submit_register',
+ with_fields => {
+ title => 'Test Report',
+ detail => 'Test report details.',
+ photo => '',
+ email => 'test-2@example.com',
+ name => 'Joe Bloggs',
+ category => 'Street lighting',
+ }
+ },
+ "submit good details"
+ );
+ };
# find the report
my $report = $user->problems->first;
@@ -927,11 +957,22 @@ subtest "test report creation for a category that is non public" => sub {
$contact2->category( "Pothol\xc3\xa9s" );
$contact2->update;
-my $extra_details = $mech->get_ok_json( '/report/new/ajax?latitude=' . $saved_lat . '&longitude=' . $saved_lon );
+my $extra_details;
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $extra_details = $mech->get_ok_json( '/report/new/ajax?latitude=' . $saved_lat . '&longitude=' . $saved_lon );
+};
$mech->content_contains( "Pothol\xc3\xa9s" );
ok !$extra_details->{titles_list}, 'Non Bromley does not send back list of titles';
-$extra_details = $mech->get_ok_json( '/report/new/ajax?latitude=51.4021&longitude=0.01578');
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $extra_details = $mech->get_ok_json( '/report/new/ajax?latitude=51.4021&longitude=0.01578');
+};
ok $extra_details->{titles_list}, 'Bromley sends back list of titles';
#### test uploading an image
@@ -940,18 +981,22 @@ ok $extra_details->{titles_list}, 'Bromley sends back list of titles';
#### possibly manual testing
# create report without using map
-# create report by clicking on may with javascript off
+# create report by clicking on map with javascript off
# create report with images off
subtest "check that a lat/lon off coast leads to /around" => sub {
my $off_coast_latitude = 50.78301;
my $off_coast_longitude = -0.646929;
- $mech->get_ok( #
- "/report/new"
- . "?latitude=$off_coast_latitude"
- . "&longitude=$off_coast_longitude"
- );
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok( #
+ "/report/new"
+ . "?latitude=$off_coast_latitude"
+ . "&longitude=$off_coast_longitude"
+ );
+ };
is $mech->uri->path, '/around', "redirected to '/around'";
@@ -1015,9 +1060,10 @@ for my $test (
)
{
subtest $test->{desc} => sub {
- if ( $test->{host} =~ /bromley/ && !FixMyStreet::Cobrand->exists('bromley') ) {
- plan skip_all => 'Skipping Bromley tests without Bromley cobrand';
- }
+ my $override = {
+ ALLOWED_COBRANDS => [ $test->{host} =~ /bromley/ ? 'bromley' : 'fixmystreet' ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ };
$mech->host( $test->{host} );
@@ -1025,12 +1071,14 @@ for my $test (
$mech->clear_emails_ok;
$mech->get_ok('/');
- $mech->submit_form_ok( { with_fields => { pc => $test->{postcode}, } },
- "submit location" );
- $mech->follow_link_ok(
- { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link"
- );
+ FixMyStreet::override_config $override, sub {
+ $mech->submit_form_ok( { with_fields => { pc => $test->{postcode}, } },
+ "submit location" );
+ $mech->follow_link_ok(
+ { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link"
+ );
+ };
my $fields = $mech->visible_form_values('mapSkippedForm');
if ( $test->{fms_extra_title} ) {
@@ -1072,8 +1120,10 @@ for my $test (
$submission_fields->{name} = 'Test User';
}
- $mech->submit_form_ok( { with_fields => $submission_fields },
- "submit good details" );
+ FixMyStreet::override_config $override, sub {
+ $mech->submit_form_ok( { with_fields => $submission_fields },
+ "submit good details" );
+ };
my $email = $mech->get_email;
ok $email, "got an email";
@@ -1128,18 +1178,23 @@ subtest 'user title not reset if no user title in submission' => sub {
};
$mech->get_ok('/');
- $mech->submit_form_ok( { with_fields => { pc => 'EH99 1SP', } },
- "submit location" );
- $mech->follow_link_ok(
- { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => 'EH99 1SP', } },
+ "submit location" );
+ $mech->follow_link_ok(
+ { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link"
+ );
- my $fields = $mech->visible_form_values('mapSkippedForm');
- ok !exists( $fields->{fms_extra_title} ), 'user title field not displayed';
+ my $fields = $mech->visible_form_values('mapSkippedForm');
+ ok !exists( $fields->{fms_extra_title} ), 'user title field not displayed';
- $mech->submit_form_ok( { with_fields => $submission_fields },
- "submit good details" );
+ $mech->submit_form_ok( { with_fields => $submission_fields },
+ "submit good details" );
+ };
$user->discard_changes;
my $report = $user->problems->first;
@@ -1148,10 +1203,7 @@ subtest 'user title not reset if no user title in submission' => sub {
is $user->title, 'MR', 'User title unchanged';
};
-SKIP: {
- skip( "Need 'lichfielddc' in ALLOWED_COBRANDS config", 100 )
- unless FixMyStreet::Cobrand->exists('lichfielddc');
-
+subtest "test Lichfield" => sub {
for my $test (
{
desc => 'confirm link for cobrand council in two tier cobrand links to cobrand site',
@@ -1190,32 +1242,38 @@ SKIP: {
my $user = $mech->log_in_ok($test_email) if $test->{redirect};
- $mech->get_ok('/around');
- $mech->content_contains( "Lichfield District Council FixMyStreet" );
- $mech->submit_form_ok( { with_fields => { pc => 'WS13 7RD' } }, "submit location" );
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" );
- my %optional_fields = $test->{redirect} ? () :
- ( email => $test_email, phone => '07903 123 456' );
-
- # we do this as otherwise test::www::mechanize::catalyst
- # goes to the value set in ->host above irregardless and
- # that is a 404. It works but it is not pleasant.
- $mech->clear_host if $test->{redirect} && $test->{national};
- $mech->submit_form_ok(
- {
- button => $test->{button},
- with_fields => {
- title => 'Test Report',
- detail => 'Test report details.',
- photo => '',
- name => 'Joe Bloggs',
- may_show_name => '1',
- category => $test->{category},
- %optional_fields
- }
- },
- "submit good details"
- );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'lichfielddc', 'fixmystreet' ],
+ BASE_URL => 'http://www.fixmystreet.com',
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok('/around');
+ $mech->content_contains( "Lichfield District Council FixMyStreet" );
+ $mech->submit_form_ok( { with_fields => { pc => 'WS13 7RD' } }, "submit location" );
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" );
+ my %optional_fields = $test->{redirect} ? () :
+ ( email => $test_email, phone => '07903 123 456' );
+
+ # we do this as otherwise test::www::mechanize::catalyst
+ # goes to the value set in ->host above irregardless and
+ # that is a 404. It works but it is not pleasant.
+ $mech->clear_host if $test->{redirect} && $test->{national};
+ $mech->submit_form_ok(
+ {
+ button => $test->{button},
+ with_fields => {
+ title => 'Test Report',
+ detail => 'Test report details.',
+ photo => '',
+ name => 'Joe Bloggs',
+ may_show_name => '1',
+ category => $test->{category},
+ %optional_fields
+ }
+ },
+ "submit good details"
+ );
+ };
is_deeply $mech->page_errors, [], "check there were no errors";
# check that the user has been created/ not changed
@@ -1232,9 +1290,8 @@ SKIP: {
if ( $test->{redirect} ) {
is $mech->uri->path, "/report/" . $report->id, "redirected to report page";
- my $base = FixMyStreet->config('BASE_URL');
- $base =~ s{http://}{};
- $base = "lichfielddc.$base" unless $test->{national};
+ my $base = 'www.fixmystreet.com';
+ $base = "lichfielddc.fixmystreet.com" unless $test->{national};
is $mech->uri->host, $base, 'redirected to correct site';
} else {
# receive token
@@ -1246,21 +1303,34 @@ SKIP: {
ok $url, "extracted confirm url '$url'";
# confirm token
- $mech->get_ok($url);
-
- my $base = FixMyStreet->config('BASE_URL');
- $base =~ s{http://}{http://lichfielddc.} unless $test->{national};
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'lichfielddc', 'fixmystreet' ],
+ BASE_URL => 'http://www.fixmystreet.com',
+ }, sub {
+ $mech->get_ok($url);
+ };
+
+ my $base = 'www.fixmystreet.com';
+ $base = 'lichfielddc.fixmystreet.com' unless $test->{national};
$mech->content_contains( $base . '/report/' .
$report->id, 'confirm page links to correct site' );
if ( $test->{national} ) {
# Shouldn't be found, as it was a county problem
- is $mech->get( '/report/' . $report->id )->code, 404, "report not found";
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'lichfielddc', 'fixmystreet' ],
+ }, sub {
+ is $mech->get( '/report/' . $report->id )->code, 404, "report not found";
+ };
# But should be on the main site
$mech->host( 'www.fixmystreet.com' );
}
- $mech->get_ok( '/report/' . $report->id );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'lichfielddc', 'fixmystreet' ],
+ }, sub {
+ $mech->get_ok( '/report/' . $report->id );
+ };
}
$report->discard_changes;
@@ -1271,12 +1341,9 @@ SKIP: {
$mech->delete_user($user);
};
}
-}
-
-SKIP: {
- skip( "Need 'seesomething' in ALLOWED_COBRANDS config", 100 )
- unless FixMyStreet::Cobrand->exists('seesomething');
+};
+subtest "test SeeSomething" => sub {
$mech->host('seesomething.fixmystreet.com');
$mech->clear_emails_ok;
$mech->log_out_ok;
@@ -1346,22 +1413,27 @@ SKIP: {
}
$mech->get_ok( '/around' );
- $mech->submit_form_ok(
- {
- with_fields => {
- pc => $test->{pc},
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'seesomething' ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok(
+ {
+ with_fields => {
+ pc => $test->{pc},
+ },
},
- },
- 'submit around form',
- );
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" );
+ 'submit around form',
+ );
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" );
- $mech->submit_form_ok(
- {
- with_fields => $test->{fields},
- },
- 'Submit form details with no user details',
- );
+ $mech->submit_form_ok(
+ {
+ with_fields => $test->{fields},
+ },
+ 'Submit form details with no user details',
+ );
+ };
is_deeply $mech->page_errors, [], "check there were no errors";
$user =
@@ -1385,7 +1457,25 @@ SKIP: {
}
$bus_contact->delete;
-}
+};
+
+subtest "categories from deleted bodies shouldn't be visible for new reports" => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { fixmystreet => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok('/report/new/ajax?latitude=51.89&longitude=-2.09'); # Cheltenham
+ ok $mech->content_contains( $contact3->category );
+
+ # Delete the body which the contact belongs to.
+ $contact3->body->update( { deleted => 1 } );
+
+ $mech->get_ok('/report/new/ajax?latitude=51.89&longitude=-2.09'); # Cheltenham
+ ok $mech->content_lacks( $contact3->category );
+
+ $contact3->body->update( { deleted => 0 } );
+ };
+};
$contact1->delete;
$contact2->delete;
diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t
index ed26d58d5..4745d92cd 100644
--- a/t/app/controller/report_new_open311.t
+++ b/t/app/controller/report_new_open311.t
@@ -116,17 +116,22 @@ foreach my $test (
$mech->get_ok('/around');
# submit initial pc form
- $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } },
- "submit location" );
- is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'";
-
- # click through to the report page
- $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
- "follow 'skip this step' link" );
-
- # submit the main form
- $mech->submit_form_ok( { with_fields => $test->{fields} },
- "submit form" );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } },
+ "submit location" );
+ is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'";
+
+ # click through to the report page
+ $mech->follow_link_ok( { text_regex => qr/skip this step/i, },
+ "follow 'skip this step' link" );
+
+ # submit the main form
+ $mech->submit_form_ok( { with_fields => $test->{fields} },
+ "submit form" );
+ };
# check that we got the errors expected
is_deeply $mech->page_errors, $test->{errors}, "check errors";
@@ -152,7 +157,12 @@ foreach my $test (
%{ $test->{fields} },
%{ $test->{submit_with} },
};
- $mech->submit_form_ok( { with_fields => $new_values } );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->submit_form_ok( { with_fields => $new_values } );
+ };
$user = FixMyStreet::App->model('DB::User')->find( { email => $test_email } );
ok $user, 'created user';
diff --git a/t/app/controller/reports.t b/t/app/controller/reports.t
index 14a4b2150..42e69fd03 100644
--- a/t/app/controller/reports.t
+++ b/t/app/controller/reports.t
@@ -42,9 +42,13 @@ is $stats->{'City of Edinburgh Council'}->[2], 1, 'correct number of older repor
is $stats->{'Westminster City Council'}->[1], 5, 'correct number of reports for Westminster';
-$mech->follow_link_ok( { text_regex => qr/Birmingham/ } );
+FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $mech->follow_link_ok( { text_regex => qr/Birmingham/ } );
+ $mech->get_ok('/reports/Westminster');
+};
-$mech->get_ok('/reports/Westminster');
$mech->title_like(qr/Westminster City Council/);
$mech->content_contains('Westminster City Council');
$mech->content_contains('All reports Test 3 for 2504', 'problem to be marked non public visible');
@@ -55,7 +59,11 @@ is scalar @$problems, 5, 'correct number of problems displayed';
my $private = $westminster_problems[2];
ok $private->update( { non_public => 1 } ), 'problem marked non public';
-$mech->get_ok('/reports/Westminster');
+FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $mech->get_ok('/reports/Westminster');
+};
$problems = $mech->extract_problem_list;
is scalar @$problems, 4, 'only public problems are displayed';
@@ -65,24 +73,30 @@ $mech->get_ok('/reports');
$stats = $mech->extract_report_stats;
is $stats->{'Westminster City Council'}->[1], 5, 'non public reports included in stats';
-SKIP: {
- skip( "Need 'emptyhomes' in ALLOWED_COBRANDS config", 8 )
- unless FixMyStreet::Cobrand->exists('emptyhomes');
- ok $mech->host("reportemptyhomes.com"), 'change host to reportemptyhomes';
- $mech->get_ok('/reports');
- # EHA lacks one column the others have
- $mech->content_lacks('state unknown');
-
- skip( "Need 'fiksgatami' in ALLOWED_COBRANDS config", 8 )
- unless FixMyStreet::Cobrand->exists('fiksgatami');
- $mech->create_body_ok(3, 'Oslo');
- mySociety::MaPit::configure('http://mapit.nuug.no/');
- ok $mech->host("fiksgatami.no"), 'change host to fiksgatami';
- $mech->get_ok('/reports');
- # There should only be one Oslo
- $mech->content_contains('Oslo');
- $mech->content_unlike(qr{Oslo">Oslo.*Oslo}s);
-}
+subtest "test emptyhomes all reports page" => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes' ],
+ }, sub {
+ ok $mech->host("reportemptyhomes.com"), 'change host to reportemptyhomes';
+ $mech->get_ok('/reports');
+ # EHA lacks one column the others have
+ $mech->content_lacks('state unknown');
+ };
+};
+
+subtest "test fiksgatami all reports page" => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fiksgatami' ],
+ MAPIT_URL => 'http://mapit.nuug.no/',
+ }, sub {
+ $mech->create_body_ok(3, 'Oslo');
+ ok $mech->host("fiksgatami.no"), 'change host to fiksgatami';
+ $mech->get_ok('/reports');
+ # There should only be one Oslo
+ $mech->content_contains('Oslo');
+ $mech->content_unlike(qr{Oslo">Oslo.*Oslo}s);
+ }
+};
done_testing();
diff --git a/t/app/controller/rss.t b/t/app/controller/rss.t
index ec6a01b50..bafa1ddc0 100644
--- a/t/app/controller/rss.t
+++ b/t/app/controller/rss.t
@@ -42,8 +42,13 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( {
user_id => $user1->id,
} );
-
-$mech->get_ok("/rss/pc/EH11BB/2");
+$mech->host('www.fixmystreet.com');
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmystreet' ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $mech->get_ok("/rss/pc/EH11BB/2");
+};
$mech->content_contains( "Testing, 10th October" );
$mech->content_lacks( 'Nearest road to the pin' );
@@ -111,7 +116,12 @@ $report->geocode(
);
$report->update();
-$mech->get_ok("/rss/pc/EH11BB/2");
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmystreet' ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ $mech->get_ok("/rss/pc/EH11BB/2");
+};
$mech->content_contains( "Testing, 10th October" );
$mech->content_contains( '18 North Bridge, Edinburgh' );
@@ -168,11 +178,17 @@ my $report_to_county_council = FixMyStreet::App->model('DB::Problem')->find_or_c
subtest "check RSS feeds on cobrand have correct URLs for non-cobrand reports" => sub {
$mech->host('lichfielddc.fixmystreet.com');
- $mech->get_ok("/rss/area/Lichfield");
-
my $expected1 = mySociety::Config::get('BASE_URL') . '/report/' . $report_to_county_council->id;
- my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker('lichfielddc')->new();
- my $expected2 = $cobrand->base_url . '/report/' . $report_to_council->id;
+ my $expected2;
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'lichfielddc' ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ $mech->get_ok("/rss/area/Lichfield");
+ my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker('lichfielddc')->new();
+ $expected2 = $cobrand->base_url . '/report/' . $report_to_council->id;
+ };
$mech->content_contains($expected1, 'non cobrand area report point to fixmystreet.com');
$mech->content_contains($expected2, 'cobrand area report point to cobrand url');
diff --git a/t/app/model/alert_type.t b/t/app/model/alert_type.t
index ba48300b2..ae413978f 100644
--- a/t/app/model/alert_type.t
+++ b/t/app/model/alert_type.t
@@ -97,6 +97,7 @@ my $alert = FixMyStreet::App->model('DB::Alert')->find_or_create(
alert_type => 'new_updates',
whensubscribed => $dt->ymd . ' ' . $dt->hms,
confirmed => 1,
+ cobrand => 'default',
}
);
@@ -107,6 +108,7 @@ my $alert3 = FixMyStreet::App->model('DB::Alert')->find_or_create(
alert_type => 'new_updates',
whensubscribed => $dt->ymd . ' ' . $dt->hms,
confirmed => 1,
+ cobrand => 'default',
}
);
@@ -185,7 +187,11 @@ subtest "correct text for title after URL" => sub {
parameter => $report->id,
}
)->delete;
- FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
my $email = $mech->get_email;
(my $title = $report->title) =~ s/ /\\s+/;
@@ -318,7 +324,11 @@ foreach my $test (
$report->geocode( $g );
$report->update();
- FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
my $email = $mech->get_email;
my $body = $email->body;
@@ -423,7 +433,11 @@ subtest "check alerts from cobrand send main site url for alerts for different c
}
)->delete;
- FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ FixMyStreet::override_config {
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
my $email = $mech->get_email;
my $body = $email->body;
@@ -473,7 +487,34 @@ subtest "check local alerts from cobrand send main site url for alerts for diffe
like $body, qr#$expected2#, 'cobrand area report point to cobrand url';
};
-$report->comments->delete();
-$report->delete();
-done_testing();
+# Test that email alerts are sent in the right language.
+subtest "correct i18n-ed summary for state of closed" => sub {
+ $mech->clear_emails_ok;
+
+ $report->update( { state => 'closed' } );
+ $alert->update( { lang => 'nb', cobrand => 'fiksgatami' } );
+ FixMyStreet::App->model('DB::AlertSent')->search( {
+ alert_id => $alert->id,
+ parameter => $comment->id,
+ } )->delete;
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fiksgatami' ],
+ }, sub {
+ FixMyStreet::App->model('DB::AlertType')->email_alerts();
+ };
+
+ $mech->email_count_is( 1 );
+ my $email = $mech->get_email;
+ my $body = $email->body;
+ my $msg = 'Denne rapporten er for tiden markert som lukket';
+ like $body, qr/$msg/, 'email says problem is closed, in Norwegian';
+};
+
+END {
+ $mech->delete_user($user) if $user;
+ $mech->delete_user($user2) if $user2;
+ $mech->delete_user($user3) if $user3;
+ done_testing();
+}
diff --git a/t/app/model/problem.t b/t/app/model/problem.t
index 7daa653fc..fa8cf89ae 100644
--- a/t/app/model/problem.t
+++ b/t/app/model/problem.t
@@ -9,6 +9,7 @@ use FixMyStreet;
use FixMyStreet::App;
use FixMyStreet::TestMech;
use mySociety::Locale;
+use Sub::Override;
mySociety::Locale::gettext_domain('FixMyStreet');
@@ -464,8 +465,8 @@ foreach my $test ( {
desc => 'email to two tier council',
unset_whendef => 1,
email_count => 1,
- to => qr'Gloucestershire County Council.*Cheltenham Borough Council',
- dear => qr'Dear Gloucestershire County Council and Cheltenham Borough',
+ to => qr'Cheltenham Borough Council.*Gloucestershire County Council',
+ dear => qr'Dear Cheltenham Borough Council and Gloucestershire County',
body => '2226,2326',
multiple => 1,
}, {
@@ -496,7 +497,7 @@ foreach my $test ( {
dear => qr'Dear Staffordshire County Council,',
body => '2240',
cobrand => 'lichfielddc',
- url => '',
+ url => 'www.',
}, {
%common,
desc => 'directs NI correctly, 1',
@@ -525,8 +526,13 @@ foreach my $test ( {
},
) {
subtest $test->{ desc } => sub {
- if ( $test->{cobrand} && $test->{cobrand} =~ /lichfielddc/ && !FixMyStreet::Cobrand->exists('lichfielddc') ) {
- plan skip_all => 'Skipping Lichfield tests without Lichfield cobrand';
+ my $override = {
+ ALLOWED_COBRANDS => [ 'fixmystreet' ],
+ BASE_URL => 'http://www.fixmystreet.com',
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ };
+ if ( $test->{cobrand} && $test->{cobrand} =~ /lichfielddc/ ) {
+ $override->{ALLOWED_COBRANDS} = [ 'lichfielddc' ];
}
$mech->clear_emails_ok;
@@ -548,7 +554,9 @@ foreach my $test ( {
cobrand => $test->{ cobrand } || 'fixmystreet',
} );
- FixMyStreet::App->model('DB::Problem')->send_reports();
+ FixMyStreet::override_config $override, sub {
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+ };
$mech->email_count_is( $test->{ email_count } );
if ( $test->{ email_count } ) {
@@ -567,9 +575,8 @@ foreach my $test ( {
}
if ( $test->{url} ) {
- (my $base_url = FixMyStreet->config('BASE_URL')) =~ s{http://}{};
my $id = $problem->id;
- like $email->body, qr[$test->{url}$base_url/report/$id], 'URL present is correct';
+ like $email->body, qr[$test->{url}fixmystreet.com/report/$id], 'URL present is correct';
}
$problem->discard_changes;
@@ -582,10 +589,57 @@ foreach my $test ( {
};
}
-subtest 'check can turn on report sent email alerts' => sub {
- eval 'use Test::MockModule; 1' or
- plan skip_all => 'Skipping tests that rely on Test::MockModule';
+subtest 'check can set mutiple emails as a single contact' => sub {
+ my $override = {
+ ALLOWED_COBRANDS => [ 'fixmystreet' ],
+ BASE_URL => 'http://www.fixmystreet.com',
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+ };
+
+ my $contact = {
+ body_id => 2651, # Edinburgh
+ category => 'trees',
+ email => '2636@example.com,2636-2@example.com',
+ };
+ my $new_contact = FixMyStreet::App->model('DB::Contact')->find_or_create( {
+ %contact_params,
+ %$contact } );
+ ok $new_contact, "created multiple email test contact";
+
+ $mech->clear_emails_ok;
+
+ FixMyStreet::App->model('DB::Problem')->search(
+ {
+ whensent => undef
+ }
+ )->update( { whensent => \'ms_current_timestamp()' } );
+
+ $problem->discard_changes;
+ $problem->update( {
+ bodies_str => $contact->{ body_id },
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ category => 'trees',
+ name => 'Test User',
+ cobrand => 'fixmystreet',
+ send_fail_count => 0,
+ } );
+ FixMyStreet::override_config $override, sub {
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+ };
+
+ $mech->email_count_is(1);
+ my $email = $mech->get_email;
+ is $email->header('To'), '"City of Edinburgh Council" <2636@example.com>, "City of Edinburgh Council" <2636-2@example.com>', 'To contains two email addresses';
+};
+
+subtest 'check can turn on report sent email alerts' => sub {
+ my $send_confirmation_mail_override = Sub::Override->new(
+ "FixMyStreet::Cobrand::Default::report_sent_confirmation_email",
+ sub { return 1; }
+ );
$mech->clear_emails_ok;
FixMyStreet::App->model('DB::Problem')->search(
@@ -606,9 +660,6 @@ subtest 'check can turn on report sent email alerts' => sub {
send_fail_count => 0,
} );
- my $m = new Test::MockModule(
- 'FixMyStreet::Cobrand::FixMyStreet' );
- $m->mock( report_sent_confirmation_email => 1 );
FixMyStreet::App->model('DB::Problem')->send_reports();
$mech->email_count_is( 2 );
@@ -628,8 +679,88 @@ subtest 'check can turn on report sent email alerts' => sub {
$email = $emails[1];
like $email->header('Subject'), qr/Problem Report Sent/, 'report sent email title correct';
like $email->body, qr/Your report about/, 'report sent body correct';
+
+ $send_confirmation_mail_override->restore();
};
+
+subtest 'check iOS app store test reports not sent' => sub {
+ $mech->clear_emails_ok;
+
+ FixMyStreet::App->model('DB::Problem')->search(
+ {
+ whensent => undef
+ }
+ )->update( { whensent => \'ms_current_timestamp()' } );
+
+ $problem->discard_changes;
+ $problem->update( {
+ bodies_str => 2651,
+ title => 'App store test',
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ category => 'potholes',
+ send_fail_count => 0,
+ } );
+
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+
+ $mech->email_count_is( 0 );
+
+ $problem->discard_changes();
+ is $problem->state, 'hidden', 'iOS test reports are hidden automatically';
+ is $problem->whensent, undef, 'iOS test reports are not sent';
+};
+
+subtest 'check reports from abuser not sent' => sub {
+ $mech->clear_emails_ok;
+
+ FixMyStreet::App->model('DB::Problem')->search(
+ {
+ whensent => undef
+ }
+ )->update( { whensent => \'ms_current_timestamp()' } );
+
+ $problem->discard_changes;
+ $problem->update( {
+ bodies_str => 2651,
+ title => 'Report',
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ category => 'potholes',
+ send_fail_count => 0,
+ } );
+
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+
+ $mech->email_count_is( 1 );
+
+ $problem->discard_changes();
+ ok $problem->whensent, 'Report has been sent';
+
+ $problem->update( {
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ } );
+
+ my $abuse = FixMyStreet::App->model('DB::Abuse')->create( { email => $problem->user->email } );
+
+ $mech->clear_emails_ok;
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+
+ $mech->email_count_is( 0 );
+
+ $problem->discard_changes();
+ is $problem->state, 'hidden', 'reports from abuse user are hidden automatically';
+ is $problem->whensent, undef, 'reports from abuse user are not sent';
+
+ ok $abuse->delete(), 'user removed from abuse table';
+};
+
+
$problem->comments->delete;
$problem->delete;
$mech->delete_user( $user );
diff --git a/t/app/model/rabx_column.t b/t/app/model/rabx_column.t
new file mode 100644
index 000000000..607d578ce
--- /dev/null
+++ b/t/app/model/rabx_column.t
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+use_ok "FixMyStreet::DB::RABXColumn";
+
+# Test that the class names are correctly normalised
+my @tests = (
+ ["FixMyStreet::DB::Result::Token", "Token"],
+ ["FixMyStreet::App::Model::DB::Token", "Token"],
+);
+
+foreach my $test (@tests) {
+ my ($input, $expected) = @$test;
+ is(
+ FixMyStreet::DB::RABXColumn::_get_class_identifier($input),
+ $expected,
+ "$input -> $expected"
+ );
+}
+
+done_testing();
diff --git a/t/app/model/token.t b/t/app/model/token.t
index 12945975e..637477fa3 100644
--- a/t/app/model/token.t
+++ b/t/app/model/token.t
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use Test::More tests => 45;
+use Test::More;
use FixMyStreet;
use FixMyStreet::App;
@@ -94,3 +94,47 @@ foreach my $test_data_name ( sort keys %tests ) {
undef, "token gone with m::AT";
}
+
+
+
+# Test that the inflation and deflation works as expected
+{
+ my $token =
+ $token_rs->create( { scope => 'testing', data => {} } );
+ END { $token->delete() };
+
+ # Add in temporary check to test that the data is updated as expected.
+ is_deeply($token->data, {}, "data is empty");
+
+ # store something in it
+ $token->update({ data => { foo => 'bar' } });
+ $token->discard_changes();
+ is_deeply($token->data, { foo => 'bar' }, "data has content");
+
+ # change the hash stored
+ $token->update({ data => { baz => 'bundy' } });
+ $token->discard_changes();
+ is_deeply($token->data, { baz => 'bundy' }, "data has new content");
+
+ # change the hashref in place
+ {
+ my $data = $token->data;
+ $data->{baz} = 'new';
+ $token->data( $data );
+ $token->update();
+ $token->discard_changes();
+ is_deeply($token->data, { baz => 'new' }, "data has been updated");
+ }
+
+ # change the hashref in place
+ {
+ my $data = $token->data;
+ $data->{baz} = 'new';
+ $token->update({ data => $data });
+ $token->discard_changes();
+ is_deeply($token->data, { baz => 'new' }, "data has been updated");
+ }
+
+}
+
+done_testing();
diff --git a/t/app/uri_for.t b/t/app/uri_for.t
index bf965fb62..810aade62 100644
--- a/t/app/uri_for.t
+++ b/t/app/uri_for.t
@@ -44,25 +44,29 @@ is(
'FiksGataMi url with lat not zoom'
);
-SKIP: {
- skip( "Need 'emptyhomes' in ALLOWED_COBRANDS config", 2 )
- unless FixMyStreet::Cobrand->exists('emptyhomes');
-
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes' ],
+}, sub {
like(
$reh_en_c->uri_for_email( '/foo' ),
qr{^http://en.},
'adds en to retain language'
);
+};
- # instantiate this here otherwise sets locale to cy and breaks test
- # above
- my $reh_cy_c = ctx_request('http://cy.reportemptyhomes.com/');
+# instantiate this here otherwise sets locale to cy and breaks test
+# above
+my $reh_cy_c;
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes' ],
+}, sub {
+ $reh_cy_c = ctx_request('http://cy.reportemptyhomes.com/');
like(
$reh_cy_c->uri_for_email( '/foo' ),
qr{^http://cy.},
'retains language'
);
-}
+};
done_testing();
diff --git a/t/cobrand/bromley.t b/t/cobrand/bromley.t
new file mode 100644
index 000000000..91a7038ec
--- /dev/null
+++ b/t/cobrand/bromley.t
@@ -0,0 +1,42 @@
+use strict;
+use warnings;
+use Test::More;
+
+use FixMyStreet::TestMech;
+my $mech = FixMyStreet::TestMech->new;
+
+# Create test data
+my $user = $mech->create_user_ok( 'bromley@example.com' );
+my $body = $mech->create_body_ok( 2482, 'Bromley' );
+
+my @reports = $mech->create_problems_for_body( 1, 2482, 'Test', {
+ cobrand => 'bromley',
+ user => $user,
+});
+my $report = $reports[0];
+
+for my $update ('in progress', 'unable to fix') {
+ FixMyStreet::App->model('DB::Comment')->find_or_create( {
+ problem_state => $update,
+ problem_id => $report->id,
+ user_id => $user->id,
+ name => 'User',
+ mark_fixed => 'f',
+ text => "This update marks it as $update",
+ state => 'confirmed',
+ confirmed => 'now()',
+ anonymous => 'f',
+ } );
+}
+
+# Test Bromley special casing of 'unable to fix'
+$mech->get_ok( '/report/' . $report->id );
+$mech->content_contains( 'marks it as in progress' );
+$mech->content_contains( 'marked as in progress' );
+$mech->content_contains( 'marks it as unable to fix' );
+$mech->content_contains( 'marked as no further action' );
+
+# Clean up
+$mech->delete_user($user);
+$mech->delete_problems_for_body( 2482 );
+done_testing();
diff --git a/t/cobrand/councils.t b/t/cobrand/councils.t
index 8fb10cfbe..0cf25ebdf 100644
--- a/t/cobrand/councils.t
+++ b/t/cobrand/councils.t
@@ -6,13 +6,13 @@ use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
foreach my $council (qw/southampton reading bromley/) {
- SKIP: {
- skip( "Need '$council' in ALLOWED_COBRANDS config", 3 )
- unless FixMyStreet::Cobrand->exists($council);
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ $council ],
+ }, sub {
ok $mech->host("$council.fixmystreet.com"), "change host to $council";
$mech->get_ok('/');
- $mech->content_like( qr/$council/i );
- }
+ $mech->content_like( qr/\u$council/ );
+ };
}
done_testing();
diff --git a/t/cobrand/fixmybarangay.t b/t/cobrand/fixmybarangay.t
index c0823eac4..b996fa0a6 100644
--- a/t/cobrand/fixmybarangay.t
+++ b/t/cobrand/fixmybarangay.t
@@ -2,9 +2,6 @@ use strict;
use warnings;
use Test::More;
-plan skip_all => 'Skipping FixMyBarangay test without FixMyBarangay cobrand'
- unless FixMyStreet::Cobrand->exists('fixmybarangay');
-
BEGIN {
use FixMyStreet;
FixMyStreet->test_mode(1);
@@ -16,7 +13,11 @@ my $mech = FixMyStreet::TestMech->new;
# Front page test
ok $mech->host("www.fixmybarangay.com"), "change host to FixMyBarangay";
-$mech->get_ok('/');
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmybarangay' ],
+}, sub {
+ $mech->get_ok('/');
+};
$mech->content_like( qr/FixMyBarangay/ );
# Set up bodies
@@ -80,7 +81,11 @@ $mech->get_ok( '/report/' . $dps_report->id );
$mech->email_count_is(0);
-FixMyStreet::App->model('DB::Problem')->send_reports('fixmybarangay');
+FixMyStreet::override_config {
+ SEND_REPORTS_ON_STAGING => 1,
+}, sub {
+ FixMyStreet::App->model('DB::Problem')->send_reports('fixmybarangay');
+};
# Check BGY one sent by email
my $email = $mech->get_email;
@@ -111,7 +116,11 @@ is $luz_report->state, 'confirmed', 'should be confirmed';
$user = $mech->log_in_ok($fmb_test_email);
-$mech->get_ok( '/report/' . $luz_report->id );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmybarangay' ],
+}, sub {
+ $mech->get_ok( '/report/' . $luz_report->id );
+};
$mech->content_contains( "Remove from site" );
$mech->content_lacks( "Report abuse" );
diff --git a/t/cobrand/get_body_sender.t b/t/cobrand/get_body_sender.t
index 245cb1a13..964f5c0e4 100644
--- a/t/cobrand/get_body_sender.t
+++ b/t/cobrand/get_body_sender.t
@@ -21,10 +21,15 @@ my $body = FixMyStreet::App->model('DB::Body')->find_or_create({
});
my $body_area = $body->body_areas->find_or_create({ area_id => 1000 });
-is_deeply $c->get_body_sender( $body ), { method => 'Email' }, 'defaults to email';
-
-$body_area->update({ area_id => 2481 }); # Croydon LBO
-is_deeply $c->get_body_sender( $body ), { method => 'London' }, 'returns london report it if London borough';
+FixMyStreet::override_config {
+ MAPIT_TYPES => [ 'LBO' ],
+ MAPIT_URL => 'http://mapit.mysociety.org/',
+}, sub {
+ is_deeply $c->get_body_sender( $body ), { method => 'Email' }, 'defaults to email';
+
+ $body_area->update({ area_id => 2481 }); # Croydon LBO
+ is_deeply $c->get_body_sender( $body ), { method => 'London' }, 'returns london report it if London borough';
+};
$body->send_method( 'TestMethod' );
is $c->get_body_sender( $body )->{ method }, 'TestMethod', 'uses send_method in preference to London';
diff --git a/t/cobrand/hart.t b/t/cobrand/hart.t
new file mode 100644
index 000000000..f4a2473eb
--- /dev/null
+++ b/t/cobrand/hart.t
@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+use Test::More;
+
+use FixMyStreet::TestMech;
+my $mech = FixMyStreet::TestMech->new;
+
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'hart' ],
+}, sub {
+ ok $mech->host("hart.fixmystreet.com"), "change host to hart";
+ $mech->get_ok('/');
+ $mech->content_like( qr/Hart\b/ );
+};
+
+done_testing();
diff --git a/t/cobrand/loading.t b/t/cobrand/loading.t
index bd83da07f..48a10293e 100644
--- a/t/cobrand/loading.t
+++ b/t/cobrand/loading.t
@@ -9,51 +9,92 @@ use FixMyStreet;
use_ok 'FixMyStreet::Cobrand';
# check that the allowed cobrands is correctly loaded from config
-{
+sub check_allowed_cobrands {
+ my $should = shift;
+ $should = [ map { { moniker => $_, host => $_ } } @$should ];
my $allowed = FixMyStreet::Cobrand->get_allowed_cobrands;
- ok $allowed, "got the allowed_cobrands";
+ ok $allowed, "got the allowed_cobrands";
isa_ok $allowed, "ARRAY";
- cmp_ok scalar @$allowed, '>', 1, "got more than one";
+ is_deeply $allowed, $should, "allowed_cobrands matched";
}
-# fake the allowed cobrands for testing
-my $override = Sub::Override->new( #
- 'FixMyStreet::Cobrand::_get_allowed_cobrands' =>
- sub { return ['emptyhomes'] }
-);
-is_deeply FixMyStreet::Cobrand->get_allowed_cobrands, [ { moniker => 'emptyhomes', host => 'emptyhomes' } ],
- 'overidden get_allowed_cobrands';
+FixMyStreet::override_config { ALLOWED_COBRANDS => 'fixmyhouse' },
+ sub { check_allowed_cobrands([ 'fixmyhouse' ]); };
+FixMyStreet::override_config { ALLOWED_COBRANDS => [ 'fixmyhouse' ] },
+ sub { check_allowed_cobrands([ 'fixmyhouse' ]); };
+FixMyStreet::override_config { ALLOWED_COBRANDS => [ 'fixmyhouse', 'fixmyshed' ] },
+ sub { check_allowed_cobrands([ 'fixmyhouse', 'fixmyshed' ]); };
sub run_host_tests {
my %host_tests = @_;
for my $host ( sort keys %host_tests ) {
- is FixMyStreet::Cobrand->get_class_for_host($host),
- "FixMyStreet::Cobrand::$host_tests{$host}",
- "does $host -> F::C::$host_tests{$host}";
+ # get the cobrand class by host
+ my $cobrand = FixMyStreet::Cobrand->get_class_for_host($host);
+ my $test_class = $host_tests{$host};
+ my $test_moniker = lc $test_class;
+ is $cobrand, "FixMyStreet::Cobrand::$test_class", "does $host -> F::C::$test_class";
+ my $c = $cobrand->new();
+ is $c->moniker, $test_moniker;
}
}
-# get the cobrand class by host
-run_host_tests(
- 'www.fixmystreet.com' => 'Default',
- 'reportemptyhomes.com' => 'EmptyHomes',
- 'barnet.fixmystreet.com' => 'Default', # not in the allowed_cobrands list
- 'some.odd.site.com' => 'Default',
-);
+# Only one cobrand, always use it
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'fixmystreet' ],
+}, sub {
+ run_host_tests(
+ 'www.fixmystreet.com' => 'FixMyStreet',
+ 'reportemptyhomes.com' => 'FixMyStreet',
+ 'barnet.fixmystreet.com' => 'FixMyStreet',
+ 'some.odd.site.com' => 'FixMyStreet',
+ );
+};
+
+# Only one cobrand, no .pm file, should still work
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'nopmfile' ],
+}, sub {
+ run_host_tests(
+ 'www.fixmystreet.com' => 'nopmfile',
+ 'some.odd.site.com' => 'nopmfile',
+ );
+};
+
+# Couple of cobrands, hostname checking and default fallback
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes', 'fixmystreet' ],
+}, sub {
+ run_host_tests(
+ 'www.fixmystreet.com' => 'FixMyStreet',
+ 'reportemptyhomes.com' => 'EmptyHomes',
+ 'barnet.fixmystreet.com' => 'FixMyStreet', # not in the allowed_cobrands list
+ 'some.odd.site.com' => 'Default',
+ );
+};
# now enable barnet too and check that it works
-$override->replace( #
- 'FixMyStreet::Cobrand::_get_allowed_cobrands' =>
- sub { return [ 'emptyhomes', 'barnet' ] }
-);
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'emptyhomes', 'barnet', 'fixmystreet' ],
+}, sub {
+ run_host_tests(
+ 'www.fixmystreet.com' => 'FixMyStreet',
+ 'reportemptyhomes.com' => 'EmptyHomes',
+ 'barnet.fixmystreet.com' => 'Barnet', # found now it is in allowed_cobrands
+ 'some.odd.site.com' => 'Default',
+ );
+};
-# get the cobrand class by host
-run_host_tests(
- 'www.fixmystreet.com' => 'Default',
- 'reportemptyhomes.com' => 'EmptyHomes',
- 'barnet.fixmystreet.com' => 'Barnet', # found now it is in allowed_cobrands
- 'some.odd.site.com' => 'Default',
-);
+# And a check with some regex matching
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ { 'fixmystreet' => 'empty' }, 'barnet', { 'testing' => 'fixmystreet' } ],
+}, sub {
+ run_host_tests(
+ 'www.fixmystreet.com' => 'testing',
+ 'reportemptyhomes.com' => 'FixMyStreet',
+ 'barnet.fixmystreet.com' => 'Barnet',
+ 'some.odd.site.com' => 'Default',
+ );
+};
# check that the moniker works as expected both on class and object.
is FixMyStreet::Cobrand::EmptyHomes->moniker, 'emptyhomes',
diff --git a/t/cobrand/zurich.t b/t/cobrand/zurich.t
index 721e6517a..73007ff59 100644
--- a/t/cobrand/zurich.t
+++ b/t/cobrand/zurich.t
@@ -1,20 +1,55 @@
# TODO
-# Overdue alerts
+# Overdue alerts
use strict;
use warnings;
use DateTime;
use Test::More;
-
-plan skip_all => 'Skipping Zurich test without Zurich cobrand'
- unless FixMyStreet::Cobrand->exists('zurich');
+use JSON;
+
+# Check that you have the required locale installed - the following
+# should return a line with de_CH.utf8 in. If not install that locale.
+#
+# locale -a | grep de_CH
+#
+# To generate the translations use:
+#
+# commonlib/bin/gettext-makemo FixMyStreet
+
+use FixMyStreet;
+
+# This is a helper method that will send the reports but with the config
+# correctly set - notably SEND_REPORTS_ON_STAGING needs to be true.
+sub send_reports_for_zurich {
+ FixMyStreet::override_config { SEND_REPORTS_ON_STAGING => 1 }, sub {
+ # Actually send the report
+ FixMyStreet::App->model('DB::Problem')->send_reports('zurich');
+ };
+}
+sub reset_report_state {
+ my ($report, $created) = @_;
+ $report->discard_changes;
+ my $extra = $report->extra;
+ delete $extra->{moderated_overdue};
+ delete $extra->{subdiv_overdue};
+ delete $extra->{closed_overdue};
+ $report->update({
+ extra => { %$extra },
+ state => 'unconfirmed',
+ $created ? ( created => $created ) : (),
+ });
+}
use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
# Front page test
-ok $mech->host("zurich.fixmystreet.com"), "change host to Zurich";
-$mech->get_ok('/');
+ok $mech->host("zurich.example.com"), "change host to Zurich";
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok('/');
+};
$mech->content_like( qr/zurich/i );
# Set up bodies
@@ -36,6 +71,40 @@ $external_body->send_method( 'Zurich' );
$external_body->endpoint( 'external_body@example.org' );
$external_body->update;
+sub cleanup {
+ $mech->delete_problems_for_body( $division->id );
+ $mech->delete_problems_for_body( $subdivision->id );
+ $mech->delete_user( 'dm1@example.org' );
+ $mech->delete_user( 'sdm1@example.org' );
+}
+
+sub get_export_rows_count {
+ my $mech = shift;
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/stats?export=1' );
+ };
+ is $mech->res->code, 200, 'csv retrieved ok';
+ is $mech->content_type, 'text/csv', 'content_type correct' and do {
+ my @lines = split /\n/, $mech->content;
+ return @lines - 1;
+ };
+ return;
+}
+
+cleanup();
+
+my $EXISTING_REPORT_COUNT = 0;
+
+subtest "set up superuser" => sub {
+ my $superuser = $mech->log_in_ok( 'super@example.org' );
+ # a user from body $zurich is a superuser, as $zurich has no parent id!
+ $superuser->update({ from_body => $zurich->id });
+ $EXISTING_REPORT_COUNT = get_export_rows_count($mech);
+ $mech->log_out_ok;
+};
+
my @reports = $mech->create_problems_for_body( 1, 2, 'Test', {
state => 'unconfirmed',
confirmed => undef,
@@ -43,61 +112,230 @@ my @reports = $mech->create_problems_for_body( 1, 2, 'Test', {
});
my $report = $reports[0];
-$mech->get_ok( '/report/' . $report->id );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/report/' . $report->id );
+};
$mech->content_contains('&Uuml;berpr&uuml;fung ausstehend');
# Check logging in to deal with this report
-$mech->get_ok( '/admin' );
-is $mech->uri->path, '/auth', "got sent to the sign in page";
-
-my $user = $mech->log_in_ok( 'dm1@example.org') ;
-$user->from_body( undef );
-$user->update;
-$mech->get_ok( '/admin' );
-is $mech->uri->path, '/my', "got sent to /my";
-$user->from_body( 2 );
-$user->update;
-
-$mech->get_ok( '/admin' );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin' );
+ is $mech->uri->path, '/auth', "got sent to the sign in page";
+
+ my $user = $mech->log_in_ok( 'dm1@example.org') ;
+ $user->from_body( undef );
+ $user->update;
+ $mech->get_ok( '/admin' );
+ is $mech->uri->path, '/my', "got sent to /my";
+ $user->from_body( 2 );
+ $user->update;
+
+ $mech->get_ok( '/admin' );
+};
is $mech->uri->path, '/admin', "am logged in";
$mech->content_contains( 'report_edit/' . $report->id );
$mech->content_contains( DateTime->now->strftime("%d.%m.%Y") );
$mech->content_contains( 'Erfasst' );
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->content_contains( 'Unbest&auml;tigt' ); # Unconfirmed email
-$mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
-$mech->get_ok( '/report/' . $report->id );
-$mech->content_contains('Aufgenommen');
-$mech->content_contains('Test Test');
-$mech->content_lacks('photo/' . $report->id . '.jpeg');
-$mech->email_count_is(0);
-
-# Photo publishing
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->submit_form_ok( { with_fields => { publish_photo => 1 } } );
-$mech->get_ok( '/report/' . $report->id );
-$mech->content_contains('photo/' . $report->id . '.jpeg');
-
-# Internal notes
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->submit_form_ok( { with_fields => { internal_notes => 'Some internal notes.' } } );
-$mech->content_contains( 'Some internal notes' );
-
-# Original description
-$mech->submit_form_ok( { with_fields => { detail => 'Edited details text.' } } );
-$mech->content_contains( 'Edited details text.' );
-$mech->content_contains( 'Originaltext: &ldquo;Test Test 1 for 2 Detail&rdquo;' );
-
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->submit_form_ok( { with_fields => { body_subdivision => 3 } } );
-
-$mech->get_ok( '/report/' . $report->id );
-$mech->content_contains('In Bearbeitung');
-$mech->content_contains('Test Test');
-FixMyStreet::App->model('DB::Problem')->send_reports('zurich');
+subtest "changing of categories" => sub {
+ # create a few categories (which are actually contacts)
+ foreach my $name ( qw/Cat1 Cat2/ ) {
+ FixMyStreet::App->model('DB::Contact')->find_or_create({
+ body => $division,
+ category => $name,
+ email => "$name\@example.org",
+ confirmed => 1,
+ deleted => 0,
+ editor => "editor",
+ whenedited => DateTime->now(),
+ note => "note for $name",
+ });
+ }
+
+ # put report into known category
+ my $original_category = $report->category;
+ $report->update({ category => 'Cat1' });
+ is( $report->category, "Cat1", "Category set to Cat1" );
+
+ # get the latest comment
+ my $comments_rs = $report->comments->search({},{ order_by => { -desc => "created" } });
+ ok ( !$comments_rs->first, "There are no comments yet" );
+
+ # change the category via the web interface
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { category => 'Cat2' } } );
+ };
+
+ # check changes correctly saved
+ $report->discard_changes();
+ is( $report->category, "Cat2", "Category changed to Cat2 as expected" );
+
+ # Check that a new comment has been created.
+ my $new_comment = $comments_rs->first();
+ is( $new_comment->text, "Weitergeleitet von Cat1 an Cat2", "category change comment created" );
+
+ # restore report to original category.
+ $report->update({category => $original_category });
+};
+
+sub get_moderated_count {
+ # my %date_params = ( );
+ # my $moderated = FixMyStreet::App->model('DB::Problem')->search({
+ # extra => { like => '%moderated_overdue,I1:0%' }, %date_params } )->count;
+ # return $moderated;
+
+ # use a separate mech to avoid stomping on test state
+ my $mech = FixMyStreet::TestMech->new;
+ my $user = $mech->log_in_ok( 'super@example.org' );
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get( '/admin/stats' );
+ };
+ if ($mech->content =~/Innerhalb eines Arbeitstages moderiert: (\d+)/) {
+ return $1;
+ }
+ else {
+ fail sprintf "Could not get moderation results (%d)", $mech->status;
+ return undef;
+ }
+}
+
+subtest "report_edit" => sub {
+
+ ok ( ! exists ${$report->extra}{moderated_overdue}, 'Report currently unmoderated' );
+
+ is get_moderated_count(), 0;
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains( 'Unbest&auml;tigt' ); # Unconfirmed email
+ $mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
+ $mech->get_ok( '/report/' . $report->id );
+ };
+
+ $mech->content_contains('Aufgenommen');
+ $mech->content_contains('Test Test');
+ $mech->content_lacks('photo/' . $report->id . '.jpeg');
+ $mech->email_count_is(0);
+
+ $report->discard_changes;
+
+ is ( $report->extra->{moderated_overdue}, 0, 'Report now marked moderated' );
+ is get_moderated_count(), 1;
+
+
+ # Set state back to 10 days ago so that report is overdue
+ my $created = $report->created;
+ reset_report_state($report, $created->clone->subtract(days => 10));
+
+ is get_moderated_count(), 0;
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
+ $mech->get_ok( '/report/' . $report->id );
+ };
+ $report->discard_changes;
+ is ( $report->extra->{moderated_overdue}, 1, 'moderated_overdue set correctly when overdue' );
+ is get_moderated_count(), 0, 'Moderated count not increased when overdue';
+
+ reset_report_state($report, $created);
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
+ $mech->get_ok( '/report/' . $report->id );
+ };
+ $report->discard_changes;
+ is ( $report->extra->{moderated_overdue}, 0, 'Marking confirmed sets moderated_overdue' );
+ is ( $report->extra->{closed_overdue}, undef, 'Marking confirmed does NOT set closed_overdue' );
+ is get_moderated_count(), 1;
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'hidden' } } );
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ };
+ $report->discard_changes;
+ is ( $report->extra->{moderated_overdue}, 0, 'Still marked moderated_overdue' );
+ is ( $report->extra->{closed_overdue}, 0, 'Marking hidden also set closed_overdue' );
+ is get_moderated_count(), 1, 'Check still counted moderated'
+ or diag $report->get_column('extra');
+
+ reset_report_state($report);
+
+ is ( $report->extra->{moderated_overdue}, undef, 'Sanity check' );
+ is get_moderated_count(), 0;
+
+ # Check that setting to 'hidden' also triggers moderation
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'hidden' } } );
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ };
+ $report->discard_changes;
+ is ( $report->extra->{moderated_overdue}, 0, 'Marking hidden from scratch sets moderated_overdue' );
+ is ( $report->extra->{closed_overdue}, 0, 'Marking hidden from scratch also set closed_overdue' );
+ is get_moderated_count(), 1;
+
+ is (FixMyStreet::Cobrand::Zurich->new->get_or_check_overdue($report), 0, 'sanity check');
+ $report->update({ created => $created->clone->subtract(days => 10) });
+ is (FixMyStreet::Cobrand::Zurich->new->get_or_check_overdue($report), 0, 'overdue call not increased');
+
+ reset_report_state($report, $created);
+};
+
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ # Photo publishing
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'confirmed', publish_photo => 1 } } );
+ $mech->get_ok( '/report/' . $report->id );
+ $mech->content_contains('photo/' . $report->id . '.jpeg');
+
+ # Internal notes
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { new_internal_note => 'Initial internal note.' } } );
+ $mech->submit_form_ok( { with_fields => { new_internal_note => 'Another internal note.' } } );
+ $mech->content_contains( 'Initial internal note.' );
+ $mech->content_contains( 'Another internal note.' );
+
+ # Original description
+ $mech->submit_form_ok( { with_fields => { detail => 'Edited details text.' } } );
+ $mech->content_contains( 'Edited details text.' );
+ $mech->content_contains( 'Originaltext: &ldquo;Test Test 1 for 2 Detail&rdquo;' );
+
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { body_subdivision => 3, send_rejected_email => 1 } } );
+
+ $mech->get_ok( '/report/' . $report->id );
+ $mech->content_contains('In Bearbeitung');
+ $mech->content_contains('Test Test');
+};
+
+send_reports_for_zurich();
my $email = $mech->get_email;
like $email->header('Subject'), qr/Neue Meldung/, 'subject looks okay';
like $email->header('To'), qr/subdivision\@example.org/, 'to line looks correct';
@@ -105,34 +343,47 @@ $mech->clear_emails_ok;
$mech->log_out_ok;
-$user = $mech->log_in_ok( 'sdm1@example.org') ;
-$mech->get_ok( '/admin' );
+my $user = $mech->log_in_ok( 'sdm1@example.org') ;
+$user->update({ from_body => undef });
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin' );
+};
is $mech->uri->path, '/my', "got sent to /my";
$user->from_body( 3 );
$user->update;
-$mech->get_ok( '/admin' );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin' );
+};
is $mech->uri->path, '/admin', "am logged in";
$mech->content_contains( 'report_edit/' . $report->id );
$mech->content_contains( DateTime->now->strftime("%d.%m.%Y") );
$mech->content_contains( 'In Bearbeitung' );
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->content_contains( 'Some internal notes' );
-
-$mech->submit_form_ok( { with_fields => { status_update => 'This is an update.' } } );
-is $mech->uri->path, '/admin/report_edit/' . $report->id, "still on edit page";
-$mech->content_contains('This is an update');
-ok $mech->form_with_fields( 'status_update' );
-$mech->submit_form_ok( { button => 'no_more_updates' } );
-is $mech->uri->path, '/admin/summary', "redirected now finished with report.";
-
-$mech->get_ok( '/report/' . $report->id );
-$mech->content_contains('In Bearbeitung');
-$mech->content_contains('Test Test');
-
-FixMyStreet::App->model('DB::Problem')->send_reports('zurich');
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains( 'Initial internal note' );
+
+ $mech->submit_form_ok( { with_fields => { status_update => 'This is an update.' } } );
+ is $mech->uri->path, '/admin/report_edit/' . $report->id, "still on edit page";
+ $mech->content_contains('This is an update');
+ ok $mech->form_with_fields( 'status_update' );
+ $mech->submit_form_ok( { button => 'no_more_updates' } );
+ is $mech->uri->path, '/admin/summary', "redirected now finished with report.";
+
+ $mech->get_ok( '/report/' . $report->id );
+ $mech->content_contains('In Bearbeitung');
+ $mech->content_contains('Test Test');
+};
+
+send_reports_for_zurich();
$email = $mech->get_email;
like $email->header('Subject'), qr/Feedback/, 'subject looks okay';
like $email->header('To'), qr/division\@example.org/, 'to line looks correct';
@@ -143,7 +394,11 @@ is $report->state, 'planned', 'Report now in planned state';
$mech->log_out_ok;
$user = $mech->log_in_ok( 'dm1@example.org') ;
-$mech->get_ok( '/admin' );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin' );
+};
$mech->content_contains( 'report_edit/' . $report->id );
$mech->content_contains( DateTime->now->strftime("%d.%m.%Y") );
@@ -154,13 +409,17 @@ $extra->{email_confirmed} = 1;
$report->extra ( { %$extra } );
$report->update;
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->content_lacks( 'Unbest&auml;tigt' ); # Confirmed email
-$mech->submit_form_ok( { with_fields => { status_update => 'FINAL UPDATE' } } );
-$mech->form_with_fields( 'status_update' );
-$mech->submit_form_ok( { button => 'publish_response' } );
-
-$mech->get_ok( '/report/' . $report->id );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_lacks( 'Unbest&auml;tigt' ); # Confirmed email
+ $mech->submit_form_ok( { with_fields => { status_update => 'FINAL UPDATE' } } );
+ $mech->form_with_fields( 'status_update' );
+ $mech->submit_form_ok( { button => 'publish_response' } );
+
+ $mech->get_ok( '/report/' . $report->id );
+};
$mech->content_contains('Beantwortet');
$mech->content_contains('Test Test');
$mech->content_contains('FINAL UPDATE');
@@ -179,17 +438,25 @@ $mech->clear_emails_ok;
});
$report = $reports[0];
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->submit_form_ok( { with_fields => { state => 'planned' } } );
-$mech->get_ok( '/report/' . $report->id );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'planned' } } );
+ $mech->get_ok( '/report/' . $report->id );
+};
$mech->content_contains('In Bearbeitung');
$mech->content_contains('Second Test');
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->content_contains( 'Unbest&auml;tigt' );
-$mech->submit_form_ok( { button => 'publish_response', with_fields => { status_update => 'FINAL UPDATE' } } );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_contains( 'Unbest&auml;tigt' );
+ $mech->submit_form_ok( { button => 'publish_response', with_fields => { status_update => 'FINAL UPDATE' } } );
-$mech->get_ok( '/report/' . $report->id );
+ $mech->get_ok( '/report/' . $report->id );
+};
$mech->content_contains('Beantwortet');
$mech->content_contains('Second Test');
$mech->content_contains('FINAL UPDATE');
@@ -205,13 +472,17 @@ $mech->email_count_is(0);
});
$report = $reports[0];
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->submit_form_ok( { with_fields => { body_external => 4 } } );
-$mech->get_ok( '/report/' . $report->id );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { body_external => 4 } } );
+ $mech->get_ok( '/report/' . $report->id );
+};
$mech->content_contains('Beantwortet');
$mech->content_contains('Third Test');
$mech->content_contains('Wir haben Ihr Anliegen an External Body weitergeleitet');
-FixMyStreet::App->model('DB::Problem')->send_reports('zurich');
+send_reports_for_zurich();
$email = $mech->get_email;
like $email->header('Subject'), qr/Weitergeleitete Meldung/, 'subject looks okay';
like $email->header('To'), qr/external_body\@example.org/, 'to line looks correct';
@@ -220,17 +491,21 @@ unlike $email->body, qr/test\@example.com/, 'body does not contain email address
$mech->clear_emails_ok;
# Test calling back, and third_personal boolean setting
-$mech->get_ok( '/admin' );
-is $mech->uri->path, '/admin', "am logged in";
-$mech->content_contains( 'report_edit/' . $report->id );
-$mech->get_ok( '/admin/report_edit/' . $report->id );
-$mech->submit_form_ok( { with_fields => { state => 'unconfirmed' } } );
-$mech->submit_form_ok( { with_fields => { body_external => 4, third_personal => 1 } } );
-$mech->get_ok( '/report/' . $report->id );
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+}, sub {
+ $mech->get_ok( '/admin' );
+ is $mech->uri->path, '/admin', "am logged in";
+ $mech->content_contains( 'report_edit/' . $report->id );
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'unconfirmed' } } );
+ $mech->submit_form_ok( { with_fields => { body_external => 4, third_personal => 1 } } );
+ $mech->get_ok( '/report/' . $report->id );
+};
$mech->content_contains('Beantwortet');
$mech->content_contains('Third Test');
$mech->content_contains('Wir haben Ihr Anliegen an External Body weitergeleitet');
-FixMyStreet::App->model('DB::Problem')->send_reports('zurich');
+send_reports_for_zurich();
$email = $mech->get_email;
like $email->header('Subject'), qr/Weitergeleitete Meldung/, 'subject looks okay';
like $email->header('To'), qr/external_body\@example.org/, 'to line looks correct';
@@ -239,21 +514,167 @@ like $email->body, qr/test\@example.com/, 'body does contain email address';
$mech->clear_emails_ok;
$mech->log_out_ok;
-# Test only superuser can edit bodies
-$user = $mech->log_in_ok( 'dm1@example.org') ;
-$mech->get( '/admin/body/' . $zurich->id );
-is $mech->res->code, 404, "only superuser should be able to edit bodies";
-$mech->log_out_ok;
-
-# Test only superuser can see "Add body" form
-$user = $mech->log_in_ok( 'dm1@example.org') ;
-$mech->get_ok( '/admin/bodies' );
-$mech->content_lacks( '<form method="post" action="bodies"' );
-$mech->log_out_ok;
-
-$mech->delete_problems_for_body( 2 );
-$mech->delete_user( 'dm1@example.org' );
-$mech->delete_user( 'sdm1@example.org' );
+subtest "only superuser can see stats" => sub {
+ $user = $mech->log_in_ok( 'super@example.org' );
+
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get( '/admin/stats' );
+ };
+ is $mech->res->code, 200, "superuser should be able to see stats page";
+ $mech->log_out_ok;
+
+ $user = $mech->log_in_ok( 'dm1@example.org' );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get( '/admin/stats' );
+ };
+ is $mech->res->code, 404, "only superuser should be able to see stats page";
+ $mech->log_out_ok;
+};
+
+subtest "only superuser can edit bodies" => sub {
+ $user = $mech->log_in_ok( 'dm1@example.org' );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get( '/admin/body/' . $zurich->id );
+ };
+ is $mech->res->code, 404, "only superuser should be able to edit bodies";
+ $mech->log_out_ok;
+};
+
+subtest "only superuser can see 'Add body' form" => sub {
+ $user = $mech->log_in_ok( 'dm1@example.org' );
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ MAPIT_URL => 'http://global.mapit.mysociety.org/',
+ MAPIT_TYPES => [ 'O08' ],
+ MAPIT_ID_WHITELIST => [ 423017 ],
+ }, sub {
+ $mech->get_ok( '/admin/bodies' );
+ };
+ $mech->content_lacks( '<form method="post" action="bodies"' );
+ $mech->log_out_ok;
+};
+
+subtest "phone number is mandatory" => sub {
+ FixMyStreet::override_config {
+ MAPIT_TYPES => [ 'O08' ],
+ MAPIT_URL => 'http://global.mapit.mysociety.org/',
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $user = $mech->log_in_ok( 'dm1@example.org' );
+ $mech->get_ok( '/report/new?lat=47.381817&lon=8.529156' );
+ $mech->submit_form( with_fields => { phone => "" } );
+ $mech->content_contains( 'Diese Information wird ben&ouml;tigt' );
+ $mech->log_out_ok;
+ };
+};
+
+subtest "phone number is not mandatory for reports from mobile apps" => sub {
+ FixMyStreet::override_config {
+ MAPIT_TYPES => [ 'O08' ],
+ MAPIT_URL => 'http://global.mapit.mysociety.org/',
+ }, sub {
+ $mech->post_ok( '/report/new/mobile?lat=47.381817&lon=8.529156' , {
+ service => 'iPhone',
+ detail => 'Problem-Bericht',
+ lat => 47.381817,
+ lon => 8.529156,
+ email => 'user@example.org',
+ pc => '',
+ name => '',
+ });
+ my $res = $mech->response;
+ ok $res->header('Content-Type') =~ m{^application/json\b}, 'response should be json';
+ unlike $res->content, qr/Diese Information wird ben&ouml;tigt/, 'response should not contain phone error';
+ # Clear out the mailq
+ $mech->clear_emails_ok;
+ };
+};
+
+subtest "problems can't be assigned to deleted bodies" => sub {
+ $user = $mech->log_in_ok( 'dm1@example.org' );
+ $user->from_body( 1 );
+ $user->update;
+ $report->state( 'confirmed' );
+ $report->update;
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ MAPIT_URL => 'http://global.mapit.mysociety.org/',
+ MAPIT_TYPES => [ 'O08' ],
+ MAPIT_ID_WHITELIST => [ 423017 ],
+ }, sub {
+ $mech->get_ok( '/admin/body/' . $external_body->id );
+ $mech->submit_form_ok( { with_fields => { deleted => 1 } } );
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->content_lacks( $external_body->name );
+ };
+ $user->from_body( 2 );
+ $user->update;
+ $mech->log_out_ok;
+};
+
+subtest "hidden report email are only sent when requested" => sub {
+ $user = $mech->log_in_ok( 'dm1@example.org') ;
+ $extra = $report->extra;
+ $extra->{email_confirmed} = 1;
+ $report->extra ( { %$extra } );
+ $report->update;
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'hidden', send_rejected_email => 1 } } );
+ $mech->email_count_is(1);
+ $mech->clear_emails_ok;
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'hidden', send_rejected_email => undef } } );
+ $mech->email_count_is(0);
+ $mech->clear_emails_ok;
+ $mech->log_out_ok;
+ };
+};
+
+subtest "test stats" => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'zurich' ],
+ }, sub {
+ $user = $mech->log_in_ok( 'super@example.org' );
+
+ $mech->get_ok( '/admin/stats' );
+ is $mech->res->code, 200, "superuser should be able to see stats page";
+
+ $mech->content_contains('Innerhalb eines Arbeitstages moderiert: 2'); # now including hidden
+ $mech->content_contains('Innerhalb von f&uuml;nf Arbeitstagen abgeschlossen: 3');
+ # my @data = $mech->content =~ /(?:moderiert|abgeschlossen): \d+/g;
+ # diag Dumper(\@data); use Data::Dumper;
+
+ my $export_count = get_export_rows_count($mech);
+ if (defined $export_count) {
+ is $export_count - $EXISTING_REPORT_COUNT, 3, 'Correct number of reports';
+ $mech->content_contains(',fixed - council,');
+ $mech->content_contains(',hidden,');
+ }
+
+ $mech->log_out_ok;
+ };
+};
+
+subtest "test admin_log" => sub {
+ diag $report->id;
+ my @entries = FixMyStreet::App->model('DB::AdminLog')->search({
+ object_type => 'problem',
+ object_id => $report->id,
+ });
+ is scalar @entries, 4, 'State changes logged';
+ is $entries[-1]->action, 'state change to hidden', 'State change logged as expected';
+};
+
+cleanup();
ok $mech->host("www.fixmystreet.com"), "change host back";
diff --git a/t/i18n.t b/t/i18n.t
index f1cc86985..3337f1a7f 100644
--- a/t/i18n.t
+++ b/t/i18n.t
@@ -3,15 +3,12 @@ use warnings;
use Test::More;
-use FixMyStreet;
-use mySociety::Locale;
-use Encode;
-use Data::Dumper;
use HTTP::Headers;
use Sort::Key qw(keysort);
use POSIX 'strcoll';
-local $Data::Dumper::Sortkeys = 1;
-use utf8;
+
+use FixMyStreet;
+use mySociety::Locale;
# check that the mo files have been generated
die "You need to run 'commonlib/bin/gettext-makemo --quiet FixMyStreet' "
@@ -59,10 +56,6 @@ my @EN_sorted = qw( A Å Ø Z );
my @NO_sorted = qw( A Z Ø Å );
my @default_sorted = qw( A Z Å Ø );
-sub utf8_diag {
- diag encode_utf8( Dumper(@_) );
-}
-
{
mySociety::Locale::negotiate_language( #
diff --git a/t/open311.t b/t/open311.t
index 2dd9119c9..a029c7502 100644
--- a/t/open311.t
+++ b/t/open311.t
@@ -156,7 +156,7 @@ for my $test (
],
},
{
- title => 'magic fms_extra parameters handled correctly',
+ desc => 'magic fms_extra parameters handled correctly',
extra => [
{
name => 'fms_extra_title',
@@ -192,7 +192,7 @@ for my $test (
for my $test (
{
- title => 'Check uses report name over user name',
+ desc => 'Check uses report name over user name',
name => 'Nom de Report',
first_name => 'Nom',
last_name => 'de Report',
diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t
index e700aef38..00c25a83e 100644
--- a/t/open311/getservicerequestupdates.t
+++ b/t/open311/getservicerequestupdates.t
@@ -133,7 +133,6 @@ $problem->insert;
for my $test (
{
desc => 'OPEN status for confirmed problem does not change state',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -145,7 +144,6 @@ for my $test (
},
{
desc => 'bad state does not update states but does create update',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -158,7 +156,6 @@ for my $test (
{
desc => 'investigating status changes problem status',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -170,7 +167,6 @@ for my $test (
},
{
desc => 'in progress status changes problem status',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -182,7 +178,6 @@ for my $test (
},
{
desc => 'action scheduled status changes problem status',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -194,7 +189,6 @@ for my $test (
},
{
desc => 'not responsible status changes problem status',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -206,7 +200,6 @@ for my $test (
},
{
desc => 'internal referral status changes problem status',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -218,7 +211,6 @@ for my $test (
},
{
desc => 'duplicate status changes problem status',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -230,7 +222,6 @@ for my $test (
},
{
desc => 'fixed status marks report as fixed - council',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -242,7 +233,6 @@ for my $test (
},
{
desc => 'status of CLOSED marks report as fixed - council',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -254,7 +244,6 @@ for my $test (
},
{
desc => 'status of OPEN re-opens fixed report',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'fixed - user',
@@ -266,7 +255,6 @@ for my $test (
},
{
desc => 'action sheduled re-opens fixed report as action scheduled',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'fixed - user',
@@ -278,7 +266,6 @@ for my $test (
},
{
desc => 'open status re-opens closed report',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'not responsible',
@@ -290,7 +277,6 @@ for my $test (
},
{
desc => 'fixed status leaves fixed - user report as fixed - user',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'fixed - user',
@@ -302,7 +288,6 @@ for my $test (
},
{
desc => 'closed status updates fixed report',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'fixed - user',
@@ -314,7 +299,6 @@ for my $test (
},
{
desc => 'no futher action status closes report',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'confirmed',
@@ -326,7 +310,6 @@ for my $test (
},
{
desc => 'fixed status sets closed report as fixed',
- updated_datetime => sprintf( '<updated_datetime>%s</updated_datetime>', $dt ),
description => 'This is a note',
external_id => 638344,
start_state => 'unable to fix',
@@ -336,10 +319,22 @@ for my $test (
problem_state => 'fixed - council',
end_state => 'fixed - council',
},
+ {
+ desc => 'open status does not re-open hidden report',
+ description => 'This is a note',
+ external_id => 638344,
+ start_state => 'hidden',
+ comment_status => 'OPEN',
+ mark_fixed => 0,
+ mark_open => 0,
+ problem_state => 'confirmed',
+ end_state => 'hidden',
+ },
) {
subtest $test->{desc} => sub {
my $local_requests_xml = $requests_xml;
- $local_requests_xml =~ s/UPDATED_DATETIME/$test->{updated_datetime}/;
+ my $updated_datetime = sprintf( '<updated_datetime>%s</updated_datetime>', $dt );
+ $local_requests_xml =~ s/UPDATED_DATETIME/$updated_datetime/;
$local_requests_xml =~ s#<service_request_id>\d+</service_request_id>#<service_request_id>@{[$problem->external_id]}</service_request_id>#;
$local_requests_xml =~ s#<service_request_id_ext>\d+</service_request_id_ext>#<service_request_id_ext>@{[$problem->id]}</service_request_id_ext>#;
$local_requests_xml =~ s#<status>\w+</status>#<status>$test->{comment_status}</status># if $test->{comment_status};
@@ -632,10 +627,22 @@ foreach my $test ( {
foreach my $test ( {
desc => 'normally alerts are not suppressed',
+ num_alerts => 1,
suppress_alerts => 0,
},
{
desc => 'alerts suppressed if suppress_alerts set',
+ num_alerts => 1,
+ suppress_alerts => 1,
+ },
+ {
+ desc => 'alert suppression ok even if no alerts',
+ num_alerts => 0,
+ suppress_alerts => 1,
+ },
+ {
+ desc => 'alert suppression ok even if 2x alerts',
+ num_alerts => 2,
suppress_alerts => 1,
}
) {
@@ -657,12 +664,14 @@ foreach my $test ( {
$problem->lastupdate( $dt->subtract( hours => 3 ) );
$problem->update;
- my $alert = FixMyStreet::App->model('DB::Alert')->find_or_create( {
- alert_type => 'new_updates',
- parameter => $problem->id,
- confirmed => 1,
- user_id => $problem->user->id,
- } );
+ my @alerts = map {
+ my $alert = FixMyStreet::App->model('DB::Alert')->create( {
+ alert_type => 'new_updates',
+ parameter => $problem->id,
+ confirmed => 1,
+ user_id => $problem->user->id,
+ } )
+ } (1..$test->{num_alerts});
$requests_xml =~ s/UPDATED_DATETIME/$dt/;
@@ -679,19 +688,21 @@ foreach my $test ( {
my $alerts_sent = FixMyStreet::App->model('DB::AlertSent')->search(
{
- alert_id => $alert->id,
+ alert_id => [ map $_->id, @alerts ],
parameter => $problem->comments->first->id,
}
);
if ( $test->{suppress_alerts} ) {
- ok $alerts_sent->count(), 'alerts suppressed';
+ is $alerts_sent->count(), $test->{num_alerts}, 'alerts suppressed';
} else {
is $alerts_sent->count(), 0, 'alerts not suppressed';
}
$alerts_sent->delete;
- $alert->delete;
+ for my $alert (@alerts) {
+ $alert->delete;
+ }
}
}
diff --git a/templates/email/fixmystreet/alert-problem-area.txt b/templates/email/fixmystreet/alert-problem-area.txt
new file mode 100644
index 000000000..4f1176685
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-area.txt
@@ -0,0 +1,23 @@
+Subject: New problems in <?=$values['area_name']?> on FixMyStreet
+
+The following new problems have been added within
+<?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems in
+<?=$values['area_name']?>, please follow this link:
+<?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem-council.txt b/templates/email/fixmystreet/alert-problem-council.txt
new file mode 100644
index 000000000..7c17ae163
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-council.txt
@@ -0,0 +1,22 @@
+Subject: New problems reported to <?=$values['area_name']?> on FixMyStreet
+
+The following new problems have been reported to <?=$values['area_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems reported to
+<?=$values['area_name']?>, please follow this link:
+<?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem-nearby.txt b/templates/email/fixmystreet/alert-problem-nearby.txt
new file mode 100644
index 000000000..44fbae742
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-nearby.txt
@@ -0,0 +1,21 @@
+Subject: New nearby problems on FixMyStreet
+
+The following nearby problems have been added:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are nearby problems,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem-ward.txt b/templates/email/fixmystreet/alert-problem-ward.txt
new file mode 100644
index 000000000..308f52ddd
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem-ward.txt
@@ -0,0 +1,23 @@
+Subject: New problems reported to <?=$values['area_name']?> within <?=$values['ward_name']?> on FixMyStreet
+
+The following new problems have been reported to <?=$values['area_name']?>
+within <?=$values['ward_name']?>:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems reported to
+<?=$values['area_name']?> within <?=$values['ward_name']?>,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-problem.txt b/templates/email/fixmystreet/alert-problem.txt
new file mode 100644
index 000000000..3902f723b
--- /dev/null
+++ b/templates/email/fixmystreet/alert-problem.txt
@@ -0,0 +1,21 @@
+Subject: New problems on FixMyStreet
+
+The following new problems have been added:
+
+<?=$values['data']?>
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new problems,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/email/fixmystreet/alert-update.txt b/templates/email/fixmystreet/alert-update.txt
new file mode 100644
index 000000000..c9054fe10
--- /dev/null
+++ b/templates/email/fixmystreet/alert-update.txt
@@ -0,0 +1,28 @@
+Subject: New updates on problem - '<?=$values['title']?>'
+
+The following updates have been left on this problem:
+
+<?=$values['data']?>
+
+<?=$values['state_message']?>
+
+To view or reply to these updates, please visit the following URL:
+ <?=$values['problem_url']?>
+
+You cannot contact anyone by replying to this email.
+
+-------
+
+We're running a survey to help us understand who uses our sites.
+If you have 10-15 minutes to spare then we'd be grateful if you
+could take part:
+ http://questions.mysociety.org/S/fms/e/
+
+Thank you!
+
+-------
+
+<?=$values['signature']?>
+
+To stop receiving emails when there are new updates on this problem,
+please follow this link: <?=$values['unsubscribe_url']?>
diff --git a/templates/web/bromley/report/_item.html b/templates/web/bromley/report/_item.html
new file mode 100644
index 000000000..cd3fbc18c
--- /dev/null
+++ b/templates/web/bromley/report/_item.html
@@ -0,0 +1,25 @@
+<li>
+<a class="text" href="[% c.uri_for('/report', problem.id ) %]">
+ [% IF problem.photo;
+ photo = problem.get_photo_params
+ %]
+ <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt="">
+ [% END %]
+ <span>[% problem.title | html %]</span><br />
+ <small>[% prettify_dt( problem.confirmed, 1 ) %]
+ [%- IF dist %], [% dist %]km[% END %]
+ [%- IF include_lastupdate AND problem.confirmed != problem.lastupdate AND problem.whensent != problem.lastupdate %],
+ [% tprintf(loc('last updated %s'), prettify_dt( problem.lastupdate, 1 ) ) %]
+ [%- END %]
+ [% IF include_lastupdate %]
+ [% IF problem.bodies_str_ids.size > 1 %] [% loc('(sent to both)') %]
+ [% ELSIF problem.bodies_str_ids.size == 0 %] [% loc('(not sent to council)') %]
+ [% END %]
+ [% END %]
+ [% IF NOT no_fixed AND problem.is_fixed %]
+ [% loc('(fixed)') %]
+ [% ELSIF NOT no_fixed AND problem.is_closed %]
+ [% loc('(closed)') %]
+ [% END %]</small>
+</a>
+</li>
diff --git a/templates/web/default/admin/bodies.html b/templates/web/default/admin/bodies.html
index e0cf013d8..8bf7954f3 100644
--- a/templates/web/default/admin/bodies.html
+++ b/templates/web/default/admin/bodies.html
@@ -2,51 +2,63 @@
[% INCLUDE 'admin/edit-league.html' %]
-<table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('Name') %]</th>
+[% IF bodies.size == 0 %]
+ <p class="fms-admin-info">
+ [% loc('Currently no bodies have been created.') %]
+ <br>
+ [% loc('You need to add bodies (such as councils or departments) so that you can then add
+ the categories of problems they can handle (such as potholes or streetlights) and the
+ contacts (such as an email address) to which reports are sent.') %]
+ </p>
+[% ELSE %]
+ <table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('Name') %]</th>
+ [% IF c.cobrand.moniker == 'zurich' %]
+ <th>[% loc('Email') %]</th>
+ [% ELSE %]
+ <th>[% loc('Category') %]</th>
+ [% END %]
+ <th>[% loc('Deleted') %]</th>
+ </tr>
+ [%- FOREACH body IN bodies %]
+ [%- SET id = body.id %]
+ [% NEXT IF c.cobrand.moniker == 'zurich' AND admin_type == 'dm' AND (body.parent OR body.bodies) %]
+ <tr[% IF body.deleted %] class="adminhidden"[% END %]>
+ <td>
+ [% IF c.cobrand.moniker == 'zurich' %]
+ [% FILTER repeat(4*body.api_key) %]&nbsp;[% END %]
+ [% IF admin_type == 'super' %]
+ <a href="[% c.uri_for( 'body', id ) %]">[% body.name %]</a>
+ [% ELSE %]
+ [% body.name %]
+ [% END %]
+ [% ELSE %] [%# not Zurich: all bodies should be links %]
+ <a href="[% c.uri_for( 'body', id ) %]">[% body.name %]</a>
+ [%- ', ' _ body.parent.name IF body.parent -%]
+ [% END %]
+ </td>
[% IF c.cobrand.moniker == 'zurich' %]
- <th>[% loc('Email') %]</th>
+ <td>[% body.endpoint %]</td>
[% ELSE %]
- <th>[% loc('Category') %]</th>
- [% END %]
- </tr>
-[%- FOREACH body IN bodies %]
- [%- SET id = body.id %]
- [% NEXT IF c.cobrand.moniker == 'zurich' AND admin_type == 'dm' AND (body.parent OR body.bodies) %]
- <tr>
- <td>
- [% IF c.cobrand.moniker == 'zurich' %]
- [% FILTER repeat(4*body.api_key) %]&nbsp;[% END %]
- [% END %]
- [% IF admin_type == 'super' %]
- <a href="[% c.uri_for( 'body', id ) %]">[% body.name %]</a>
+ <td>
+ [% IF counts.$id %]
+ [% tprintf( loc('%d addresses'), counts.$id.c) IF c.cobrand.moniker != 'emptyhomes' %]
+ [% IF counts.$id.deleted %]
+ (1+ deleted)
+ [% ELSIF counts.$id.confirmed != counts.$id.c %]
+ (some unconfirmed)
+ [% END %]
[% ELSE %]
- [% body.name %]
- [% END %]
- [% IF c.cobrand.moniker != 'zurich' %]
- [%- ', ' _ body.parent.name IF body.parent -%]
+ no categories
[% END %]
- </td>
- [% IF c.cobrand.moniker == 'zurich' %]
- <td>[% body.endpoint %]</td>
- [% ELSE %]
- <td>
- [% IF counts.$id %]
- [% tprintf( loc('%d addresses'), counts.$id.c) IF c.cobrand.moniker != 'emptyhomes' %]
- [% IF counts.$id.deleted %]
- (1+ deleted)
- [% ELSIF counts.$id.confirmed != counts.$id.c %]
- (some unconfirmed)
- [% END %]
- [% ELSE %]
- no categories
- [% END %]
- </td>
- [% END %]
- </tr>
-[%- END %]
-</table>
+ </td>
+ [% END %]
+ <td>[% IF body.deleted %][% loc('Yes') %][% END %]</td>
+ </tr>
+ [%- END %]
+ </table>
+[% END %]
[% IF c.cobrand.moniker == 'zurich' %]
[% IF admin_type == 'super' %]
@@ -54,8 +66,10 @@
[% INCLUDE 'admin/body-form.html', body='' %]
[% END %]
[% ELSE %]
- <h2>[% loc('Add body') %]</h2>
- [% INCLUDE 'admin/body-form.html', body='' %]
+ <div class="admin-box">
+ <h2>[% loc('Add body') %]</h2>
+ [% INCLUDE 'admin/body-form.html', body='' %]
+ </div>
[% END %]
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/body-form.html b/templates/web/default/admin/body-form.html
index 039d83ae2..f2eb505ab 100644
--- a/templates/web/default/admin/body-form.html
+++ b/templates/web/default/admin/body-form.html
@@ -1,10 +1,32 @@
<form method="post" action="[% body ? c.uri_for('body', body.id) : c.uri_for('bodies') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
-
+ <div class="fms-admin-info">
+ [% loc(
+ "Add a <strong>body</strong> for each administrative body, such as a council or department
+ to which problem reports can be sent. You can add one or more contacts (for different
+ categories of problem) to each body."
+ ) %]
+ </div>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The body's <strong>name</strong> identifies the body (for example, <em>Borsetshire District Council</em>)
+ and may be displayed publically."
+ ) %]
+ </p>
+ </div>
<p>
<label for="name">[% loc('Name') %]</label>
<input type="text" name="name" id="name" value="[% body.name %]" size="50">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Identify a <strong>parent</strong> if this body is itself part of another body.
+ For basic installations, you don't need to join bodies in this way."
+ ) %]
+ </p>
+ </div>
<p>
<label for="parent">[% loc('Parent') %]</label>
<select name="parent" id="parent">
@@ -15,17 +37,62 @@
</select>
</p>
+ [% IF areas.size == 0 AND c.config.MAPIT_URL AND (NOT c.config.MAPIT_TYPES OR c.config.MAPIT_TYPES.size==O) %]
+ <p class="fms-admin-warning">
+ [% tprintf( loc(
+ '<code>MAPIT_URL</code> is set (<code>%s</code>) but no <code>MAPIT_TYPES</code>.<br>
+ This is probably why "area covered" is empty (below).<br>
+ Maybe add some <code>MAPIT_TYPES</code> to your config file?'), c.config.MAPIT_URL)
+ %]
+ </p>
+ [% END %]
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "This body will only be sent reports for problems that are located in the <strong>area covered</strong>.
+ A body will not receive any reports unless it covers at least one area."
+ ) %]
+ <br>
+ [% IF c.config.MAPIT_URL %]
+ [% tprintf( loc("The list of available areas is being provided by the MapIt service at %s."), c.config.MAPIT_URL) %]
+ [% ELSE %]
+ [% loc(
+ "No specific areas are currently available, because the <code>MAPIT_URL</code> in
+ your config file is not pointing to a live MapIt service.") %]
+ [% END %]
+ <br>
+ [% loc("For more information, see <a href='http://code.fixmystreet.com/customising/fms_and_mapit' class='admin-offsite-link'>How FixMyStreet uses Mapit</a>.")%]
+ </p>
+ </div>
<p>
<label for="area_ids">[% loc('Area covered') %]</label>
<select name="area_ids" id="area_ids" multiple>
<option value=""> -- [% loc('Select an area') %] -- </option>
+ [% SET body_areas = body.areas %]
[% FOR area IN areas %]
[% SET aid = area.id %]
- <option value="[% area.id %]"[% ' selected' IF body.areas.$aid %]>[% area.name %]</option>
+ <option value="[% area.id %]"[% ' selected' IF body_areas.$aid %]>[% area.name %]</option>
[% END %]
</select>
</p>
+ <div class="admin-hint">
+ <p>[% loc( "You can mark a body as deleted if you do not want it to be active on the site." ) %]</p>
+ </div>
+ <p>
+ <label for="deleted">[% loc('Flag as deleted') %]</label>
+ <input type="checkbox" name="deleted" id="deleted" value="1"[% ' checked' IF body.deleted %]>
+ </p>
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The <strong>send method</strong> determines how problem reports will be sent to the body.
+ If you leave this blank, <strong>send method defaults to email</strong>."
+ ) %]
+ </p>
+ </div>
<p>
<label for="send_method">Send Method</label>
<select name="send_method" id="send_method">
@@ -36,46 +103,130 @@
</select>
</p>
+ <div class="admin-open311-only">
+ <p class="fms-admin-info">
+ [% loc(
+ "These settings are for bodies that use Open311 (or other back-end integration) to receive problem reports.<br>
+ <strong>You don't need to set them if the Send Method is email.</strong>.
+ For more information on Open311, see
+ <a href='http://www.mysociety.org/2013/01/17/open311-explained/' class='admin-offsite-link'>this article</a>.
+ "
+ ) %]
+ </p>
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The <strong>endpoint</strong> is the URL of the service that FixMyStreet will connect to
+ when sending reports to this body."
+ ) %]
+ </p>
+ </div>
<p>
<label for="endpoint">[% loc('Endpoint') %]</label>
<input type="text" name="endpoint" id="endpoint" value="[% body.endpoint %]" size="50">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The <strong>jurisdiction</strong> is only needed if the endpoint is serving more
+ than one. If the body is running its own endpoint, you can usually leave this blank."
+ ) %]
+ </p>
+ </div>
<p>
<label for="jurisdiction">Open311 Jurisdiction</label>
<input type="text" name="jurisdiction" id="jurisdiction" value="[% body.jurisdiction %]" size="50">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Some endpoints require an <strong>API key</strong> to indicate that the reports are being
+ sent from your FixMyStreet installation."
+ ) %]
+ </p>
+ </div>
<p>
<label for="api_key">Open311 API Key</label>
<input type="text" name="api_key" id="api_key" value="[% body.api_key %]" size="25">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Enable <strong>Open311 update-sending</strong> if the endpoint will send and receive
+ updates to existing reports. If you're not sure, it probably does not, so leave this unchecked.
+ For more information, see
+ <a href='http://www.mysociety.org/2013/02/20/open311-extended/' class='admin-offsite-link'>this article</a>."
+ ) %]
+ </p>
+ </div>
<p>
<input type="checkbox" id="send_comments" name="send_comments"[% ' checked' IF body.send_comments %]>
- <label for="send_comments" class="inline">Use Open311 comment sending extension</label>
+ <label for="send_comments" class="inline">Use Open311 update-sending extension</label>
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "If you've enabled Open311 update-sending above, you must identify which
+ FixMyStreet <strong>user</strong> will be attributed as the creator of those updates
+ when they are shown on the site. Enter the ID (number) of that user."
+ ) %]
+ </p>
+ </div>
<p>
<label for"comment_user_id">User ID to attribute fetched comments to</label>
<input type="text" name="comment_user_id" value="[% body.comment_user_id %]">
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "If you've enabled Open311 update-sending above, enable <strong>suppression of alerts</strong>
+ if you do <strong>not</strong> want that user to be notified whenever these updates are created."
+ ) %]
+ </p>
+ </div>
<p>
<input type="checkbox" id="suppress_alerts" name="suppress_alerts"[% ' checked' IF body.suppress_alerts %]>
<label for="suppress_alerts" class="inline">Do not send email alerts on fetched comments to problem creator</label>
</p>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "If you've enabled Open311 update-sending above, Open311 usually only accepts OPEN or CLOSED status in
+ its updates. Enable <strong>extended Open311 stauses</strong> if you want to allow extra states to be passed.
+ Check that your cobrand supports this feature before switching it on."
+ ) %]
+ </p>
+ </div>
<p>
- <input type="checkbox" id="can_be_devolved" name="can_be_devolved"[% ' checked' IF body.can_be_devolved %]>
- <label for="can_be_devolved" class="inline">Endpoint lookup can be devolved to contacts</label>
+ <input type="checkbox" id="send_extended_statuses" name="send_extended_statuses"[% ' checked' IF conf.send_extended_statuses %]>
+ <label for="send_extended_statuses" class="inline">Send extended Open311 statuses with service request updates</label>
</p>
-
+ </div>
+
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Enable this <strong>can be devolved</strong> setting if one or more contacts have a
+ different endpoint (and send method) from the body's. For example, if reports for some categories of
+ problem must be emailed, while others can be sent over Open311."
+ ) %]
+ <br>
+ [%# NB 'email' is a literal setting, so not translating it in following string? %]
+ [% tprintf( loc('Leave this blank if all reports to this body should be sent using the same send method (e.g., "%s").'), body.send_method or 'email' ) %]
+ </p>
+ </div>
<p>
- <label for="send_extended_statuses">Send extended open311 statuses with service request updates</label>:
- <input type="checkbox" id="send_extended_statuses" name="send_extended_statuses"[% ' checked' IF conf.send_extended_statuses %]>
+ <input type="checkbox" id="can_be_devolved" name="can_be_devolved"[% ' checked' IF body.can_be_devolved %]>
+ <label for="can_be_devolved" class="inline">Send method or endpoints can be devolved to contacts (i.e, can be different from the body's)</label>
</p>
-
+
<p>
<input type="hidden" name="posted" value="body">
<input type="hidden" name="token" value="[% token %]">
diff --git a/templates/web/default/admin/body.html b/templates/web/default/admin/body.html
index 120a07da9..b207d18ca 100644
--- a/templates/web/default/admin/body.html
+++ b/templates/web/default/admin/body.html
@@ -1,115 +1,192 @@
[% INCLUDE 'admin/header.html' title=tprintf(loc('Council contacts for %s'), body.name) -%]
[% IF updated %]
-<p>
-<em>[% updated %]</em>
-</p>
+ <p>
+ <em>[% updated %]</em>
+ </p>
[% END %]
<p>
-[% IF example_pc %]
-<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a> |
-[% END %]
-[% IF c.cobrand.moniker == 'emptyhomes' %]
-<a href="[% c.uri_for( 'reports', search => 'body:' _ body_id ) %]">[% loc('List all reported problems' ) %]</a>
-[% ELSE %]
-<a href="[% c.uri_for_email( '/reports/' _ body_id ) %]">[% loc('List all reported problems' ) %]</a>
-[% END %]
-<a href="[% c.uri_for( 'body', body_id, { text => 1 } ) %]">[% loc('Text only version') %]</a>
+ [% IF example_pc %]
+ <a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]" class="admin-offsite-link">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a> |
+ [% END %]
+ [% IF c.cobrand.moniker == 'emptyhomes' %]
+ <a href="[% c.uri_for( 'reports', search => 'body:' _ body_id ) %]">[% loc('List all reported problems' ) %]</a> |
+ [% ELSE %]
+ <a href="[% c.uri_for_email( '/reports/' _ body_id ) %]" class="admin-offsite-link">[% loc('List all reported problems' ) %]</a> |
+ [% END %]
+ <a href="[% c.uri_for( 'body', body_id, { text => 1 } ) %]">[% loc('Text only version') %]</a>
</p>
[% IF body.send_method == 'Open311' %]
- <h2>
+ <h2>
Council contacts configured via Open311
- </h2>
+ </h2>
[% END %]
[% IF c.cobrand.moniker == 'fixmystreet' %]
-<p class="error">Do not give these out except to people at the council.</p>
+ <p class="error">Do not give these out except to people at the council.</p>
[% END %]
-<form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+[% IF body.areas.size == 0 %]
+ <p class="fms-admin-warning">
+ [% loc("This body covers no area. This means that it has no jurisdiction over problems reported <em>at any location</em>.
+ Consequently, none of its categories will appear in the drop-down category menu when users report problems.
+ Currently, users <strong>cannot report problems to this body</strong>.") %]
+ <br>
+ [% loc("Fix this by choosing an <strong>area covered</strong> in the <em>Edit body details</em> form below.") %]
+ </p>
+[% END %]
- <table cellspacing="0" cellpadding="2" border="1">
- <tr>
- <th>[% loc('Category') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Confirmed') %]</th>
- <th>[% loc('Deleted') %]</th>
- <th>[% loc('Devolved') %]</th>
- <th>[% loc('Last editor') %]</th>
- <th>[% loc('Note') %]</th>
- <th>[% loc('Public') %]</th>
- <th>[% loc('When edited') %]</th>
- <th>[% loc('Confirm') %]</th>
- </tr>
- [% WHILE ( contact = contacts.next ) %]
- <tr>
- <td><a href="[% c.uri_for( 'body_edit', body_id, contact.category ) %]">[% contact.category %]</a></td>
- <td>[% contact.email | html %]</td>
- <td>[% IF contact.confirmed %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% IF contact.deleted %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% IF body.can_be_devolved && contact.send_method %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
- <td>[% contact.editor %]</td>
- <td>[% contact.note | html %]</td>
- <td>[% contact.non_public ? loc('Non Public') : loc('Public') %]</td>
- <td>[% contact.whenedited.ymd _ ' ' _ contact.whenedited.hms %]</td>
- <td><input type="checkbox" name="confirmed" value="[% contact.category %]"></td>
- </tr>
- [% END %]
- </table>
+[% IF live_contacts == 0 %]
+ <p class="fms-admin-warning">
+ [% loc("This body has no contacts. This means that currently problems reported to this body <strong>will not be sent</strong>.") %]
+ <br>
+ [% loc("Add a contact using the form below.") %]
+ </p>
+[% END %]
- <p>
+<form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+
+ <table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('Category') %]</th>
+ <th>[% loc('Email') %]</th>
+ <th>[% loc('Confirmed') %]</th>
+ <th>[% loc('Deleted') %]</th>
+ <th>[% loc('Devolved') %]</th>
+ <th>[% loc('Last editor') %]</th>
+ <th>[% loc('Note') %]</th>
+ <th>[% loc('Public') %]</th>
+ <th>[% loc('When edited') %]</th>
+ <th>[% loc('Confirm') %]</th>
+ </tr>
+ [% WHILE ( contact = contacts.next ) %]
+ <tr [% IF contact.deleted %]class="is-deleted"[% END %]>
+ <td class="contact-category"><a href="[% c.uri_for( 'body_edit', body_id, contact.category ) %]">[% contact.category %]</a></td>
+ <td>[% contact.email | html %]</td>
+ <td>[% IF contact.confirmed %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% IF contact.deleted %]<strong>[% loc('Yes') %]</strong>[% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% IF body.can_be_devolved && contact.send_method %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% contact.editor %]</td>
+ <td>[% contact.note | html %]</td>
+ <td>[% contact.non_public ? loc('Non Public') : loc('Public') %]</td>
+ <td>[% contact.whenedited.ymd _ ' ' _ contact.whenedited.hms %]</td>
+ <td><input type="checkbox" name="confirmed" value="[% contact.category %]"></td>
+ </tr>
+ [% END %]
+ </table>
+
+ <p>
<input type="hidden" name="posted" value="update">
<input type="hidden" name="token" value="[% token %]">
<input type="submit" name="Update statuses" value="[% loc('Update statuses') %]">
- </p>
- </form>
-
- <h2>[% loc('Add new category') %]</h2>
-
- <form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
-
- [% IF c.cobrand.moniker != 'emptyhomes' %]
+ </p>
+</form>
+
+<div class="admin-box">
+ <h2>[% loc('Add new category') %]</h2>
+ <p class="fms-admin-info">
+ [% loc("Each contact for the body has a category, which is displayed to the public.
+ Different categories <strong>can have the same contact</strong> (email address).
+ This means you can add many categories even if you only have one contact for the body.
+ ") %]
+ </p>
+
+ <form method="post" action="[% c.uri_for('body', body_id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
+
+ [% IF c.cobrand.moniker != 'emptyhomes' %]
+ <div class="admin-hint">
<p>
- <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30">
+ [% loc('Choose a <strong>category</strong> name that makes sense to the public (e.g., "Pothole", "Street lighting") but is helpful
+ to the body too. These will appear in the drop-down menu on the report-a-problem page.') %]
+ <br>
+ [% loc("If two or more bodies serve the same location, FixMyStreet combines identical categories into a single entry in
+ the menu. Make sure you use the same category name in the bodies if you want this to happen.") %]
</p>
- [% END %]
-
+ </div>
+ <p>
+ <strong>[% loc('Category:') %] </strong><input type="text" name="category" size="30">
+ </p>
+ [% END %]
+
+ <div class="admin-hint">
+ <p>
+ [% loc("The <strong>email address</strong> is the destination to which reports about this category will be sent.
+ Other categories for this body may have the same email address.") %]
+ </p>
+ [% IF (body.send_method AND body.send_method != 'Email') OR body.can_be_devolved %]
<p>
- <strong>[% loc('Email:') %] </strong><input type="text" name="email" size="30">
+ [% loc("If you're using <strong>a send method that is not email</strong>, enter the service ID (Open311) or equivalent identifier here.") %]
</p>
+ [% END %]
+ </div>
- <p>
- <input type="checkbox" name="confirmed" value="1" id="confirmed">
- <label for="confirmed" class="inline">[% loc('Confirmed') %]</label>
-
- <input type="checkbox" name="deleted" value="1" id="deleted">
- <label for="deleted" class="inline">[% loc('Deleted') %]</label>
- </p>
+ <p>
+ <strong>[% loc('Email address:') %] </strong><input type="text" name="email" size="30">
+ </p>
- <p>
- <strong>[% loc('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea>
- </p>
+ <div class="admin-hint">
+ <p>
+ [% loc("Check <strong>confirmed</strong> to indicate that this contact has been confirmed as correct.
+ If you are not sure of the origin or validity of the contact, leave this unchecked.") %]
+ </p>
+ </div>
+ <p>
+ <input type="checkbox" name="confirmed" value="1" id="confirmed">
+ <label for="confirmed" class="inline">[% loc('Confirmed') %]</label>
+ </p>
- <p>
- <input type="checkbox" name="non_public" value="1" id="non_public">
- <label for="non_public" class="inline">[% loc('Private') %]</label>
- </p>
+ <div class="admin-hint">
+ <p>
+ [% loc("Check <strong>deleted</strong> to remove the category from use.
+ It will not appear as an available category in the drop-down menu on the report-a-problem page.") %]
+ </p>
+ </div>
+ <p>
+ <input type="checkbox" name="deleted" value="1" id="deleted">
+ <label for="deleted" class="inline">[% loc('Deleted') %]</label>
+ </p>
- <p>
- <input type="hidden" name="posted" value="new" >
- <input type="hidden" name="token" value="[% token %]" >
- <input type="submit" name="Create category" value="[% loc('Create category') %]" >
- </p>
+ <div class="admin-hint">
+ <p>
+ [% loc("Use the <strong>note</strong> to record details that are only displayed in the admin. Notes are not shown publicly, and are not sent to the body.") %]
+ </p>
+ </div>
+ <p>
+ <strong>[% loc('Note:') %] </strong> <textarea name="note" rows="3" cols="40"></textarea>
+ </p>
- <div>
- <input type="hidden" name=".cgifields" value="confirmed" >
- <input type="hidden" name=".cgifields" value="deleted" >
- </div>
- </form>
+ <div class="admin-hint">
+ <p>
+ [% loc("Check <strong>private</strong> if reports in this category should <strong>never be displayed on the website</strong>.
+ <br>
+ Normally, categories are not private.
+ <br>
+ This is suitable for issues that you want to allow users to report to the body, but for which there is no public
+ interest in displaying the report. In the UK, we've used this for services like requesting an extra rubbish bin
+ at a specific address.") %]
+ </p>
+ </div>
+ <p>
+ <input type="checkbox" name="non_public" value="1" id="non_public">
+ <label for="non_public" class="inline">[% loc('Private') %]</label>
+ </p>
- <h2>[% loc('Edit body details') %]</h2>
- [% INCLUDE 'admin/body-form.html' %]
+ <p>
+ <input type="hidden" name="posted" value="new" >
+ <input type="hidden" name="token" value="[% token %]" >
+ <input type="submit" name="Create category" value="[% loc('Create category') %]" >
+ </p>
+ <div>
+ <input type="hidden" name=".cgifields" value="confirmed" >
+ <input type="hidden" name=".cgifields" value="deleted" >
+ </div>
+ </form>
+</div>
+<div class="admin-box">
+ <h2>[% loc('Edit body details') %]</h2>
+ [% INCLUDE 'admin/body-form.html' %]
+</div>
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/admin/body_edit.html b/templates/web/default/admin/body_edit.html
index 1eeff9ab5..f2bae0c0b 100644
--- a/templates/web/default/admin/body_edit.html
+++ b/templates/web/default/admin/body_edit.html
@@ -15,7 +15,7 @@
<p>
[% IF example_pc %]
-<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a>
+<a href="[% c.uri_for_email( '/around', { pc => example_pc } ) %]" class="admin-offsite-link">[% tprintf( loc('Example postcode %s'), example_pc ) | html %]</a>
[% END %]
</p>
diff --git a/templates/web/default/admin/config_page.html b/templates/web/default/admin/config_page.html
new file mode 100644
index 000000000..77a8be4b1
--- /dev/null
+++ b/templates/web/default/admin/config_page.html
@@ -0,0 +1,146 @@
+[% INCLUDE 'admin/header.html' title=loc('Configuration') -%]
+
+[% BLOCK subsection %]
+<tr><td colspan=3><strong>[% heading %]</strong></td></tr>
+[% END %]
+
+[% BLOCK just_value %]
+[% SET conf = c.config.$value IF NOT conf;
+ conf = conf.join(', ') IF conf.size %]
+<tr>
+ <td>[% value %]</td>
+ <td colspan=2>[% conf or conf_default %]</td>
+</tr>
+[% END %]
+
+[% BLOCK with_cobrand %]
+[% SET conf = c.config.$value IF NOT conf;
+ conf = conf.join(', ') IF conf.size;
+ cob = cob.join(', ') IF conf.size %]
+<tr>
+ <td>[% value %]</td>
+ <td>[% conf %]</td>
+ <td>[% cob IF cob != conf %]</td>
+</tr>
+[% END %]
+
+<p>A summary of this site's configuration,
+running version <strong>[% git_version || 'unknown' %]</strong>.
+</p>
+
+<table>
+<tr><th>Variable</th>
+ <th>general.yml value</th>
+ <th>Cobrand module override</th>
+</tr>
+
+[% INCLUDE subsection heading="URLs" %]
+[% INCLUDE with_cobrand value="BASE_URL" cob=c.cobrand.base_url %]
+[% INCLUDE with_cobrand value="ADMIN_BASE_URL" cob=c.cobrand.admin_base_url %]
+
+[% INCLUDE subsection heading="Display" %]
+[% allowed_conf = FOR k IN c.config.ALLOWED_COBRANDS %]
+ [% IF k.keys %][% k.items.join(':') %][% ELSE %][% k %][% END %]
+ [%- ',' IF NOT loop.last %]
+[% END %]
+[% INCLUDE just_value value="ALLOWED_COBRANDS" conf = allowed_conf %]
+<tr>
+<td>Web templates</td>
+<td colspan=2>[% c.cobrand.path_to_web_templates.join('<br>') %]</td>
+</tr>
+[% INCLUDE with_cobrand value="MAP_TYPE" cob=c.cobrand.map_type %]
+[% INCLUDE with_cobrand value="EXAMPLE_PLACES"
+ conf = decode(c.config.EXAMPLE_PLACES.join(', '))
+ cob = c.cobrand.example_places %]
+[% INCLUDE with_cobrand value="LANGUAGES"
+ cob = c.cobrand.languages %]
+<tr><td>Language override</td>
+ <td>-</td>
+ <td>
+ [% 'domain=' _ c.cobrand.language_domain IF c.cobrand.language_domain %]
+ [% 'language=' _ c.cobrand.language_override IF c.cobrand.language_override %]
+ </td>
+</tr>
+[% INCLUDE with_cobrand value="ALL_REPORTS_PER_PAGE" cob=c.cobrand.reports_per_page %]
+[% INCLUDE just_value value="RSS_LIMIT" %]
+[% INCLUDE just_value value="AREA_LINKS_FROM_PROBLEMS" %]
+
+[% INCLUDE subsection heading="Geocoder" %]
+[% INCLUDE just_value value="GEOCODER"
+ conf_default = '<em>(None; default Nominatim OSM)</em>'
+%]
+[% disconf = FOR k IN c.config.GEOCODING_DISAMBIGUATION %]
+ [% k.key %]=[% k.value %][% ',' IF NOT loop.last %]
+[% END %]
+[% discob = FOR k IN c.cobrand.disambiguate_location %]
+ [% k.key %]=[% k.value %][% ',' IF NOT loop.last %]
+[% END %]
+[% INCLUDE with_cobrand value="GEOCODING_DISAMBIGUATION"
+ conf = disconf
+ cob = discob %]
+
+[% INCLUDE subsection heading="MapIt" %]
+[% INCLUDE just_value value="MAPIT_URL" %]
+[% INCLUDE with_cobrand value="MAPIT_TYPES"
+ cob = c.cobrand.area_types %]
+[% INCLUDE just_value value="MAPIT_ID_WHITELIST" %]
+[% INCLUDE with_cobrand value="MAPIT_TYPES_CHILDREN"
+ cob = c.cobrand.area_types_children %]
+
+[% INCLUDE subsection heading="Database" %]
+[% INCLUDE just_value value="FMS_DB_HOST" %]
+[% INCLUDE just_value value="FMS_DB_PORT" %]
+[% INCLUDE just_value value="FMS_DB_NAME" %]
+[% INCLUDE just_value value="FMS_DB_USER" %]
+
+[% INCLUDE subsection heading="Email" %]
+[% INCLUDE just_value value="EMAIL_DOMAIN" %]
+[% INCLUDE with_cobrand value="CONTACT_NAME" cob=c.cobrand.contact_name %]
+[% INCLUDE with_cobrand value="CONTACT_EMAIL" cob=c.cobrand.contact_email %]
+[% INCLUDE just_value value="DO_NOT_REPLY_EMAIL" %]
+
+[% INCLUDE subsection heading="Development" %]
+[% INCLUDE just_value value="STAGING_SITE" %]
+[% INCLUDE just_value value="SEND_REPORTS_ON_STAGING" %]
+[% INCLUDE just_value value="UPLOAD_DIR" %]
+[% INCLUDE just_value value="GEO_CACHE" %]
+[% INCLUDE just_value value="TESTING_COUNCILS" %]
+[% INCLUDE just_value value="SMTP_SMARTHOST" %]
+[% INCLUDE just_value value="TIME_ZONE" %]
+[% INCLUDE just_value value="GAZE_URL" %]
+
+</table>
+
+<h2>Cobrand module</h2>
+
+Other things can be changed on a cobrand basis by using functions in an
+(optional) Cobrand .pm module, as explained in the
+<a href="http://code.fixmystreet.com/customising/" class="admin-offsite-link">customising section of our
+documentation</a>. If you wish to add new functionality just for your cobrand
+that can't be done simply by changes to your cobrand's templates, you might
+need to add a new Cobrand function.
+
+<p>Examples of cobrand functions are below; this is not exhaustive.
+Many were added for one specific cobrand, so didn't need a general
+configuration option. Please feel free to discuss on <a
+href="http://code.fixmystreet.com/community/" class="admin-offsite-link">our mailing list</a> if you think
+something should be moved to the general.yml file, done differently,
+or have any questions.</p>
+
+<ul style="font-size: 80%">
+<li>allow_photo_upload: [% c.cobrand.allow_photo_upload %],
+ allow_photo_display: [% c.cobrand.allow_photo_display %]</li>
+<li>send_questionnaires: [% c.cobrand.send_questionnaires %],
+ ask_ever_reported: [% c.cobrand.ask_ever_reported %]</li>
+<li>default_map_zoom: [% c.cobrand.default_map_zoom or '-' %]</li>
+<li>default_show_name: [% c.cobrand.default_show_name %]</li>
+<li>users_can_hide: [% c.cobrand.users_can_hide %]</li>
+<li>report_sent_confirmation_email: [% c.cobrand.report_sent_confirmation_email %]</li>
+<li>never_confirm_reports: [% c.cobrand.never_confirm_reports %],
+ allow_anonymous_reports: [% c.cobrand.allow_anonymous_reports %],
+ show_unconfirmed_reports: [% c.cobrand.show_unconfirmed_reports %]</li>
+<li>email_indent: [% c.cobrand.email_indent %]</li>
+</ul>
+
+[% INCLUDE 'admin/footer.html' %]
+
diff --git a/templates/web/default/admin/edit-league.html b/templates/web/default/admin/edit-league.html
index 6bf71537e..4f31eeb2e 100644
--- a/templates/web/default/admin/edit-league.html
+++ b/templates/web/default/admin/edit-league.html
@@ -1,3 +1,10 @@
+<div class="admin-hint">
+ <p>
+ [% loc(
+ "The diligency prize league table shows editors' activity (who's been editing the most records)."
+ ) %]
+ </p>
+</div>
<h2>[% loc('Diligency prize league table') %]</h2>
[% IF edit_activity.count %]
<ul>
diff --git a/templates/web/default/admin/flagged.html b/templates/web/default/admin/flagged.html
index fc8b1fae1..518d1b14e 100644
--- a/templates/web/default/admin/flagged.html
+++ b/templates/web/default/admin/flagged.html
@@ -1,6 +1,11 @@
-[% INCLUDE 'admin/header.html' title=loc('Search Reports') %]
+[% INCLUDE 'admin/header.html' title=loc('Flagged reports and users') %]
[% PROCESS 'admin/report_blocks.html' %]
+<p class="fms-admin-info">
+ [% loc("You can flag any report or user by editing them, and they will be listed on this page.
+ For example, this can useful if you want to keep an eye on a user who has posted inappropriate
+ reports in the past.") %]
+</p>
<h2>[% loc( 'Problems' ) %]</h2>
[% IF problems.size > 0 %]
@@ -16,29 +21,41 @@
[% INCLUDE 'admin/problem_row.html' %]
</table>
[% ELSE %]
-<p>
-[% loc('No flagged problems found') %]
-</p>
+ <p class="fms-admin-warning">
+ [% loc('No flagged problems found.') %]
+ </p>
[% END %]
<h2>[% loc( 'Users' ) %]</h2>
-[% IF users%]
+<p class="fms-admin-info">
+ [% loc("Flagged users are not restricted in any way. This is just a list of users that have been marked for attention.") %]
+</p>
+
+[% IF users.size %]
<table cellspacing="0" cellpadding="2" border="1">
<tr>
<th>[% loc('Name') %]</th>
<th>[% loc('Email') %]</th>
+ <th>[% loc('In abuse table?') %]</th>
+ <th>&nbsp;</th>
</tr>
-[% WHILE ( user = users.next ) -%]
- <tr>
+ [%- FOREACH user IN users %]
+ <tr [% IF user.flagged == 2 %]class="is-deleted"[% END %]>
<td>[% user.name | html %]</td>
<td>[% user.email | html %]</td>
- <td><a href="[% c.uri_for( 'reports', search => user.email ) %]">list content</a></td>
+ <td>
+ [% IF user.flagged == 2 %] <strong>[% loc('Yes') %]</strong> [% ELSE %] &nbsp; [% END %]
+ </td>
+ <td>
+ <a href="[% c.uri_for( 'reports', search => user.email ) %]">list content</a>
+ [% IF user.id %] | <a href="[% c.uri_for( 'user_edit', user.id ) %]">[% loc('edit user') %]</a>[% END %]
+ </td>
</tr>
-[%- END %]
+ [%- END %]
</table>
[%- ELSE %]
-<p>
-[% loc('No flagged users found') %]
+<p class="fms-admin-warning">
+ [% loc('No flagged users found.') %]
</p>
[%- END %]
diff --git a/templates/web/default/admin/header.html b/templates/web/default/admin/header.html
index 6282bf383..9f3503e20 100644
--- a/templates/web/default/admin/header.html
+++ b/templates/web/default/admin/header.html
@@ -1,4 +1,4 @@
-[% INCLUDE 'header.html' admin = 1, bodyclass = 'fullwidthpage admin' %]
+[% INCLUDE 'header.html' admin = 1, bodyclass = 'fullwidthpage admin show-admin-notes' %]
<style type="text/css">
dt { clear: left; float: left; font-weight: bold; }
dd { margin-left: 8em; }
diff --git a/templates/web/default/admin/index.html b/templates/web/default/admin/index.html
index 2c5ee55db..ad5932d97 100644
--- a/templates/web/default/admin/index.html
+++ b/templates/web/default/admin/index.html
@@ -1,5 +1,13 @@
[% INCLUDE 'admin/header.html' title=loc('Summary') -%]
+[% IF total_bodies == 0 %]
+ <p class="fms-admin-info">
+ [% loc('Currently no bodies have been created.') %]
+ <br>
+ [% tprintf( loc('You need to <a href="%s">add some bodies</a> (such as councils or departments) before any reports can be sent.'), c.uri_for('bodies')) %]
+ </p>
+[% END %]
+
[%- BLOCK states -%]
<h2>[% title %]</h2>
@@ -21,7 +29,7 @@
[% IF c.cobrand.admin_show_creation_graph -%]
<p>
- <a href="[% c.config.BASE_URL %]/fms-live-creation.png">[% loc('Graph of problem creation by status over time') %]</a>
+ <a href="[% c.config.BASE_URL %]/fms-live-creation.png" class="admin-offsite-link">[% loc('Graph of problem creation by status over time') %]</a>
</p>
[% END -%]
diff --git a/templates/web/default/admin/list_updates.html b/templates/web/default/admin/list_updates.html
index dbf679702..02845b0ee 100644
--- a/templates/web/default/admin/list_updates.html
+++ b/templates/web/default/admin/list_updates.html
@@ -4,14 +4,11 @@
<table cellspacing="0" cellpadding="2" border="1">
<tr>
<th>[% loc('ID') %]</th>
- <th>[% loc('State') %]</th>
<th>[% loc('Name') %]</th>
- <th>[% loc('Email') %]</th>
- <th>[% loc('Created') %]</th>
- <th>[% loc('Anonymous') %]</th>
<th>[% loc('Owner') %]</th>
<th>[% loc('Council') %]</th>
<th>[% loc('Cobrand') %]</th>
+ <th>[% loc('State') %]</th>
<th>[% loc('Text') %]</th>
<th>*</th>
</tr>
@@ -26,18 +23,21 @@
uri = c.uri_for_email( '/report', update.problem.id );
END;
%]
- <a href="[% uri %]#update_[% update.id %]">[% update.id %]</a>
+ <a href="[% uri %]#update_[% update.id %]" class="admin-offsite-link">[% update.id %]</a>
[%- ELSE %]
[%- update.id %]
[%- END -%]</td>
- <td>[% update.state %]</td>
- <td>[% update.name | html %]</td>
- <td>[% update.user.email | html %]</td>
- <td>[% PROCESS format_time time=update.created %]</td>
- <td>[% IF update.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
+ <td>[% PROCESS value_or_nbsp value=update.name %]
+ <br>[% PROCESS value_or_nbsp value=update.user.email %]
+ <br>[% loc('Anonymous') %]: [% IF update.anonymous %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]
+ </td>
<td>[% IF update.user.id == update.problem.user_id %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
<td>[% IF update.user.belongs_to_body( update.problem.bodies_str ) %][% loc('Yes') %][% ELSE %][% loc('No') %][% END %]</td>
<td>[% update.cobrand %]<br>[% update.cobrand_data | html %]</td>
+ <td>[% update.state %]<br><small>
+ [% loc('Created:') %] [% PROCESS format_time time=update.created %]
+ <br>[% loc('Confirmed:') %] [% PROCESS format_time time=update.confirmed %]
+ </small></td>
<td>[% update.text | html %]</td>
<td><a href="[% c.uri_for( 'update_edit', update.id ) %]">[% loc('Edit') %]</a></td>
</tr>
diff --git a/templates/web/default/admin/problem_row.html b/templates/web/default/admin/problem_row.html
index 6dc4de188..2413a6062 100644
--- a/templates/web/default/admin/problem_row.html
+++ b/templates/web/default/admin/problem_row.html
@@ -9,7 +9,7 @@
uri = c.uri_for_email( '/report', problem.id );
END;
%]
- <a href="[% uri %]">[% problem.id %]</a>
+ <a href="[% uri %]" class="admin-offsite-link">[% problem.id %]</a>
[%- ELSE %]
[%- problem.id %]
[%- END -%]</td>
diff --git a/templates/web/default/admin/report_edit.html b/templates/web/default/admin/report_edit.html
index f3307658d..12560fdf3 100644
--- a/templates/web/default/admin/report_edit.html
+++ b/templates/web/default/admin/report_edit.html
@@ -15,7 +15,7 @@
uri = c.uri_for_email( '/report', problem.id );
END;
%]
-<li><a href="[% uri %]">[% loc('View report on site' )%]</a></li>
+<li><a href="[% uri %]" class="admin-offsite-link">[% loc('View report on site' )%]</a></li>
<li><label for='title'>[% loc('Subject:') %]</label> <input size=60 type='text' id='title' name='title' value='[% problem.title | html %]'></li>
<li><label for='detail'>[% loc('Details:') %]</label>
<textarea name='detail' id='detail' cols=60 rows=10>[% problem.detail | html %]</textarea></li>
@@ -80,7 +80,12 @@
[% IF problem.photo %]
[% photo = problem.get_photo_params %]
-<li><img alt="" height="[% photo.height %]" width="[% photo.width %]" src="[% c.cobrand.base_url %][% photo.url %]">
+<li><img alt="Photo of this report" height="[% photo.height %]" width="[% photo.width %]" src="[% c.cobrand.base_url %]
+ [%~ IF problem.photo.length == 40 ~%]
+ /photo/[% problem.photo %].temp.jpeg
+ [%~ ELSE ~%]
+ [% photo.url %]
+ [%~ END %]">
<br>
<input type="submit" name="rotate_photo" value="[% loc('Rotate Left') %]">
<input type="submit" name="rotate_photo" value="[% loc('Rotate Right') %]">
diff --git a/templates/web/default/admin/reports.html b/templates/web/default/admin/reports.html
index d57b2f53e..7267dd11d 100644
--- a/templates/web/default/admin/reports.html
+++ b/templates/web/default/admin/reports.html
@@ -20,6 +20,12 @@
[% INCLUDE 'pagination.html', admin = 1, param = 'p' IF pager %]
+[% ELSIF searched %]
+
+<div class="fms-admin-warning">
+ [% loc("Searching found no reports.") %]
+</div>
+
[% END %]
[% INCLUDE 'admin/list_updates.html' %]
diff --git a/templates/web/default/admin/stats.html b/templates/web/default/admin/stats.html
index bb42d5b7d..d143d9f28 100644
--- a/templates/web/default/admin/stats.html
+++ b/templates/web/default/admin/stats.html
@@ -61,15 +61,15 @@
<form method="post" action="[% c.uri_for('stats') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<p>
- <label for="start_date_year">[% loc('Start Year:') %]</label><input type="text" name="start_date_year" id="start_date_year" size="5" value="[% start_date ? start_date.year : '' | html %]" />
- <label for="start_date_month">[% loc('Start month:') %]</label><input type="text" name="start_date_month" id="start_date_month" size="3" value="[% start_date ? start_date.month : '' | html %]" />
- <label for="start_date_day">[% loc('Start day:') %]</label><input type="text" name="start_date_day" id="start_date_day" size="3" value="[% start_date ? start_date.day : '' | html %]" />
+ <label for="start_date">[% loc('Start Date:') %]</label><input type="text"
+ placeholder="[% loc('Click here or enter as dd/mm/yyyy') %]" name="start_date" id="start_date"
+ value="[% start_date ? start_date.strftime( '%d/%m/%Y') : '' | html %]" />
</p>
<p>
- <label for="end_date_year">[% loc('End Year:') %]</label><input type="text" name="end_date_year" id="end_date_year" size="5" value="[% end_date ? end_date.year : '' | html %]" />
- <label for="end_date_month">[% loc('End month:') %]</label><input type="text" name="end_date_month" id="end_date_month" size="3" value="[% end_date ? end_date.month : '' | html %]" />
- <label for="end_date_day">[% loc('End day:') %]</label><input type="text" name="end_date_day" id="end_date_day" size="3" value="[% end_date ? end_date.day : '' | html %]" />
+ <label for="end_date">[% loc('End Date:') %]</label><input type="text"
+ placeholder="[% loc('Click here or enter as dd/mm/yyyy') %]" name="end_date" id="end_date" size="5"
+ value="[% end_date ? end_date.strftime( '%d/%m/%Y') : '' | html %]" />
</p>
<p>
diff --git a/templates/web/default/admin/timeline.html b/templates/web/default/admin/timeline.html
index 2e4c3b771..6bf350a58 100644
--- a/templates/web/default/admin/timeline.html
+++ b/templates/web/default/admin/timeline.html
@@ -21,16 +21,16 @@
[% CASE 'problemCreated' %]
[%- tprintf(loc('Problem %d created'), item.obj.id) %]; [% PROCESS problem_name problem=item.obj -%]
[% CASE 'problemConfirmed' %]
- [%- tprintf( loc('Problem %s confirmed'), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '">' _ item.obj.id _ '</a>') %]; [% PROCESS problem_name problem=item.obj -%]
+ [%- tprintf( loc('Problem %s confirmed'), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '" class="admin-offsite-link">' _ item.obj.id _ '</a>') %]; [% PROCESS problem_name problem=item.obj -%]
[% CASE 'problemSent' %]
- [% tprintf(loc("Problem %s sent to council %s"), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '">' _ item.obj.id _ '</a>', item.obj.bodies_str ) %]
+ [% tprintf(loc("Problem %s sent to council %s"), '<a href="' _ c.uri_for_email( '/report', item.obj.id ) _ '" class="admin-offsite-link">' _ item.obj.id _ '</a>', item.obj.bodies_str ) %]
[% CASE 'quesSent' %]
[% tprintf(loc("Questionnaire %d sent for problem %d"), item.obj.id, item.obj.problem_id ) %]
[% CASE 'quesAnswered' %]
[% tprintf(loc("Questionnaire %d answered for problem %d, %s to %s"), item.obj.id, item.obj.problem_id, item.obj.old_state, item.obj.new_state ) %]
[% CASE 'update' %]
[% name = ( item.obj.name || 'anonymous' ) | html %]
- [% tprintf(loc("Update %s created for problem %d; by %s"), "<a href='" _ c.uri_for_email( '/report', item.obj.problem_id ) _ "#update_" _ item.obj.id _ "'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] &lt;[% item.obj.user.email | html %]&gt;
+ [% tprintf(loc("Update %s created for problem %d; by %s"), "<a href='" _ c.uri_for_email( '/report', item.obj.problem_id ) _ "#update_" _ item.obj.id _ "' class='admin-offsite-link'>" _ item.obj.id _ "</a>", item.obj.problem_id, name) %] &lt;[% item.obj.user.email | html %]&gt;
[% CASE 'alertSub' %]
[% tprintf(loc("Alert %d created for %s, type %s, parameters %s / %s"), item.obj.id, item.obj.user.email, item.obj.alert_type.ref, item.obj.parameter, item.obj.parameter2) | html %]
[% CASE 'alertDel' %]
diff --git a/templates/web/default/admin/update_edit.html b/templates/web/default/admin/update_edit.html
index f2029c63f..5ffce8bc4 100644
--- a/templates/web/default/admin/update_edit.html
+++ b/templates/web/default/admin/update_edit.html
@@ -15,7 +15,7 @@
uri = c.uri_for_email( '/report', update.problem_id );
END;
%]
-<li><a href="[% uri %]#update_[% update.id %]">[% loc('View report on site' )%]</a></li>
+<li><a href="[% uri %]#update_[% update.id %]" class="admin-offsite-link">[% loc('View report on site' )%]</a></li>
<li><label for='detail'>[% loc('Text:') %]</label>
<textarea name='text' id='text' cols=60 rows=10>[% update.text | html %]</textarea></li>
@@ -52,7 +52,12 @@
[% IF update.photo %]
[% photo = update.get_photo_params %]
-<li><img alt="" height="[% photo.height %]" width="[% photo.width %]" src="[% photo.url %]">
+<li><img alt="Photo of this update" height="[% photo.height %]" width="[% photo.width %]" src="[% c.cobrand.base_url %]
+ [%~ IF update.photo.length == 40 ~%]
+ /photo/[% update.photo %].temp.jpeg
+ [%~ ELSE ~%]
+ [% photo.url %]
+ [%~ END ~%]">
<input type="checkbox" id="remove_photo" name="remove_photo" value="1">
<label for="remove_photo" class="inline">[% loc("Remove photo (can't be undone!)") %]</label></li>
[% END %]
diff --git a/templates/web/default/admin/user-form.html b/templates/web/default/admin/user-form.html
index 9c60ec940..4a57b05a0 100644
--- a/templates/web/default/admin/user-form.html
+++ b/templates/web/default/admin/user-form.html
@@ -1,17 +1,55 @@
<form method="post" action="[% c.uri_for( 'user_edit', user.id ) %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<input type="hidden" name="token" value="[% token %]" >
<input type="hidden" name="submit" value="1" >
+
+ [% IF c.cobrand.moniker == 'zurich' AND field_errors.email %]
+ <p class='error'>[% field_errors.email %]</p>
+ [% END %]
<ul class="no-bullets">
- <li>[% loc('Name:') %] <input type='text' name='name' id='name' value='[% user.name | html %]'></li>
+ <li>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "The user's <strong>name</strong> is displayed publicly on reports that have not been marked <em>anonymous</em>.
+ Names are not necessarily unique.")
+ %]
+ </p>
+ </div>
+ [% loc('Name:') %] <input type='text' name='name' id='name' value='[% user.name | html %]'>
+ </li>
<li>[% loc('Email:') %] <input type='text' id='email' name='email' value='[% user.email | html %]'></li>
- <li>[% loc('Body:') %] <select id='body' name='body'>
+ <li>
+ <div class="admin-hint">
+ <p>
+ [% loc(
+ "Normal (public) users should not be associated with any <strong>body</strong>.<br>
+ Authorised staff users can be associated with the body they represent.<br>
+ Depending on the implementation, staff users may have access to the dashboard (summary of
+ activity across their body), the ability to hide reports or set special report statuses.")
+ %]
+ </p>
+ </div>
+ [% loc('Body:') %] <select id='body' name='body'>
<option value=''>[% loc('No body') %]</option>
[% FOR body IN bodies %]
<option value="[% body.id %]"[% ' selected' IF body.id == user.from_body.id %]>[% body.name %]</option>
[% END %]
+ </li>
</select>
[% IF c.cobrand.moniker != 'zurich' %]
- <li>[% loc('Flagged:') %] <input type="checkbox" id="flagged" name="flagged"[% user.flagged ? ' checked' : '' %]></li>
+ <li>
+ <div class="admin-hint">
+ <p>
+ [% loc("Mark users whose behaviour you want to keep a check on as <strong>flagged</strong>.") %]
+ <br>
+ [% tprintf(loc("Flagged users are listed on the <a href='%s'>flagged</a> page."), c.uri_for( 'flagged' )) %]
+ <br>
+ [% loc("You can add an abusive user's email to the abuse list, which automatically hides (and never sends) reports they create.") %]
+ </p>
+ </div>
+
+ [% loc('Flagged:') %] <input type="checkbox" id="flagged" name="flagged"[% user.flagged ? ' checked' : '' %]>
+ </li>
[% END %]
</ul>
<input type="submit" name="Submit changes" value="[% loc('Submit changes') %]" >
diff --git a/templates/web/default/admin/users.html b/templates/web/default/admin/users.html
index 70833ff85..db97c7d59 100644
--- a/templates/web/default/admin/users.html
+++ b/templates/web/default/admin/users.html
@@ -1,6 +1,9 @@
[% INCLUDE 'admin/header.html' title=loc('Search Users') %]
[% PROCESS 'admin/report_blocks.html' %]
+<div class="fms-admin-info">
+ [% loc("User search finds matches in users' names and email addresses.") %]
+</div>
<form method="get" action="[% c.uri_for('users') %]" enctype="application/x-www-form-urlencoded" accept-charset="utf-8">
<p><label for="search">[% loc('Search:') %]</label> <input type="text" name="search" size="30" id="search" value="[% searched | html %]">
</form>
@@ -30,12 +33,17 @@
[%- END -%]
</table>
+[% ELSIF searched %]
+
+<div class="fms-admin-warning">
+ [% loc("Searching found no users.") %]
+</div>
+
[% END %]
[% IF NOT searched %]
<h2>[% loc('Add user') %]</h2>
[% INCLUDE 'admin/user-form.html', user = '' %]
-
[% END %]
[% INCLUDE 'admin/footer.html' %]
diff --git a/templates/web/default/common_header_tags.html b/templates/web/default/common_header_tags.html
index 346d53693..1080e8a88 100644
--- a/templates/web/default/common_header_tags.html
+++ b/templates/web/default/common_header_tags.html
@@ -1,15 +1,23 @@
[% USE date %][% USE Math %]
<meta http-equiv="content-type" content="text/html; charset=utf-8">
-<script type="text/javascript" src="/js/validation_rules.js?[% Math.int( date.now / 3600 ) %]"></script>
-<script type="text/javascript" src="/js/translation_strings.[% lang_code %].js?[% Math.int( date.now / 3600 ) %]"></script>
+<meta name="cobrand" content="[% c.cobrand.moniker %]">
-<script type="text/javascript" src="/jslib/jquery-1.7.2.min.js"></script>
-<script src="[% version('/js/jquery.validate.min.js') %]" type="text/javascript" charset="utf-8"></script>
+<script type="text/javascript" src="[% start %]/js/validation_rules.js?[% Math.int( date.now / 3600 ) %]"></script>
+<script type="text/javascript" src="[% start %]/js/translation_strings.[% lang_code %].js?[% Math.int( date.now / 3600 ) %]"></script>
-<script type="text/javascript" src="[% version('/js/geo.min.js') %]"></script>
-<script type="text/javascript" src="[% version('/js/fixmystreet.js') %]"></script>
-<script type="text/javascript" src="[% version(js_override || '/js/fixmystreet-old-box.js') %]"></script>
+<script type="text/javascript" src="[% start %]/jslib/jquery-1.7.2.min.js"></script>
+<script src="[% start %][% version('/js/jquery.validate.min.js') %]" type="text/javascript" charset="utf-8"></script>
+
+<script type="text/javascript" src="[% start %][% version('/js/geo.min.js') %]"></script>
+<script type="text/javascript" src="[% start %][% version('/js/fixmystreet.js') %]"></script>
+<script type="text/javascript" src="[% start %][% version(js_override || '/js/fixmystreet-old-box.js') %]"></script>
+
+[% IF admin %]
+ <script src="[% start %]/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js"></script>
+ <link rel="stylesheet" href="[% start %]/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css" />
+ <script type="text/javascript" src="[% start %][% version('/js/fixmystreet-admin.js') %]"></script>
+[% END %]
[% map_js %]
diff --git a/templates/web/default/dashboard/index.html b/templates/web/default/dashboard/index.html
index f5a3cfba3..b3e1e8426 100644
--- a/templates/web/default/dashboard/index.html
+++ b/templates/web/default/dashboard/index.html
@@ -146,6 +146,7 @@
[% END %]
</select>
<input type="submit" value="Look up">
+<a class="export_as_csv" href="[% c.req.uri_with({ export => 1 }) %]">Export as CSV</a>
<table width="100%" id="reports">
<tr>
diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html
index bf47a1420..3bfbfb467 100755
--- a/templates/web/default/faq/faq-en-gb.html
+++ b/templates/web/default/faq/faq-en-gb.html
@@ -62,19 +62,18 @@ href="https://secure.mysociety.org/donate/">please do</a>.</dd>
<dt>Can I use FixMyStreet on my mobile?</dt>
<dd>
- <p>The FixMyStreet website should work on your mobile phone, adapting to
- the size of your screen automatically. We plan to release updated native
- apps in the near future.
- <ul>
- <li><em>iPhone:</em> Our basic app from 2008 is available for download
- on the App Store:
- <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>,
- <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app
- available from the
- <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>.
- <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
- <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
- </ul>
+ <p>The FixMyStreet website will already work on your mobile phone, adapting to
+ the size of your screen automatically. Using an app has some advantages, though
+ &mdash; for example, you can create a report even when you have no network
+ connection.
+ <ul>
+ <li>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet app for iPhone</a>
+ <li>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">FixMyStreet app for Android</a>
+ <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
+ <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
+ </ul>
</dd>
</dl>
diff --git a/templates/web/default/js/translation_strings.html b/templates/web/default/js/translation_strings.html
index f6c4f7d41..a14443b71 100644
--- a/templates/web/default/js/translation_strings.html
+++ b/templates/web/default/js/translation_strings.html
@@ -15,6 +15,12 @@
required: '[% loc('Please enter your email') | replace("'", "\\'") %]',
email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
},
+ password_sign_in: {
+ required: '[% loc('Please enter a password') | replace("'", "\\'") %]'
+ },
+ phone: {
+ required: '[% loc('Please enter your phone number') | replace("'", "\\'") %]'
+ },
fms_extra_title: '[% loc('Please enter your title') | replace("'", "\\'") %]',
first_name: '[% loc('Please enter your first name') | replace("'", "\\'") %]',
last_name: '[% loc('Please enter your second name') | replace("'", "\\'") %]',
diff --git a/templates/web/default/maps/bing.html b/templates/web/default/maps/bing.html
deleted file mode 100644
index 277886cdb..000000000
--- a/templates/web/default/maps/bing.html
+++ /dev/null
@@ -1,18 +0,0 @@
-[% map_js = BLOCK %]
-<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&mkt=en-GB"></script>
-<script type="text/javascript" src="[% version('/js/map-bing.js') %]"></script>
-[% END %]
-
-[% map_html = BLOCK %]
-<script type="text/javascript">
-var fixmystreet = {
- 'key': '[% map.key %]',
- 'latitude': [% map.latitude %],
- 'longitude': [% map.longitude %],
- 'pins': [% INCLUDE maps/pins_js.html %]
-}
-</script>
-<div id="map_box">
- [% pre_map %]
- <div id="map"></div>
-[% END %]
diff --git a/templates/web/default/maps/fms.html b/templates/web/default/maps/fms.html
index 956a22e69..1cdfc0b35 100644
--- a/templates/web/default/maps/fms.html
+++ b/templates/web/default/maps/fms.html
@@ -5,7 +5,7 @@
<script type="text/javascript" src="[% version('/js/map-bing-ol.js') %]"></script>
<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
<!--[if lte IE 6]>
- <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+ <link rel="stylesheet" href="/js/OpenLayers-2.13.1/theme/default/ie6-style.css" type="text/css">
<![endif]-->
[% END %]
diff --git a/templates/web/default/maps/google-ol.html b/templates/web/default/maps/google-ol.html
new file mode 100644
index 000000000..35c046b55
--- /dev/null
+++ b/templates/web/default/maps/google-ol.html
@@ -0,0 +1,15 @@
+[% map_js = BLOCK %]
+<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
+<script type="text/javascript" src="[% version('/js/OpenLayers.fixmystreet.google.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-OpenLayers.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/map-google-ol.js') %]"></script>
+<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+<![endif]-->
+[% END %]
+
+[% map_html = BLOCK %]
+[% INCLUDE maps/openlayers.html %]
+[% END %]
+
diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html
index b75e2bbd8..1ac32a717 100644
--- a/templates/web/default/maps/openlayers.html
+++ b/templates/web/default/maps/openlayers.html
@@ -65,13 +65,13 @@ var fixmystreet = {
SET zoom_out = '#' IF map.zoom <= 0;
%]
<div style="position: absolute; left: 4px; top: 4px; z-index: 1007;" class="olControlPanZoom olControlNoSelect" unselectable="on">
- <div style="position: absolute; left: 13px; top: 4px; width: 18px; height: 18px;"><a rel="nofollow" href="[% north %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/north-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 4px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% west %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/west-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 22px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% east %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/east-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 40px; width: 18px; height: 18px;"><a rel="nofollow" href="[% south %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/south-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 63px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_in %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/zoom-plus-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 81px; width: 18px; height: 18px;"><a rel="nofollow" href="[% world %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/zoom-world-mini.png" border="0"></a></div>
- <div style="position: absolute; left: 13px; top: 99px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_out %]"><img style="position: relative; width: 18px; height: 18px;" src="/jslib/OpenLayers-2.10/img/zoom-minus-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 4px; width: 18px; height: 18px;"><a rel="nofollow" href="[% north %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/north-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 4px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% west %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/west-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 22px; top: 22px; width: 18px; height: 18px;"><a rel="nofollow" href="[% east %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/east-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 40px; width: 18px; height: 18px;"><a rel="nofollow" href="[% south %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/south-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 63px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_in %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/zoom-plus-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 81px; width: 18px; height: 18px;"><a rel="nofollow" href="[% world %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/zoom-world-mini.png" border="0"></a></div>
+ <div style="position: absolute; left: 13px; top: 99px; width: 18px; height: 18px;"><a rel="nofollow" href="[% zoom_out %]"><img style="position: relative; width: 18px; height: 18px;" src="/js/OpenLayers-2.13.1/img/zoom-minus-mini.png" border="0"></a></div>
</div>
[% END %]
diff --git a/templates/web/default/maps/osm-streetview.html b/templates/web/default/maps/osm-streetview.html
index 3bc4614c6..dff6a0c0f 100644
--- a/templates/web/default/maps/osm-streetview.html
+++ b/templates/web/default/maps/osm-streetview.html
@@ -4,7 +4,7 @@
<script type="text/javascript" src="[% version('/js/map-streetview.js') %]"></script>
<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
<!--[if lte IE 6]>
- <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+ <link rel="stylesheet" href="/js/OpenLayers-2.13.1/theme/default/ie6-style.css" type="text/css">
<![endif]-->
[% END %]
diff --git a/templates/web/default/maps/osm.html b/templates/web/default/maps/osm.html
index 804710ad1..0b2db1a53 100644
--- a/templates/web/default/maps/osm.html
+++ b/templates/web/default/maps/osm.html
@@ -4,7 +4,7 @@
<script type="text/javascript" src="[% version('/js/map-OpenStreetMap.js') %]"></script>
<script type="text/javascript" src="[% version('/js/jquery.ba-hashchange.min.js') %]"></script>
<!--[if lte IE 6]>
- <link rel="stylesheet" href="/jslib/OpenLayers-2.10/theme/default/ie6-style.css" type="text/css" />
+ <link rel="stylesheet" href="/js/OpenLayers-2.13.1/theme/default/ie6-style.css" type="text/css">
<![endif]-->
[% END %]
diff --git a/templates/web/default/my/my.html b/templates/web/default/my/my.html
index a6e4000df..48a33a1d2 100644
--- a/templates/web/default/my/my.html
+++ b/templates/web/default/my/my.html
@@ -13,6 +13,11 @@
<h1>[% loc('Your Reports') %]</h1>
+[% IF ! has_content %]
+[% tprintf( loc('You haven&rsquo;t created any reports yet. <a href="%s">Report a problem now.</a>'),
+ c.uri_for('/') ) %]
+[% END %]
+
[% INCLUDE 'pagination.html',
pager = problems_pager,
param = 'p'
diff --git a/templates/web/default/report/_council_sent_info.html b/templates/web/default/report/_council_sent_info.html
new file mode 100644
index 000000000..958562dc2
--- /dev/null
+++ b/templates/web/default/report/_council_sent_info.html
@@ -0,0 +1,5 @@
+[% IF problem.whensent || problem.can_display_external_id %]
+ <small class="council_sent_info"><br>
+ [% problem.processed_summary_string(c) %]
+ </small>
+[% END %]
diff --git a/templates/web/default/report/_main.html b/templates/web/default/report/_main.html
index 789f8e43e..0124052c0 100644
--- a/templates/web/default/report/_main.html
+++ b/templates/web/default/report/_main.html
@@ -5,11 +5,7 @@
[% problem.meta_line(c) | html %]
[%- IF !problem.used_map AND c.cobrand.moniker != 'emptyhomes' %]; <strong>[% loc('there is no pin shown as the user did not use the map') %]</strong>[% END %]
[% IF problem.bodies_str %]
- [% IF problem.whensent || problem.can_display_external_id %]
- <small class="council_sent_info"><br>
- [% problem.processed_summary_string(c) %]
- </small>
- [% END %]
+ [% INCLUDE 'report/_council_sent_info.html' %]
[% ELSE %]
<br><small>[% loc('Not reported to council') %]</small>
[% END %]
diff --git a/templates/web/default/report/updates.html b/templates/web/default/report/updates.html
index 9134c34f8..b0a015f03 100644
--- a/templates/web/default/report/updates.html
+++ b/templates/web/default/report/updates.html
@@ -30,8 +30,8 @@
[%- IF !update_state && update.problem_state %]
[%- state = update.meta_problem_state %]
[%- IF c.cobrand.moniker == 'bromley' OR problem.bodies_str == '2482' %]
- [%- update_state = 'marked as no further action' IF state == 'unable to fix' %]
- [%- update_state = 'marked as third party responsibility' IF state == 'not responsible' %]
+ [%- SET update_state = 'marked as no further action' IF state == 'unable to fix' %]
+ [%- SET update_state = 'marked as third party responsibility' IF state == 'not responsible' %]
[%- END %]
[%- END %]
[%- IF !update_state && update.problem_state %]
diff --git a/templates/web/default/reports/body.html b/templates/web/default/reports/body.html
index 8a443a5fe..2b19e5735 100755
--- a/templates/web/default/reports/body.html
+++ b/templates/web/default/reports/body.html
@@ -39,6 +39,10 @@
[% END %]
</h1>
+[% IF c.cobrand.moniker == 'hart' %]
+ [% INCLUDE '_hart_hants_note.html' %]
+[% END %]
+
[% IF NOT body.areas.size AND c.cobrand.country == 'GB' %]
<p id="unknown" class="alert">This council no longer exists.
[% IF council.name.match('Penwith|Kerrier|Carrick|Restormel|Caradon|North Cornwall') %]
diff --git a/templates/web/fixmindelo/footer.html b/templates/web/fixmindelo/footer.html
new file mode 100644
index 000000000..0af813439
--- /dev/null
+++ b/templates/web/fixmindelo/footer.html
@@ -0,0 +1,54 @@
+ [% IF pagefooter %]
+ <footer role="content-info">
+ <div id="footer-help">
+ <ul>
+ <li>
+ <h4>
+ <a class="link-fb" href="https://www.facebook.com/fixmindelo">Facebook</a>
+ </h4>
+ </li>
+ <li>
+ <h4>
+ <a class="link-fabap" href="http://galeria.fabricadeaplicativos.com.br/fixmystreetmindelo">Fábrica de aplicativos</a>
+ </h4>
+ </li>
+ <li>
+ <h4>
+ <a href="/privacy">Privacy and cookies</a>
+ </h4>
+ <li>
+ </ul>
+ </div>
+ </footer>
+ [% END %]
+ </div><!-- .content role=main -->
+ </div><!-- .container -->
+ </div><!-- .table-cell -->
+
+ <div class="nav-wrapper">
+ <div class="nav-wrapper-2">
+ <div id="main-nav" role="navigation">
+ <ul id="mysoc-menu">
+ <li><a id="mysoc-logo" href="http://www.mysociety.org/">mySociety</a></li>
+ </ul>
+
+ <ul id="main-menu">
+ <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
+ >[% loc("Report a problem") %]</[% c.req.uri.path == '/' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/my' %]span[% ELSE %]a href="/my"[% END
+ %]>[% loc("Your reports") %]</[% c.req.uri.path == '/my' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/reports' %]span[% ELSE %]a href="/reports"[% END
+ %]>[% loc("All reports") %]</[% c.req.uri.path == '/reports' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/alert' %]span[% ELSE %]a href="/alert[% pc ? '/list?pc=' : '' %][% pc | uri %]"[% END
+ %]>[% loc("Local alerts") %]</[% c.req.uri.path == '/alert' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/faq' %]span[% ELSE %]a href="/faq"[% END
+ %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+<!-- [% INCLUDE 'debug_footer.html' %] -->
+ </div> <!-- .wrapper -->
+</body>
+</html>
diff --git a/templates/web/fixmindelo/static/privacy.html b/templates/web/fixmindelo/static/privacy.html
new file mode 100644
index 000000000..fd75f65e2
--- /dev/null
+++ b/templates/web/fixmindelo/static/privacy.html
@@ -0,0 +1,114 @@
+[% INCLUDE 'header.html', title = loc('Frequently Asked Questions'), bodyclass = 'twothirdswidthpage' %]
+
+<div class="sticky-sidebar">
+ <aside>
+ <ul class="plain-list">
+ <li><a href="/faq">Frequently Asked Questions</a></li>
+ <li><a href="/faq#practical">Practical Questions</a></li>
+ <li><a href="/faq#organisation">Organisation Questions</a></li>
+ <li><strong>Privacy and cookies</strong></li>
+ <li><a href="/contact">Contact FixMyStreet</a></li>
+ </ul>
+ </aside>
+</div>
+
+<h1>Privacidade, cookies e Serviços de Terceiros</h1>
+
+<p><strong>Nosso uso dos seus dados, cookies e serviços externos: o que você
+deve saber, e como optar por sair, se você desejar.</strong></p>
+
+<p>Sumário: Nós nos importamos muito com a privacidade de nossos usuários. Nós
+fornecemos detalhes abaixo, e tentamos o nosso melhor para cuidar dos dados
+privados que possuem. Como muitos outros sites, nós às vezes usamos cookies do
+Google Analytics e para nos ajudar a tornar nosso site melhor. Estas
+ferramentas são muito comuns e usadas por muitos outros sites, mas elas têm
+implicações de privacidade e, como uma instituição sem fins e preocupado com
+usos socialmente positivos da internet, nós achamos que é importante
+explicá-los na íntegra. Se você não quer compartilhar suas atividades de
+navegação em sites do FixMyStreetMindelo com outras empresas, você pode ajustar
+o seu uso ou instalar plugins do navegador opt-out.
+
+<h2>Privacidade</h2>
+
+ <dl>
+ <dt>Quem consegue ver o meu endereço de e-mail?</dt>
+ <dd>Se você enviar um problema, os seus detalhes, e os detalhes do
+problema, para o contato ou contatos conselho responsável pela área onde se
+localiza o problema, ou outro órgão competente do Conselho de Mindelo, podem
+publicar os detalhes públicos de seu relatório. Diferentemente do conselho,
+que, obviamente, obter o seu endereço de e-mail, apenas pessoas que autorizar
+para ver a interface de administração FixMyStreetMindelo será capaz de ver o
+seu endereço de e-mail e eles nunca vão usá-lo para outra coisa senão para
+ajudar a administrar FixMyStreetMindelo. O mesmo ocorre com os endereços de
+e-mail de atualizações. Nós nunca iremos dar ou vender o seu endereço de e-mail
+para qualquer outra pessoa, a menos que sejamos obrigados por lei. Seu nome,
+dados no campo de nome, não será publicado em qualquer lugar, a menos que você
+nos deixou (se você dá o seu nome em outro lugar, por exemplo, na seção de
+detalhes público, estará disponível ao público).</dd>
+ <dt>Você vai enviar spam para o meu endereço de e-mail ?</dt>
+ <dd>Nunca. Nós só enviaremos, se alguém deixar uma atualização sobre um
+problema que você relatou, ou reportou e lhe enviamos um e-mail questionário
+mais ou menos após quatro semanas depois de apresentar um problema, pedindo uma
+atualização de status do problema , e só vamos sempre enviar-lhe e-mails em
+relação ao seu problema, relatado e reportado.</dd>
+ </dl>
+
+<h2>Cookies</h2>
+
+<p>Para tornar o nosso serviço mais fácil ou mais útil, às vezes colocar
+pequenos arquivos de dados em seu computador ou telefone celular, conhecido
+como cookies, muitos sites fazem isso. Usamos essa informação para, por
+exemplo, lembrar que destes entrada no site FixMyStreetMindelo, assim você não
+precisa fazer isso em cada página, ou para medir como as pessoas usam o site
+para que possamos melhorá-lo e certificar-se de que ele funciona corretamente.
+
+
+<h3>Medir o uso do site (Google Analytics) </h3>
+
+<p>Usamos o Google Analytics para coletar informações sobre como as pessoas
+usam este site. Fazemos isso para ter certeza que atendemos às necessidades
+dos utilizadores e para entender como poderíamos fazê-lo melhor. Google
+Analytics armazena informações como as páginas que você visita, quanto tempo
+você está no site, como você chegou aqui, o que você clicar, e informações
+sobre o seu navegador. Os endereços IP são mascaradas (apenas uma parte é
+armazenada) e informações pessoais só são relatadas em conjunto. Nós não
+permitimos que o Google use ou compartilhar nossos dados de análise para
+qualquer finalidade, além de nos fornecer informações de análise, e
+recomendamos que qualquer usuário do Google Analytics faça o mesmo.
+
+<p>Se você não está satisfeito com dados sobre sua visita no site para ser
+usada desta forma, você pode instalar o <a
+href="http://tools.google.com/dlpage/gaoptout">plugin oficial do navegador para
+bloquear o Google Analytics.</a>.
+
+<p>Os cookies criados pelo Google Analytics são os seguintes
+
+<table cellpadding=5>
+<tr align="left"><th scope="col">Nome</th><th scope="col">conteúdo típico </th><th scope="col">Expira</th></tr>
+<tr><td>__utma</td><td>anônimo único ID</td><td>2&nbsp;anos</td></tr>
+<tr><td>__utmb</td><td>única sessão anônima ID </td><td>30&nbsp;minutos</td></tr>
+<tr><td>__utmz</td><td>IInformações sobre como o site foi alcançado (eg direta ou através de um link / search / propaganda)</td><td>6&nbsp;meses</td></tr>
+<tr><td>__utmx</td><td>Que variação de uma página que você está vendo se estamos testando versões diferentes para ver qual é o melhor </td><td>2&nbsp;anos</td></tr>
+</table>
+
+<h4>Declaração oficial sobre dados do Google Analytics</h4>
+
+<p>"Este site usa o Google Analytics, um serviço de analítico Web fornecido
+pelo Google, Inc. (" Google "). Google Analytics utiliza "cookies", que são
+arquivos de texto colocados no seu computador, para ajudar o site a analisar
+como os usuários usam o site. A informação gerada pelo cookie acerca da sua
+utilização do website (incluindo o seu endereço IP) será transmitida para e
+armazenada pelo Google nos servidores nos Estados Unidos. Google irá utilizar
+esta informação para efeitos de avaliar a sua utilização do website, compilando
+relatórios sobre a actividade no website para operadores e fornecendo outros
+serviços relativos a actividade do website e utilização da Internet. Google
+pode igualmente transferir esta informação para terceiros, quando obrigado a
+fazê-lo por lei, ou caso tais terceiros processem a informação em nome do
+Google. O Google não associará o seu endereço IP com quaisquer outros dados
+mantidos pelo Google. Você pode recusar o uso de cookies, selecionando as
+definições apropriadas no seu navegador, no entanto, por favor, note que se
+você fizer isso, você pode não ser capaz de usar todas as funcionalidades deste
+site. Ao utilizar este site, você concorda com o processamento de dados pelo
+Google na forma e para os fins acima referidos. "</p>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/fixmystreet/around/postcode_form.html b/templates/web/fixmystreet/around/postcode_form.html
index ed5d700f0..c060c1a00 100644
--- a/templates/web/fixmystreet/around/postcode_form.html
+++ b/templates/web/fixmystreet/around/postcode_form.html
@@ -28,4 +28,9 @@
</form>
[% END %]
</div>
+ [% IF c.cobrand.moniker == 'fixmystreet' %]
+ <div style="max-width: 30em; margin: 1em auto;">
+ We're running a survey to help us understand who uses our sites. If you have 10-15 minutes to spare then we'd be grateful if you could <a href="http://questions.mysociety.org/S/fms/w/" target="_blank">take part</a>.
+ </div>
+ [% END %]
</div>
diff --git a/templates/web/fixmystreet/faq/faq-en-gb.html b/templates/web/fixmystreet/faq/faq-en-gb.html
index 3fe8d5af9..b9d720dab 100755
--- a/templates/web/fixmystreet/faq/faq-en-gb.html
+++ b/templates/web/fixmystreet/faq/faq-en-gb.html
@@ -74,25 +74,21 @@ then together lobby the council to fix it, or fix it directly yourselves[% END %
by a registered charity, though, so if you want to make a contribution, <a
href="https://secure.mysociety.org/donate/">please do</a>.</dd>
- <dt>Can I use FixMyStreet on my mobile?</dt>
- <dd>
- <p>The FixMyStreet website should work on your mobile phone, adapting to
- the size of your screen automatically. We plan to release updated native
- apps in the near future.
- <ul>
-<!--
- <li><em>iPhone:</em> Our basic app from 2008 is available for download
- on the App Store:
- <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>,
- <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app
- available from the
- <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>.
--->
- <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
- <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
- </ul>
- </dd>
-
+ <dt>Can I use FixMyStreet on my mobile?</dt>
+ <dd>
+ <p>The FixMyStreet website will already work on your mobile phone, adapting to
+ the size of your screen automatically. Using an app has some advantages, though
+ &mdash; for example, you can create a report even when you have no network
+ connection.
+ <ul>
+ <li>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet app for iPhone</a>
+ <li>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">FixMyStreet app for Android</a>
+ <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
+ <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
+ </ul>
+ </dd>
</dl>
<h2><a name="practical"></a>Practical Questions</h2>
diff --git a/templates/web/fixmystreet/footer.html b/templates/web/fixmystreet/footer.html
index c1b04750a..dbf9235e0 100644
--- a/templates/web/fixmystreet/footer.html
+++ b/templates/web/fixmystreet/footer.html
@@ -3,11 +3,12 @@
<div class="tablewrapper bordered">
<div id="footer-mobileapps">
<h4>Mobile apps</h4>
-
- <ul>
- <li><a class="m-app-nokia" href="http://store.ovi.com/content/107557">Nokia</a></li>
- <li style="line-height:1"><small>New iPhone and Android<br>apps coming soon</small></li>
- </ul>
+ <p>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a>
+ and
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">Android</a>
+ apps now available.
+ </p>
</div>
<div id="footer-help">
diff --git a/templates/web/fixmystreet/header.html b/templates/web/fixmystreet/header.html
index 34c78d68b..e0d0e7af2 100644
--- a/templates/web/fixmystreet/header.html
+++ b/templates/web/fixmystreet/header.html
@@ -11,6 +11,16 @@
<meta name="HandHeldFriendly" content="true">
<meta name="mobileoptimized" content="0">
+ <meta property="og:url" content="[% c.cobrand.base_url %][% c.req.uri.path %]">
+ <meta property="og:title" content="[% title || 'FixMyStreet' %]">
+ <meta property="og:site_name" content="[% c.cobrand.site_title %]">
+ [% IF c.req.uri.path == '/' %]<meta property="og:description" content="Report, view, and discuss local street-related problems.">[% END %]
+ <meta property="og:type" content="website">
+ <meta property="og:image" content="[% c.cobrand.base_url %]/cobrands/fixmystreet/fms-og_image.png">
+ <meta property="og:image:type" content="image/png">
+ <meta property="og:image:width" content="500">
+ <meta property="og:image:height" content="500">
+
[% SET start = c.config.ADMIN_BASE_URL IF admin %]
<link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]">
diff --git a/templates/web/fixmystreet/index.html b/templates/web/fixmystreet/index.html
index f45509891..4d674a17e 100644
--- a/templates/web/fixmystreet/index.html
+++ b/templates/web/fixmystreet/index.html
@@ -42,7 +42,13 @@ kinds of problems like missed bins use our
[% IF recent_photos.size %]
<div id="front-recently">
- <h2>[% loc('Recently reported problems') %]</h2>
+ <h2>
+ [% IF c.cobrand.moniker == 'hart' %]
+ Recently reported
+ [% ELSE %]
+ [% loc('Recently reported problems') %]
+ [% END %]
+ </h2>
<section class="full-width">
<ul class="issue-list-a">
diff --git a/templates/web/fixmystreet/my/my.html b/templates/web/fixmystreet/my/my.html
index 12f68bd80..5c4ccf2af 100644
--- a/templates/web/fixmystreet/my/my.html
+++ b/templates/web/fixmystreet/my/my.html
@@ -13,8 +13,15 @@
<h1>[% loc('Your Reports') %]</h1>
+[% IF ! has_content %]
+[% tprintf( loc('You haven&rsquo;t created any reports yet. <a href="%s">Report a problem now.</a>'),
+ c.uri_for('/') ) %]
+[% END %]
+
[% IF c.cobrand.moniker == 'fixmybarangay' %]
[% INCLUDE '_barangay_buttons.html' %]
+[% ELSIF c.cobrand.moniker == 'hart' %]
+ [% INCLUDE '_hart_hants_note.html' %]
[% END %]
[% INCLUDE 'pagination.html',
diff --git a/templates/web/hart/_hart_hants_note.html b/templates/web/hart/_hart_hants_note.html
new file mode 100644
index 000000000..a091ad3fc
--- /dev/null
+++ b/templates/web/hart/_hart_hants_note.html
@@ -0,0 +1,5 @@
+<div id="hart_hants_note">
+ Note that reports managed by Hampshire County Council are not shown on
+ this map. View those reports on
+ <a href="http://www.fixmystreet.com/reports/Hampshire">FixMyStreet.com</a>
+</div>
diff --git a/templates/web/hart/around/intro.html b/templates/web/hart/around/intro.html
new file mode 100644
index 000000000..7cc971041
--- /dev/null
+++ b/templates/web/hart/around/intro.html
@@ -0,0 +1,4 @@
+ <div id="postcode-intro">
+ <h1> Report something in Hart that needs to be fixed </h1>
+ <h2> (like graffiti, fly tipping, broken paving slabs, or street lighting) </h2>
+ </div>
diff --git a/templates/web/hart/contact/submit.html b/templates/web/hart/contact/submit.html
new file mode 100644
index 000000000..781862866
--- /dev/null
+++ b/templates/web/hart/contact/submit.html
@@ -0,0 +1,19 @@
+[% INCLUDE 'header.html', title = loc('Contact Us') %]
+
+<h1>[% loc('Contact the team') %]</h1>
+
+[% IF success %]
+
+<p>Thank you for letting us know about this report. We will review, and if
+necessary, edit the report, or remove it from the site. You can contact us at
+<a href="mailto:[% contact_email %]">[% contact_email %]</a>.
+
+[% ELSE %]
+
+ <p>
+ [% tprintf( loc('Failed to send message. Please try again, or <a href="mailto:%s">email us</a>.'), contact_email ) %]
+ </p>
+
+[% END %]
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/hart/faq/faq-en-gb.html b/templates/web/hart/faq/faq-en-gb.html
new file mode 100755
index 000000000..0379b0745
--- /dev/null
+++ b/templates/web/hart/faq/faq-en-gb.html
@@ -0,0 +1,132 @@
+[% INCLUDE 'header.html', title = 'Help', bodyclass = 'fullwidthpage' %]
+
+<h1> Frequently Asked Questions </h1>
+
+<p>These pages are for reporting things which are broken, dirty, damaged or dumped, and need fixing, cleaning or clearing, such as the following (<a href="http://hart.gov.uk/index/customer_services/a-z_of_services.htm">See the full list</a>):</p>
+<ul>
+ <li>abandoned vehicles
+ <li>graffiti
+ <li>flytipping and dumped rubbish
+ <li>street cleaning, such as dog fouling and street sweeping
+ <li>unlit lamp posts
+ <li>potholes
+ </ul>
+<p> Note that though most of these services are provided by Hart District Council, while FixMyStreet will forward some categories of issue to Hampshire County Council. </p>
+
+<dl>
+ <dt>What issues can&rsquo;t be reported here?</dt>
+ <dd><p>The following problems should be reported via
+ <a href="http://www.hart.gov.uk/online-forms">www.hart.gov.uk/online-forms</a>:</p>
+ <ul>
+ <li>missed rubbish or recycling collections
+ <li>anti-social behaviour
+ <li>noise pollution or barking dogs
+ <li>fires and smoke/smell pollution
+ <li>proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc.
+ <li>complaining about your neighbours
+ <li>complaining or commenting about the council
+ </ul>
+
+ </dd>
+
+ <dt><a name="emergencies"></a>Reporting emergencies (Out of Hours)</dt>
+ <dd>
+ <p> Please do not report problems which present an immediate risk to life, for example missing manhole covers or a fallen lamp column. </p>
+ <p> Issues reported via the website are only actioned during office hours. If you require an Out of Hours service please ring our main number 01252 622122 and a message will direct you to the relevant Council Out of Hours service. </p>
+
+ </dd>
+
+ <dt>How do I report a problem here?</dt>
+ <dd>After entering a postcode or location, you are shown
+a map of that area. You can view problems already reported in that area,
+or report ones of your own by clicking on the map at the location of
+the problem.</dd>
+ <dt>How are the problems solved?</dt>
+ <dd>They are reported directly to us so we can then resolve the problem.
+ You can also discuss the problem on the website with others if you wish.</dd>
+
+ <dt>Do you remove silly or illegal content?</dt>
+ <dd>Hart District Council and FixMyStreet are not responsible for the content and accuracy
+of material submitted by its users. We reserve the right to edit or remove any
+problems or updates which we consider to be inappropriate upon being informed
+by a user of the site.</dd>
+
+ <dt>Can I use FixMyStreet on my mobile?</dt>
+ <dd>
+ <p>The FixMyStreet website will already work on your mobile phone, adapting to
+ the size of your screen automatically. Using an app has some advantages, though
+ &mdash; for example, you can create a report even when you have no network
+ connection.
+ <ul>
+ <li>
+ <a href="https://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet app for iPhone</a>
+ <li>
+ <a href="https://play.google.com/store/apps/details?id=org.mysociety.FixMyStreet">FixMyStreet app for Android</a>
+ <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the
+ <a href="http://store.ovi.com/content/107557">Ovi Store</a>.
+ </ul>
+ </dd>
+
+ <dt>Can I use these pages to report problems outside of the Hart District?</dd>
+ <dd>Yes, if you enter a postcode or address outside the borough you will be re-directed to the main FixMyStreet site that will enable you to report problems elsewhere. FixMyStreet will forward these on to the relevant council.</dd>
+
+ <dt>The site is powered by FixMyStreet, who are they?</dt>
+ <dd>FixMyStreet was built by <a href="http://www.mysociety.org/">mySociety</a>, in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>.
+mySociety is the project of a registered charity which has grown out of the community of
+volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou</a>.
+mySociety&rsquo;s primary mission is to build Internet projects which give people simple, tangible
+benefits in the civic and community aspects of their lives.
+The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety
+can be contacted by email at <a href="mailto:hello&#64;mysociety.org">hello&#64;mysociety.org</a>,
+or by post at mySociety, 483 Green Lanes, London, N13 4BS.</dd>
+
+ <dt>Why does the site use kilometres for measurements?</dt>
+ <dd>The British national
+ grid reference system, devised by Ordnance Survey (the British national
+ mapping agency) around the time of the second world war, uses eastings and
+ northings measured in metres and kilometres; the maps we use are from
+ Ordnance Survey and so this is what we use to display distances.
+ There you have it: not everything British is in miles!</dd>
+
+ <dt>Why can&rsquo;t I zoom out more on the reporting map?</dt>
+ <dd>We want to keep reports locally focused, so we restrict the ability to
+ move radically between areas. The map on <a href="/my">Your Reports</a> will let you see all
+ the reports you&rsquo;ve made, wherever they are.</dd>
+
+ <dt>I&rsquo;d like a site like this for my own location/ where&rsquo;s the "source code" to this site?</dt>
+ <dd>
+The mySociety software behind this site is open source, and available
+under the GNU Affero GPL software license. You can <a
+href="http://github.com/mysociety/fixmystreet">download the
+source code</a> and help mySociety develop it.
+You&rsquo;re welcome to use it in your own projects, although you must also
+make available the source code to any such projects.
+<a href="http://www.fiksgatami.no/">Fiksgatami</a> is an example of our code
+being used in a Norwegian version of this site.
+</dd>
+
+</dl>
+
+ <h2><a name="privacy"></a>Privacy Questions</h2>
+
+ <dl>
+ <dt>Who gets to see my email address?</dt>
+ <dd>
+<p>If you submit a problem, your details, and details of the problem, will be
+submitted to Hart District Council, or Hampshire County Council, as
+appropriate. Other than the council, only people we authorise to view the
+FixMyStreet administration interface will be able to see your email address and
+they will never use it for anything other than to help administer
+FixMyStreet.</p>
+<p>We will never give or sell your email address to anyone else, unless we are
+obliged to by law. Your name will not be published anywhere unless you let us.</p>
+</dd>
+
+ <dt>What emails will you send to me?</dt>
+ <dd>We will email you when we have received your report, and when it has
+ been investigated and actioned. We will only send you emails that
+ relate to an issue you have reported.</dd>
+
+ </dl>
+
+[% INCLUDE 'footer.html' pagefooter = 'yes' %]
diff --git a/templates/web/hart/footer.html b/templates/web/hart/footer.html
new file mode 100644
index 000000000..ebdd74d51
--- /dev/null
+++ b/templates/web/hart/footer.html
@@ -0,0 +1,110 @@
+ </div><!-- .content role=main -->
+
+ </div><!-- .container -->
+
+ </div><!-- .table-cell -->
+
+ <div class="nav-wrapper clearfix">
+ <div class="main-menu-wrapper">
+ <div class="main-menu">
+ <ul class="clearfix">
+ <li class="home"><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END %] class="report-a-problem-btn"
+ >[% "Report" %]</[% c.req.uri.path == '/' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/my' OR ( c.req.uri.path == '/auth' AND c.req.params.r == 'my' ) %]span[% ELSE %]a href="/my"[% END
+ %]>[% loc("Your reports") %]</[% ( c.req.uri.path == '/my' OR ( c.req.uri.path == '/auth' AND c.req.params.r == 'my' ) ) ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/reports/Hart' %]span[% ELSE %]a href="/reports/Hart"[% END
+ %]>[% loc("All reports") %]</[% c.req.uri.path == '/reports' ? 'span' : 'a' %]></li>[%
+ %]<li><[% IF c.req.uri.path == '/alert' %]span[% ELSE %]a href="/alert[% pc ? '/list?pc=' : '' %][% pc | uri %]"[% END
+ %]>[% loc("Local alerts") %]</[% c.req.uri.path == '/alert' ? 'span' : 'a' %]></li>[%
+ %]<li class="last"><[% IF c.req.uri.path == '/faq' %]span[% ELSE %]a href="/faq"[% END
+ %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li>
+ </ul>
+ </div>
+ </div>
+ <div class="nav-wrapper-2 clearfix">
+ <div id="main-nav" class="clearfix" role="navigation">
+ <ul>
+ <li>
+ <a href="http://www.hart.gov.uk/home">Home</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/services">My Services</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/residents">Residents</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/businesses">Businesses</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/visiting">Visiting</a>
+ </li>
+ <li>
+ <a href="http://www.hart.gov.uk/the-council">The Council</a>
+ </li>
+ </ul>
+ </div>
+ <div class="sign-in">
+ [% IF c.user_exists %]
+ <p>
+ [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %]
+ <a href="/auth/sign_out">[% loc('sign out') %]</a>
+ </p>
+ [% END %]
+ </div>
+ </div>
+ </div>
+
+ <div class="hart-footer-wrapper">
+ <div id="footer_outside_wrapper">
+ <div id="footer_inside_wrapper" class="clearfix">
+ <div id="footer-right" class="clearfix">
+ <ul class="footer-nav">
+ <li> <a href="http://www.hart.gov.uk/sitemap">Site map</a> </li>
+ <li> <a href="http://www.hart.gov.uk/Accessibility">Accessibility</a> </li>
+ </ul>
+ </div>
+ <footer id="hart-footer" class="clearfix">
+ <div id="copyright-block" class="desk-only">
+ <strong>©</strong> &nbsp;
+ <a href="http://www.hart.gov.uk/disclaimer" title="More information on the Disclaimer">Hart District Council</a>
+ </div>
+ <ul class="footer-nav clearfix">
+ <li> <a href="http://www.hart.gov.uk/disclaimer">Disclaimer</a></li>
+ <li> <a href="http://www.hart.gov.uk/freedom-information">Freedom of Information</a></li>
+ <li> <a href="http://www.hart.gov.uk/privacy">Privacy</a></li>
+ </ul>
+ </footer>
+ <div class="clearfix" id="footer-row-2">
+ <div id="hart-powered-by">
+ <a href="http://www.mysociety.org/for-councils/fixmystreet/">Powered by <img src="/cobrands/hart/fms-logo.png" alt="FixMyStreet" style="height:20px;"></a>
+ </div>
+ <div id="footer-images">
+ <a href="https://twitter.com/HartCouncil">
+ <img alt="" src="/cobrands/hart/twitter-logo.png" style="height:43px; width:43px" />
+ </a>
+ <a href="http://www.facebook.com/HartDistrictCouncil">
+ <img alt="" src="/cobrands/hart/facebook-logo.png" style="height:43px; margin-right: 10px; width:43px" />
+ </a>
+ <a href="http://www.gov.uk">
+ <img alt="" src="/cobrands/hart/gov-logo.png" style="height:43px; width:172px" />
+ </a>
+ </div>
+ </div>
+ <div id="footer-row-3">
+ <div id="copyright-block-mobile" class="mob-only">
+ <strong>©</strong> &nbsp;
+ <a href="http://www.hart.gov.uk/disclaimer" title="More information on the Disclaimer">
+ Hart District Council</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="footer_border">
+ </div>
+
+
+</div>
+</body>
+</html>
diff --git a/templates/web/hart/header.html b/templates/web/hart/header.html
new file mode 100644
index 000000000..670ddede0
--- /dev/null
+++ b/templates/web/hart/header.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<!--[if lt IE 7]><html class="no-js ie6 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if IE 7]> <html class="no-js ie7 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if IE 8]> <html class="no-js ie8 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if IE 9]> <html class="no-js ie9 oldie" lang="[% lang_code %]"><![endif]-->
+<!--[if gt IE 9]><!--><html class="no-js" lang="[% lang_code %]"><!--<![endif]-->
+ <head>
+ <meta name="viewport" content="initial-scale=1.0">
+
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
+ <meta name="HandHeldFriendly" content="true">
+ <meta name="mobileoptimized" content="0">
+
+ <meta property="og:url" content="[% c.cobrand.base_url %][% c.req.uri.path %]">
+ <meta property="og:title" content="[% title || 'FixMyStreet' %]">
+ <meta property="og:site_name" content="[% c.cobrand.site_title %]">
+ [% IF c.req.uri.path == '/' %]<meta property="og:description" content="Report, view, and discuss local street-related problems.">[% END %]
+ <meta property="og:type" content="website">
+ <meta property="og:image" content="[% c.cobrand.base_url %]/cobrands/fixmystreet/fms-og_image.png">
+ <meta property="og:image:type" content="image/png">
+ <meta property="og:image:width" content="500">
+ <meta property="og:image:height" content="500">
+
+[% SET start = c.config.ADMIN_BASE_URL IF admin %]
+
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/base.css') %]">
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]" media="(min-width:48em)">
+ <link rel="stylesheet" href="[% version('/cobrands/hart/hart.css') %]">
+ [% extra_css %]
+ <!--[if (lt IE 9) & (!IEMobile)]>
+ <link rel="stylesheet" href="[% start %][% version('/cobrands/' _ c.cobrand.moniker _ '/layout.css') %]">
+ <![endif]-->
+
+ <script src="[% start %][% version('/js/modernizr.custom.js') %]" charset="utf-8"></script>
+ <script src="[% start %][% version('/cobrands/fixmystreet/position_map.js') %]" charset="utf-8"></script>
+ [% INCLUDE 'common_header_tags.html', js_override = '/cobrands/fixmystreet/fixmystreet.js', site_title = c.cobrand.site_title %]
+ [% extra_js %]
+ <script type="text/javascript">
+ $(function(){
+ var $html = $('html');
+ $(window).resize(function(){
+ if(!$html.hasClass('mobile')) {
+ // Hart has a bigger header and so needs more room for
+ // the map controls
+ $('#fms_pan_zoom').css({ top: '17.75em' });
+ }
+ }).resize();
+ });
+ </script>
+
+ [% IF c.req.uri.host == 'osm.fixmystreet.com' %]
+ <link rel="canonical" href="http://www.fixmystreet.com[% c.req.uri.path_query %]">
+ [% END %]
+
+ [% INCLUDE 'tracking_code.html' %]
+
+ <link rel="Shortcut Icon" type="image/x-icon" href="/cobrands/hart/favicon.ico">
+
+ </head>
+ [% TRY %][% PROCESS 'set_body_class.html' %][% CATCH file %][% END %]
+ <body class="[% bodyclass | html IF bodyclass %]">
+
+ <div class="wrapper">
+ <div class="table-cell">
+ <header id="site-header" role="banner">
+ <div class="mobile-header-nav">
+ <ul>
+ <li> <a href="http://www.hart.gov.uk/"><div class="home-icon">&nbsp;</div></a>
+ <li> <a href="#main-nav"><div class="menu-icon">&nbsp;</div></a>
+ </ul>
+ </div>
+ <div class="header-container">
+ <a id="site-logo" href="http://www.hart.gov.uk">Hart District Council</a>
+ </div>
+ </header>
+
+ [% pre_container_extra %]
+
+ <div class="container">
+ <div class="content[% " $mainclass" | html IF mainclass %]" role="main">
+
+ <!-- [% INCLUDE 'debug_header.html' %] -->
diff --git a/templates/web/hart/index-steps.html b/templates/web/hart/index-steps.html
new file mode 100644
index 000000000..450a793c9
--- /dev/null
+++ b/templates/web/hart/index-steps.html
@@ -0,0 +1,18 @@
+<h2> How to report </h2>
+
+<ol class="big-numbers">
+ <li>[% question %]</li>
+ <li> Locate it on a map of the area </li>
+ <li> Enter its details </li>
+ <li>Confirm the report and [% c.cobrand.council_name %] will investigate</li>
+</ol>
+
+<div id="hart_hants_note">
+ This site can also be used to report problems to Hampshire County Council via FixMyStreet.
+</div>
+
+<section class="full-width">
+[% INCLUDE "front/stats.html" %]
+[% TRY %][% INCLUDE "front/tips.html" %][% CATCH file %][% END %]
+</section>
+
diff --git a/templates/web/hart/report/new/councils_extra_text.html b/templates/web/hart/report/new/councils_extra_text.html
new file mode 100644
index 000000000..e3e5fb27e
--- /dev/null
+++ b/templates/web/hart/report/new/councils_extra_text.html
@@ -0,0 +1,10 @@
+<div id="hart_hants_note">
+<p>
+<b>NB:</b> though we will forward your request as appropriate,
+reports for problems managed by Hampshire County Council are not shown on this map.
+View all problems in this area on
+<a href="http://www.fixmystreet.com/reports/Hampshire">FixMyStreet.com</a>.
+</p>
+</div>
+
+Do not use this to <a href="/faq#emergencies">report emergencies outside of working hours</a>.
diff --git a/templates/web/hart/tokens/confirm_problem.html b/templates/web/hart/tokens/confirm_problem.html
new file mode 100644
index 000000000..117d2d1bc
--- /dev/null
+++ b/templates/web/hart/tokens/confirm_problem.html
@@ -0,0 +1,21 @@
+[% INCLUDE 'header.html', title = loc('Confirmation') %]
+
+<h1>[% loc('Confirmation') %]</h1>
+
+<p class="confirmed">
+Thank you. You have successfully confirmed your report
+[% IF c.cobrand.owns_problem( problem ) %]
+and this will now be investigated by the council.
+You can <a href="[% c.cobrand.base_url_for_report( problem ) %][% problem.url %]">view the problem on this site</a>.
+[% ELSE %]
+and this has now been passed on to [%# TODO make this generic %] <b>Hampshire County Council</b> to investigate.
+Note that Hart District Council is not responsible for this type of problem. However you can continue to view your problem on the <a href="[% c.cobrand.base_url_for_report( problem ) %][% problem.url %]"><i>fixmystreet.com</i> website</a>.
+[% END %]
+</p>
+
+<p>Your reference for this problem is [% problem.id %], please quote it in any enquiries.
+</p>
+
+[% display_crosssell_advert( problem.user.email, problem.name ) %]
+
+[% INCLUDE 'footer.html' %]
diff --git a/templates/web/oxfordshire/around/extra_text.html b/templates/web/oxfordshire/around/extra_text.html
new file mode 100644
index 000000000..439bf00a2
--- /dev/null
+++ b/templates/web/oxfordshire/around/extra_text.html
@@ -0,0 +1,5 @@
+<div class="extra-text">
+ <p>Please do not use this form for reporting <a href="/faq#pothole" target="_blank">emergencies and urgent problems</a>.</p>
+
+ <p><img src="/i/pin-yellow.png" class="extra-text__image" width="48" height="64" /> - <b>these are problems that have already been reported</b>.<br>Click them to see more details.</p>
+</div>
diff --git a/templates/web/oxfordshire/around/intro.html b/templates/web/oxfordshire/around/intro.html
index 3b96ec82f..68c38c030 100644
--- a/templates/web/oxfordshire/around/intro.html
+++ b/templates/web/oxfordshire/around/intro.html
@@ -1 +1 @@
- <h1 class="main">Report a street or road problem</h1>
+ <h1 class="main">Find and report road or street problems</h1>
diff --git a/templates/web/oxfordshire/footer.html b/templates/web/oxfordshire/footer.html
index 2b8a066e7..29146d935 100644
--- a/templates/web/oxfordshire/footer.html
+++ b/templates/web/oxfordshire/footer.html
@@ -32,17 +32,18 @@
<!-- [% INCLUDE 'debug_footer.html' %] -->
</div> <!-- .wrapper -->
- <div id="oxford-footer" class="desk-only">
- <address>
- <strong>Oxfordshire County Council</strong><br>
- <a href="http://www.oxfordshire.gov.uk/cms/public-site/contact-oxfordshire-county-council" title="Contac the council">Contact the council</a>
- </address>
- <ul><!-- use | between items -->
- <li class="powered-by-fms">
- <a href="http://www.fixmystreet.com/">Powered&nbsp;by&nbsp;<img src="/cobrands/oxfordshire/images/fms-logo-inverse.png" alt="FixMyStreet"></a>
- </li>
- </ul>
- </div>
+ <div id="oxford-footer" class="desk-only">
+ <address>
+ <strong>Oxfordshire County Council</strong><br>
+ <a href="http://www.oxfordshire.gov.uk/cms/public-site/contact-oxfordshire-county-council" title="Contact the council">Contact the council</a><br>
+ <a href="/privacy">View our terms and conditions</a>
+ </address>
+ <ul><!-- use | between items -->
+ <li class="powered-by-fms">
+ <a href="http://www.fixmystreet.com/">Powered&nbsp;by&nbsp;<img src="/cobrands/oxfordshire/images/fms-logo-inverse.png" alt="FixMyStreet"></a>
+ </li>
+ </ul>
+ </div>
</div> <!-- oxford-wrapper -->
</body>
</html>
diff --git a/templates/web/oxfordshire/js/translation_strings.html b/templates/web/oxfordshire/js/translation_strings.html
new file mode 100644
index 000000000..e326da0a8
--- /dev/null
+++ b/templates/web/oxfordshire/js/translation_strings.html
@@ -0,0 +1,40 @@
+ translation_strings = {
+ update: '[% loc('Please enter a message') | replace("'", "\\'") %]',
+ title: '[% loc('Please enter a subject') | replace("'", "\\'") %]',
+ detail: '[% loc('Please enter some details') | replace("'", "\\'") %]',
+ name: {
+ required: '[% loc('Please enter your name') | replace("'", "\\'") %]',
+ validName: '[% loc('Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below') | replace("'", "\\'") %]'
+ },
+ category: '[% loc('Please choose a category') | replace("'", "\\'") %]',
+ rznvy: {
+ required: '[% loc('Please enter your email') | replace("'", "\\'") %]',
+ email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
+ },
+ email: {
+ required: '[% loc('Please enter your email') | replace("'", "\\'") %]',
+ email: '[% loc('Please enter a valid email') | replace("'", "\\'") %]'
+ },
+ fms_extra_title: '[% loc('Please enter your title') | replace("'", "\\'") %]',
+ first_name: '[% loc('Please enter your first name') | replace("'", "\\'") %]',
+ last_name: '[% loc('Please enter your second name') | replace("'", "\\'") %]',
+ geolocate: '[% loc('or locate me automatically') | replace("'", "\\'") %]',
+ right_place: '[% loc('Right place?') | replace("'", "\\'") %]',
+ try_again: '[% loc('Try again') | replace("'", "\\'") %]',
+ place_pin_on_map: '[% loc('Place pin on map') | replace("'", "\\'") %]',
+ home: '[% loc('Home') | replace("'", "\\'") %]',
+ back: '[% loc('Back') | replace("'", "\\'") %]',
+ how_to_send: '[% loc('How to send successful reports') | replace("'", "\\'") %]',
+ more_details: '[% loc('Details') | replace("'", "\\'") %]',
+
+ geolocation_declined: '[% loc('You declined; please fill in the box above') | replace("'", "\\'") %]',
+ geolocation_no_position: '[% loc('Could not look up location') | replace("'", "\\'") %]',
+ geolocation_no_result: '[% loc('No result returned') | replace("'", "\\'") %]',
+ geolocation_unknown: '[% loc('Unknown error') | replace("'", "\\'") %]',
+
+ reporting_a_problem: '[% loc('Reporting a problem') | replace("'", "\\'") %]',
+ ok: '[% loc('OK') | replace("'", "\\'") %]',
+ map: '[% loc('MAP') | replace("'", "\\'") %]',
+
+ report_problem_heading: '[% loc('Click on the map to report a problem') | replace("'", "\\'") %]'
+ };
diff --git a/templates/web/oxfordshire/report/_council_sent_info.html b/templates/web/oxfordshire/report/_council_sent_info.html
new file mode 100644
index 000000000..464c10256
--- /dev/null
+++ b/templates/web/oxfordshire/report/_council_sent_info.html
@@ -0,0 +1,16 @@
+[% IF problem.whensent || problem.can_display_external_id %]
+ <small class="council_sent_info"><br>
+ [% IF problem.whensent %]
+ [% problem.duration_string(c) %]<br>
+ [% END %]
+ <strong>
+ [% IF problem.can_display_external_id %]
+ [% IF problem.whensent %]
+ Council ref:&nbsp;[% problem.external_id %]
+ [% ELSE %]
+ [% problem.external_body %] ref:&nbsp;[% problem.external_id %]
+ [% END %]
+ [% END %]
+ </strong>
+ </small>
+[% END %]
diff --git a/templates/web/oxfordshire/report/new/councils_text_all.html b/templates/web/oxfordshire/report/new/councils_text_all.html
index 638c9d7de..f205418d7 100644
--- a/templates/web/oxfordshire/report/new/councils_text_all.html
+++ b/templates/web/oxfordshire/report/new/councils_text_all.html
@@ -1,24 +1,5 @@
-<div class="oxfordshire-preamble">
- <p>
- Please <strong>do not</strong> use this form for reporting
- <strong>emergencies and urgent</strong> problems.
- You should report these by contacting 0845&nbsp;310&nbsp;11&nbsp;11.
- </p>
- <p>
- Our opening hours are 8.30&nbsp;to&nbsp;5, Monday to Thursday and 8.30&nbsp;to&nbsp;4 on Fridays.
- </p>
- If your enquiry is related to Highways and is outside of our opening hours and
- cannot wait, please contact Thames Valley Police on 101.
- </p>
-</div>
-
-<p>You can use this form to report a problem or to make an enquiry about roads
-and pavements in your area.
-The subject and details of the problem will be public, plus your name if you
-give us permission. If you report a fault on a road that is not owned by
-Oxfordshire County Council we will pass the report on to the relevant body.
-
-<p>Please use <a href="/faq#pothole" target="_blank">our chart</a> to determine
-the size of any pot holes being reported and whether to submit a report using
-this online form or by telephone.</p>
-
+<p>
+ All the information you provide here will be sent to the
+ <strong>relevant department</strong>. The subject and details of the
+ problem will be public, plus your name if you give us permission.
+</p>
diff --git a/templates/web/southampton/header.html b/templates/web/southampton/header.html
index 430b8027c..113803492 100644
--- a/templates/web/southampton/header.html
+++ b/templates/web/southampton/header.html
@@ -5,7 +5,7 @@
<!--[if gt IE 8]><!--><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="[% lang_code %]" lang="[% lang_code %]"><!--<![endif]-->
<head>
<link rel="stylesheet" type="text/css" href="[% version('/css/core.css') %]">
- <link rel="stylesheet" type="text/css" href="/cobrands/southampton/css/style.css" />
+ <link rel="stylesheet" type="text/css" href="[% version('/cobrands/southampton/css/style.css') %]" />
<link rel="stylesheet" type="text/css" href="[% version('/cobrands/southampton/css.css') %]" />
[% INCLUDE 'common_header_tags.html', site_title = 'Southampton City Council FixMyStreet' %]
diff --git a/templates/web/zurich/admin/body-form.html b/templates/web/zurich/admin/body-form.html
index 5ae8eb8a6..a31dffe7c 100644
--- a/templates/web/zurich/admin/body-form.html
+++ b/templates/web/zurich/admin/body-form.html
@@ -10,7 +10,6 @@
<input type="text" name="endpoint" id="email" value="[% body.endpoint %]" size="50">
</p>
-[% IF admin_type == 'super' %]
<p>
<label for="parent">[% loc('Parent') %]</label>
<select name="parent" id="parent">
@@ -25,13 +24,18 @@
<label for="area_ids">[% loc('Area covered') %]</label>
<select name="area_ids" id="area_ids" multiple>
<option value=""> -- [% loc('Select an area') %] -- </option>
+ [% SET body_areas = body.areas %]
[% FOR area IN areas %]
[% SET aid = area.id %]
- <option value="[% area.id %]"[% ' selected' IF body.areas.$aid %]>[% area.name %]</option>
+ <option value="[% area.id %]"[% ' selected' IF body_areas.$aid %]>[% area.name %]</option>
[% END %]
</select>
</p>
-[% END %]
+
+ <p>
+ <label for="deleted">[% loc('Flag as deleted') %]</label>
+ <input type="checkbox" name="deleted" id="deleted" value="1"[% ' checked' IF body.deleted %] />
+ </p>
<input type="hidden" name="send_method" value="Email">
<input type="hidden" name="jurisdiction" id="jurisdiction" value="[% body.jurisdiction %]">
diff --git a/templates/web/zurich/admin/header.html b/templates/web/zurich/admin/header.html
index be146f0e1..281b1de23 100644
--- a/templates/web/zurich/admin/header.html
+++ b/templates/web/zurich/admin/header.html
@@ -14,6 +14,7 @@
%]
<style type="text/css">
.adminhidden { color: #666666; }
+ .admininternal { background-color: #eeeeff; }
.active { background-color: #ffffee; cursor: pointer; }
.error { color: red; }
.overdue { background-color: #ffcccc; }
diff --git a/templates/web/zurich/admin/list_updates.html b/templates/web/zurich/admin/list_updates.html
index c475d839e..2b575f27e 100644
--- a/templates/web/zurich/admin/list_updates.html
+++ b/templates/web/zurich/admin/list_updates.html
@@ -1,18 +1,45 @@
[% IF updates.size %]
+
+<h2>[% loc('Internal notes') %]</h3>
+
+<table cellspacing="0" cellpadding="2" border="1">
+ <tr>
+ <th>[% loc('ID') %]</th>
+ <th>[% loc('Created') %]</th>
+ <th>[% loc('User') %]</th>
+ <th>[% loc('Text') %]</th>
+ </tr>
+[% FOREACH update IN updates -%]
+ [% IF update.extra.is_internal_note %]
+ <tr class="[% 'admininternal' IF update.extra.is_internal_note %]">
+ <td>[% update.id %]</td>
+ <td>[% PROCESS format_date this_date=update.created %] [% update.created.hms %]</td>
+ <td><a href="mailto:[% update.user.email %]">[% update.user.name || update.user.email %]</a></td>
+ <td>[% update.text | html %]</td>
+ </tr>
+ [% END %]
+[% END -%]
+</table>
+
<h2>[% loc('Updates') %]</h2>
<table cellspacing="0" cellpadding="2" border="1">
<tr>
<th>[% loc('ID') %]</th>
<th>[% loc('Created') %]</th>
+ <th>[% loc('User') %]</th>
<th>[% loc('Text') %]</th>
</tr>
[% FOREACH update IN updates -%]
- <tr[% ' class="adminhidden"' IF update.state == 'hidden' || update.problem.state == 'hidden' %]>
- <td>[%- update.id %]</td>
+ [% IF ! update.extra.is_internal_note %]
+ <tr class="[% 'adminhidden' IF update.state == 'hidden' || update.problem.state == 'hidden' %]">
+ <td>[% update.id %]</td>
<td>[% PROCESS format_date this_date=update.created %] [% update.created.hms %]</td>
+ <td><a href="mailto:[% update.user.email %]">[% update.user.name || update.user.email %]</a></td>
<td>[% update.text | html %]</td>
</tr>
+ [% END %]
[% END -%]
</table>
+
[% END %]
diff --git a/templates/web/zurich/admin/problem_row.html b/templates/web/zurich/admin/problem_row.html
index 162b6992a..9b395a1ac 100644
--- a/templates/web/zurich/admin/problem_row.html
+++ b/templates/web/zurich/admin/problem_row.html
@@ -3,7 +3,7 @@
<tr[%
SET classes = [];
classes.push('adminhidden') IF problem.state == 'hidden';
- classes.push('overdue') IF c.cobrand.overdue( problem );
+ classes.push('overdue') IF c.cobrand.get_or_check_overdue( problem );
classes.push('row-link') IF NOT no_edit;
' class="' _ classes.join(' ') _ '"' IF classes.size;
%]>
@@ -33,10 +33,8 @@
[% END %]
<td>
- [% IF problem.photo;
- photo = problem.get_photo_params
- %]
- <img class="img" height="60" width="90" src="[% photo.url_fp %]" alt="">
+ [% IF problem.photo %]
+ <img class="img" height="60" width="90" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg" alt="">
[% END %]
</td>
diff --git a/templates/web/zurich/admin/report_edit-sdm.html b/templates/web/zurich/admin/report_edit-sdm.html
index fcdb03602..5ff031ce2 100644
--- a/templates/web/zurich/admin/report_edit-sdm.html
+++ b/templates/web/zurich/admin/report_edit-sdm.html
@@ -22,6 +22,9 @@
<ul class="no-bullets">
<li><a href="[% c.uri_for_email( '/report', problem.id ) %]">[% loc('View report on site' )%]</a></li>
+
+<li><a href="http://webgis.intra.stzh.ch/AV_Online/Direct.asp?Map=AV&Search=Koord&West=[% problem.local_coords.0 %]&Nord=[% problem.local_coords.1 %]&B=300" target="_blank">Standort in AV-Online anzeigen</a></li>
+
<li><span class="mock-label">[% loc('Details:') %]</span> [% problem.detail | html %]
[% IF problem.extra.original_detail %]
<br>[%
@@ -52,8 +55,8 @@
<li><span class="mock-label">[% loc('State:') %]</span> [% states.${problem.state} %]</li>
-<li><label for="internal_notes">[% loc('Internal notes:') %]</label>
-<textarea name='internal_notes' id='internal_notes' cols=60 rows=5>[% problem.extra.internal_notes | html %]</textarea></li>
+<li><label for="new_internal_note">[% loc('New internal note:') %]</label>
+<textarea name='new_internal_note' id='new_internal_note' cols=60 rows=5></textarea></li>
<li><label for="status_update">[% loc('New update:') %]</label>
<textarea name='status_update' id='status_update' cols=60 rows=5></textarea></li>
diff --git a/templates/web/zurich/admin/report_edit.html b/templates/web/zurich/admin/report_edit.html
index 5c5cdf182..66a51f162 100644
--- a/templates/web/zurich/admin/report_edit.html
+++ b/templates/web/zurich/admin/report_edit.html
@@ -22,6 +22,8 @@
<ul class="no-bullets">
<li><a href="[% c.uri_for_email( '/report', problem.id ) %]">[% loc('View report on site' )%]</a></li>
+<li><a href="http://webgis.intra.stzh.ch/AV_Online/Direct.asp?Map=AV&Search=Koord&West=[% problem.local_coords.0 %]&Nord=[% problem.local_coords.1 %]&B=300" target="_blank">Standort in AV-Online anzeigen</a></li>
+
[% IF problem.state == 'fixed - council' OR problem.state == 'closed' %]
<li><span class="mock-label">[% loc('Details:') %]</span> [% problem.detail | html %]
[% IF problem.extra.original_detail %]
@@ -66,9 +68,9 @@
<li>
[% photo = problem.get_photo_params %]
<div class="update-img">
- [% IF photo.url_full %]<a href="[% photo.url_full %]" rel="fancy">[% END
- %]<img alt="Photo of this report" [% IF photo.height %]height="[% photo.height %]" width="[% photo.width %]"[% END %] src="[% photo.url %]">
- [%- IF photo.url_full %]<span>zoom</span></a>[% END %]
+ <a href="[% c.cobrand.base_url %]/photo/[% problem.photo %].fulltemp.jpeg" rel="fancy">
+ <img alt="Photo of this report" src="[% c.cobrand.base_url %]/photo/[% problem.photo %].temp.jpeg">
+ <span>zoom</span></a>
</div>
<br>
<input type="submit" name="rotate_photo" value="[% loc('Rotate Left') %]">
@@ -79,8 +81,8 @@
[% END %]
</ul>
-<p><label for="internal_notes">[% loc('Internal notes:') %]</label>
-<textarea name='internal_notes' id='internal_notes' cols=60 rows=5>[% problem.extra.internal_notes | html %]</textarea></p>
+<p><label for="new_internal_note">[% loc('New internal note:') %]</label>
+<textarea name='new_internal_note' id='new_internal_note' cols=60 rows=5>[% new_internal_note | html %]</textarea></p>
<p><span class="mock-label">[% loc('State:') %]</span> <select name="state" id="state">
<option value="">--</option>
@@ -101,6 +103,24 @@
[% END %]
</select></p>
+<p id="automatic-reply">
+ <span class="mock-label">Automatische Antwort</span>
+ <input type="checkbox" name="send_rejected_email" id="send_rejected_email" value="1" />
+</p>
+
+<script type="text/javascript">
+$(function(){
+ // Show or hide the automatic reply field
+ $('#state').change(function(){
+ if ($(this).val() === 'hidden') {
+ $('#automatic-reply').show();
+ } else {
+ $('#automatic-reply').hide();
+ }
+ }).change();
+});
+</script>
+
[% IF problem.state == 'unconfirmed' OR problem.state == 'confirmed' %]
<ul class="no-bullets">
@@ -134,7 +154,7 @@
<select name="body_external" id="body_external">
<option value="">--</option>
[% FOR body IN bodies %]
- [% NEXT IF body.parent OR body.bodies %]
+ [% NEXT IF body.parent OR body.bodies OR body.deleted %]
<option value="[% body.id %]"[% IF body.id == problem.bodies_str %] selected[% END %]>[% body.name %]</option>
[% END %]
</select>
diff --git a/templates/web/zurich/admin/reports.html b/templates/web/zurich/admin/reports.html
index b0bc733c4..68f98c44a 100644
--- a/templates/web/zurich/admin/reports.html
+++ b/templates/web/zurich/admin/reports.html
@@ -13,6 +13,7 @@
[% FOREACH col IN [ [ 'category', loc('Category') ], [ 'created', loc('Submitted') ], [ 'lastupdate', loc('Updated') ], [ 'state', loc('Status') ] ] %]
<th><a href="[% INCLUDE sort_link choice = col.0 %]">[% col.1 %] [% INCLUDE sort_arrow choice = col.0 %]</a></th>
[% END %]
+ <th>[% loc('Photo') %]</th>
<th class='edit'>*</th>
</tr>
[% INCLUDE 'admin/problem_row.html' %]
diff --git a/templates/web/zurich/admin/stats.html b/templates/web/zurich/admin/stats.html
index 92521ff1d..52b33ebc4 100644
--- a/templates/web/zurich/admin/stats.html
+++ b/templates/web/zurich/admin/stats.html
@@ -13,7 +13,7 @@
<option value="">[% loc('All reports') %]</option>
[% FOR y IN [ 2013 .. date.format(date.now, '%Y') ];
SET max = 12;
- max = date.format(date.now, '%m') IF y == date.format(date.now, '%Y');
+ SET max = date.format(date.now, '%m') IF y == date.format(date.now, '%Y');
FOR m IN [ 1 .. max ];
m = m | format('%02d');
SET v = m _ '.' _ y;
diff --git a/templates/web/zurich/auth/general.html b/templates/web/zurich/auth/general.html
index 7f6403d00..11c729fde 100644
--- a/templates/web/zurich/auth/general.html
+++ b/templates/web/zurich/auth/general.html
@@ -35,8 +35,10 @@ END %]
<input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]">
</div>
- <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
- <label class="inline n" for="remember_me">[% loc('Keep me signed in on this computer') %]</label>
+ <div class="form-txt-submit-box">
+ <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]>
+ <label class="inline n" for="remember_me">[% loc('Keep me signed in on this computer') %]</label>
+ </div>
</div>
</fieldset>
diff --git a/templates/web/zurich/js/validation_rules.html b/templates/web/zurich/js/validation_rules.html
new file mode 100644
index 000000000..d98bc1118
--- /dev/null
+++ b/templates/web/zurich/js/validation_rules.html
@@ -0,0 +1,8 @@
+ validation_rules = {
+ title: { required: true },
+ detail: { required: true },
+ email: { required: true },
+ update: { required: true },
+ phone: { required: true },
+ rznvy: { required: true }
+ };
diff --git a/templates/web/zurich/report/new/fill_in_details_form.html b/templates/web/zurich/report/new/fill_in_details_form.html
index 1cecf036d..076536601 100644
--- a/templates/web/zurich/report/new/fill_in_details_form.html
+++ b/templates/web/zurich/report/new/fill_in_details_form.html
@@ -103,7 +103,10 @@
[% END %]
<input type="text" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]">
- <label for="form_phone">[% loc('Phone number (optional)') %]</label>
+ <label for="form_phone">[% loc('Phone number') %]</label>
+ [% IF field_errors.phone %]
+ <p class='form-error'>[% field_errors.phone %]</p>
+ [% END %]
<input type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]">
<div class="form-txt-submit-box">
diff --git a/templates/web/zurich/report/photo-js.html b/templates/web/zurich/report/photo-js.html
new file mode 100644
index 000000000..05588d085
--- /dev/null
+++ b/templates/web/zurich/report/photo-js.html
@@ -0,0 +1,6 @@
+[% extra_css = BLOCK %]
+ <link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]">
+[% END %]
+[% extra_js = BLOCK %]
+ <script src="[% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" charset="utf-8"></script>
+[% END %]
diff --git a/web/cobrands/barnet/_colours.scss b/web/cobrands/barnet/_colours.scss
index 793a8dcdd..2a00dab90 100644
--- a/web/cobrands/barnet/_colours.scss
+++ b/web/cobrands/barnet/_colours.scss
@@ -4,6 +4,13 @@ $primary: #E9E9EA;
$primary_b: #000000;
$primary_text: #3E3D44;
+/* Unused here */
+$base_bg: #fff;
+$base_fg: #1a1a1a;
+$map_nav_bg: #222;
+$nav_fg: #fff;
+$nav_fg_hover: #444;
+
$col_click_map: #E1E3E4;
$col_click_map_dark: darken(#E1E3E4, 10%);
diff --git a/web/cobrands/bellavistaenaccion/_colours.scss b/web/cobrands/bellavistaenaccion/_colours.scss
new file mode 100644
index 000000000..cfe698046
--- /dev/null
+++ b/web/cobrands/bellavistaenaccion/_colours.scss
@@ -0,0 +1,21 @@
+/* COLOURS */
+
+$orange: #ff9900;
+$bluey: #ff8888;
+
+$primary: #ffffee;
+$primary_b: #000000;
+$primary_text: #222222;
+
+$base_bg: $bluey;
+$base_fg: #000;
+
+$map_nav_bg: $bluey;
+$nav_fg: #000;
+$nav_fg_hover: $primary;
+
+$col_click_map: $bluey;
+$col_click_map_dark: darken($bluey, 10%);
+
+$col_fixed_label: #00BD08;
+$col_fixed_label_dark: #4B8304;
diff --git a/web/cobrands/bellavistaenaccion/base.scss b/web/cobrands/bellavistaenaccion/base.scss
new file mode 100644
index 000000000..9fccf92db
--- /dev/null
+++ b/web/cobrands/bellavistaenaccion/base.scss
@@ -0,0 +1,7 @@
+@import "../sass/h5bp";
+@import "./_colours";
+@import "../sass/mixins";
+@import "compass";
+
+@import "../sass/base";
+
diff --git a/web/cobrands/bellavistaenaccion/config.rb b/web/cobrands/bellavistaenaccion/config.rb
new file mode 100644
index 000000000..cab97b18f
--- /dev/null
+++ b/web/cobrands/bellavistaenaccion/config.rb
@@ -0,0 +1,25 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+http_path = "/"
+css_dir = ""
+sass_dir = ""
+images_dir = ""
+javascripts_dir = ""
+
+# You can select your preferred output style here (can be overridden via the command line):
+# output_style = :expanded or :nested or :compact or :compressed
+
+# To enable relative paths to assets via compass helper functions. Uncomment:
+# relative_assets = true
+
+# To disable debugging comments that display the original location of your selectors. Uncomment:
+# line_comments = false
+
+# If you prefer the indented syntax, you might want to regenerate this
+# project again passing --syntax sass, or you can uncomment this:
+# preferred_syntax = :sass
+# and then run:
+# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
+
+line_comments = false # by Compass.app
diff --git a/web/cobrands/bellavistaenaccion/layout.scss b/web/cobrands/bellavistaenaccion/layout.scss
new file mode 100644
index 000000000..69e455aa5
--- /dev/null
+++ b/web/cobrands/bellavistaenaccion/layout.scss
@@ -0,0 +1,2 @@
+@import "_colours";
+@import "../sass/layout";
diff --git a/web/cobrands/bromley/_colours.scss b/web/cobrands/bromley/_colours.scss
index 208154370..5627929a0 100644
--- a/web/cobrands/bromley/_colours.scss
+++ b/web/cobrands/bromley/_colours.scss
@@ -6,6 +6,14 @@ $primary: $bromley_blue;
$primary_b: #000000;
$primary_text: #ffffff;
+$base_bg: #9b9b9b url('https://www.bromley.gov.uk/site/styles/css_img/repeater.gif') repeat-x;
+$base_fg: #1a1a1a;
+
+/* Unused here */
+$map_nav_bg: #222;
+$nav_fg: #fff;
+$nav_fg_hover: #444;
+
$col_click_map: $bromley_blue;
$col_click_map_dark: darken($bromley_blue, 10%);
$col_fixed_label: $bromley_blue;
diff --git a/web/cobrands/bromley/bromley.scss b/web/cobrands/bromley/bromley.scss
index 91ec75fea..eee4359de 100644
--- a/web/cobrands/bromley/bromley.scss
+++ b/web/cobrands/bromley/bromley.scss
@@ -108,3 +108,6 @@ body { color: #333; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
clear: both;
}
+.issue-list-a li .text small {
+ display: inline;
+}
diff --git a/web/cobrands/bromley/layout.scss b/web/cobrands/bromley/layout.scss
index 2dcc73cc4..f5e6e9801 100644
--- a/web/cobrands/bromley/layout.scss
+++ b/web/cobrands/bromley/layout.scss
@@ -1,7 +1,6 @@
@import "_colours";
@import "../sass/layout";
-body { background: #9b9b9b url('https://www.bromley.gov.uk/site/styles/css_img/repeater.gif') repeat-x; }
#bromley-wrapper { background: #fff url('https://www.bromley.gov.uk/site/styles/css_img/header-corners.gif') center 110px no-repeat; margin: 1px auto 0; padding: 0 15px; width: 955px;}
.offline #bromley-wrapper { padding: 0 15px 20px; }
@@ -113,7 +112,7 @@ body.frontpage {
right: 0;
}
-// Pull OpenLayers navigation down a bit
+// OpenLayers navigation always top right
#fms_pan_zoom {
top: 0.5em !important;
}
diff --git a/web/cobrands/default/_colours.scss b/web/cobrands/default/_colours.scss
index 147fb70f2..e8c12f98e 100644
--- a/web/cobrands/default/_colours.scss
+++ b/web/cobrands/default/_colours.scss
@@ -7,6 +7,13 @@ $primary: $orange;
$primary_b: #000000;
$primary_text: #222222;
+$base_bg: $bluey;
+$base_fg: #000;
+
+$map_nav_bg: $bluey;
+$nav_fg: #000;
+$nav_fg_hover: $primary;
+
$col_click_map: $bluey;
$col_click_map_dark: darken($bluey, 10%);
diff --git a/web/cobrands/default/layout.scss b/web/cobrands/default/layout.scss
index 5d1fab968..69e455aa5 100644
--- a/web/cobrands/default/layout.scss
+++ b/web/cobrands/default/layout.scss
@@ -1,39 +1,2 @@
@import "_colours";
@import "../sass/layout";
-
-/*
-Note: The fact that the below has to override the CSS, though it is for the
-default template, is a sign that the CSS is not best organised. It needs
-refactoring, and making more maintainable through the use of SMACSS, OOCSS
-and similar.
-*/
-
-body {
- background: $bluey;
-}
-
-body.mappage {
- .nav-wrapper {
- .nav-wrapper-2 {
- background: $bluey;
- }
- }
-}
-
-#main-nav {
- ul {
- li {
- a, span {
- color: #000;
- }
- }
- &#main-menu {
- li {
- a:hover {
- background: $primary;
- }
- }
- }
- }
-}
-
diff --git a/web/cobrands/fixmindelo/_colours.scss b/web/cobrands/fixmindelo/_colours.scss
index cb261cff3..ac39f72e3 100644
--- a/web/cobrands/fixmindelo/_colours.scss
+++ b/web/cobrands/fixmindelo/_colours.scss
@@ -10,6 +10,13 @@ $primary: $mindelo_blue;
$primary_b: #000000;
$primary_text: #222222;
+$base_bg: #fff url(images/tropical-sea-pattern.jpg);
+$base_fg: $primary_text;
+
+$map_nav_bg: #fff;
+$nav_fg: #000;
+$nav_fg_hover: $primary;
+
$col_click_map: $mindelo_green;
$col_click_map_dark: darken($mindelo_green, 10%);
diff --git a/web/cobrands/fixmindelo/base.scss b/web/cobrands/fixmindelo/base.scss
index 105994ace..4d3a53f0a 100644
--- a/web/cobrands/fixmindelo/base.scss
+++ b/web/cobrands/fixmindelo/base.scss
@@ -26,4 +26,34 @@ $image-sprite: 'images/sprite.png';
#nav-link {
top: -6x;
background: url('images/sprite.png') -8px -915px no-repeat;
-} \ No newline at end of file
+}
+
+#footer-help ul li {
+ padding-right: 3em;
+ a {
+ display: block;
+ }
+ a.link-fb, a.link-fabap {
+ padding-left: 30px;
+ background-image: url('images/link_sprites.png');
+ background-repeat: no-repeat;
+ background-position-x: 0;
+ }
+ a.link-fb {
+ background-position-y: -282px;
+ &:hover {
+ background-position-y: -222px;
+ }
+ }
+ a.link-fabap {
+ background-position-y: -78px;
+ &:hover {
+ background-position-y: -28px;
+ }
+ }
+}
+
+#main-nav ul#mysoc-menu li a#mysoc-logo {
+ background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAAASCAYAAADBnymNAAADAElEQVR42t2XvarWQBCGcwl7CVspFgfTiO0WdjbptdjeJrXV3kFKC4tFRAubra2CvZA7MKVwQALaKAjrG5jF4SU5CR+JyDfw4Mnfmu/J7Mxu9S8j5+xBD3T0wFUnxO3tbQAZDNW1BuR1eT38SWJ7kIX6gneuQQD2f5VqQYkBNMDJvwmYk8TWIjdc8M4BlHCX/ucOWDluQAC1uscCD1pg+dmZhXGdUIvEEk21I74/emhAmtn54bzIaIBV593MjmcMZWoEJVrgynhCTeMZdc3q6RLBALIiitCJznuRF9W5hoRnIZLYBMwOsS3IMz+e3jS/3t4LoFn4MT3gGDnrFrKRYyqy1JgcAYzlgD5Gq0ubEiuIXGICAx0bFshNQ3AiYNI/HAQSzGIt6EH6+ep+B6kZsKCBxuzlXGSBKwISyRpVPxipfPUlw7k30MeYgGGxbZnGJNEuCZNzY7mvklAfYaTpNS1kyWb9mzNVxA60wpCASI51sRM/I+9WormjxnK/SH9nDr2LFks1Mgs91U0W2+pyAIw67njqUoaUCO9cNCCBRUm/vz0wIAlcAswOsSwwgqAoEbaal2R6CQMauvcQsYZrsjq2FcXKlJwgtAVZcAtiPciCU2Ili3eJdXkztsWSSA+iLiWHiKUmNoG4d1GuOy9kWjCCHpiTMtZxxi7g9iy31KxL6u/uaLFckzPwvBRZKAuj/uEvn7wxYAQTsJXE689NAybQr2w4uh1iuRamS9axfJ36hj1ULDWxguGpIyITiFRnOxHrQJ558Sw1Nx+/JhAhNIA8Q01kos4dZOzujuYV+RkhUkNztOLoQL3UxKgkHSqWm1jcWjeurWshtQPx8YcvAVLzzPNP71tITSDQuF7kcgwrYnnty7G+nNtuYp7FehBm6HwQPO3AgmDp/o725Yv7bmJ1/w6hFgwgAcPXSVTL46qsC7yk42tCC+qNse2K+LE6IThbU3WdwcIjZevhUkfekV25VN7o9NXRwbssUFfXHdy0emDOEutBe+2Zys14a/r/AWrug1ElrRIFAAAAAElFTkSuQmCC');
+ background-position: 20px center;
+}
diff --git a/web/cobrands/fixmindelo/images/link_sprites.png b/web/cobrands/fixmindelo/images/link_sprites.png
new file mode 100644
index 000000000..bf4d982fe
--- /dev/null
+++ b/web/cobrands/fixmindelo/images/link_sprites.png
Binary files differ
diff --git a/web/cobrands/fixmindelo/layout.scss b/web/cobrands/fixmindelo/layout.scss
index 6a52b3b1e..8dfea7acd 100644
--- a/web/cobrands/fixmindelo/layout.scss
+++ b/web/cobrands/fixmindelo/layout.scss
@@ -6,12 +6,8 @@ $image-sprite: 'images/sprite.png';
body {
- background-color: #fff;
- background-image: url(images/tropical-sea-pattern.jpg);
- color: $primary_text;
-
.wrapper{
- background-color: #fff;
+ background-color: #fff;
background: url('images/fixmindelo-header.png') 30% 0% repeat-x;
}
#site-logo {
@@ -19,30 +15,13 @@ body {
}
}
-
-body.mappage {
- .nav-wrapper {
- .nav-wrapper-2 {
- background: #fff;
- }
- }
-}
-
#main-nav {
ul {
- li {
- a, span {
- color: #000;
- }
- }
&#main-menu {
li {
a.report-a-problem-btn {
color: #fff;
}
- a:hover {
- background: $primary;
- }
}
}
}
@@ -75,3 +54,18 @@ body.frontpage {
}
}
+body.admin {
+ .container {
+ width: 94%;
+ margin: 0 auto;
+ }
+ table {
+ background: white; // force bg colour since it may overhang the colourful background
+ }
+}
+
+#main-nav ul#mysoc-menu li a#mysoc-logo {
+ background-position: 6px 10px;
+}
+
+
diff --git a/web/cobrands/fixmybarangay/_colours.scss b/web/cobrands/fixmybarangay/_colours.scss
index bbf419bca..d5544ff07 100644
--- a/web/cobrands/fixmybarangay/_colours.scss
+++ b/web/cobrands/fixmybarangay/_colours.scss
@@ -4,6 +4,13 @@ $primary: #fff; //E6DBD6
$primary_b: #000000;
$primary_text: #222222;
+$base_bg: #C7B299 url(images/pat3.png);
+$base_fg: $primary_text;
+
+$map_nav_bg: url('images/fmb-header.png') 30% 0% repeat-x;
+$nav_fg: #fff;
+$nav_fg_hover: rgba(0,0,0,0.8);
+
$col_click_map: #00BD08;
$col_click_map_dark: #4B8304;
$col_fixed_label: #00BD08;
@@ -11,4 +18,4 @@ $col_fixed_label_dark: #4B8304;
$fmb_base_blue: #046AAA;
$fmb_dark_blue: #084E7A;
-$fmb_tab_yellow: #FFD000; \ No newline at end of file
+$fmb_tab_yellow: #FFD000;
diff --git a/web/cobrands/fixmybarangay/base.scss b/web/cobrands/fixmybarangay/base.scss
index 9088efa71..81cf4785d 100644
--- a/web/cobrands/fixmybarangay/base.scss
+++ b/web/cobrands/fixmybarangay/base.scss
@@ -26,11 +26,6 @@ input.yellow-btn{
}
}
-body.mappage .nav-wrapper div.nav-wrapper-2 {
- background: url('images/fmb-header.png') 30% 0% repeat-x;
- border-bottom: 2px solid #333;
-}
-
#main-nav ul#main-menu li a.report-a-problem-btn:hover {
background: #fff;
}
diff --git a/web/cobrands/fixmybarangay/layout.scss b/web/cobrands/fixmybarangay/layout.scss
index 675a185b1..4a662754d 100644
--- a/web/cobrands/fixmybarangay/layout.scss
+++ b/web/cobrands/fixmybarangay/layout.scss
@@ -13,10 +13,6 @@ $image-sprite: 'images/sprite.png';
}
body {
- background: #C7B299;
- background-image: url(images/pat3.png);
- color: $primary_text;
-
.wrapper{
background: url('images/fmb-header.png') 30% 0% repeat-x;
}
@@ -44,6 +40,10 @@ body.frontpage {
background-image: url(images/ie_front_logo.gif);
}
+body.mappage .nav-wrapper div.nav-wrapper-2 {
+ border-bottom: 2px solid #333;
+}
+
#main-nav ul#mysoc-menu li a#mysoc-logo {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIkAAAAyCAMAAABf9whNAAAA0lBMVEUAAABAQEBAQEBAQEBNTU1NTU1AQEBNTU1AQEBAQEBAQEBAQEBAQEBAQEBAQEBNTU1NTU1AQEBNTU1AQEBNTU1AQEBAQEBNTU2Mxj9NTU33kx5NTU1NTU1NTU3tHCRmLZEpq+JNTU2TJ4/tHCSTJ4/87iEpq+L3kx5NTU387iH87iHtHCSTJ4/3kx51K5CTJ49mLZGMxj/tHCSx0zVmLZH6wSBmLZFmLZFDdb/zYCFbuZGMxj/3kx5AQEBNTU0pq+LtHCSMxj/3kx787iFmLZGTJ49ns3BGAAAAPXRSTlMAQL+AQIAQECBwMGBQj98gn5/Pr+/vzzC/r79wYI9wv69QcK+vcICfv68QQBAwj0AwMBBggIBQr3BwgEBgSmaQCwAAAflJREFUeF7t1Ndy2zAQhtGfAAX2IpFUseSSOLGd3nt27bT3f6UsQHusRFcKmVxkcGa4wvCG34AQ8V/wPM/zPM8zSaOaxGBHtFpF+IfikqwYO0LmELfiHH/XlLokSBrsiurtPdGkMJJFWFWTSQUZC0RhWMFNRQWuvTw9RS/VOolNEBgAudYpkE5pHqRpEACIZQ4x4RkztxMWd6KWa2DDvFDUBeg9urr6cPAZMIqEDogCmDmJKdwtlbjXOCc1sIRnhyxj0vIMNbeQMUNun5DBOTo6/3oASMhUF6krka3IM1lkikqdGaICMVE2sKSNICkR1sxYyMag5TWQd7bFPH4G8eT8zcOUKIGwJUYuSE7hzoldlZAwM7Dkwg4GQjtmXMtvBZHNiZJ7P+5C3P/2oH9SXyKXo1yJq0sbmmLMkg23h7xCryR1W5L8WqKsmz1BSbqjfNSSiMUGMEB/Bp8ePwdeLF/ZAn1TEssFR1MJIZmyGLUENXNrI8pCK6IMx99fn50tvyyBcuvEKuqKXDcuocgAQ/I7conMGgA5BfD23fvLy4/LT0Ba/v4vphRxR9dnlmIMU4ULO0IgsgPr/rya3H7F4JycoCf3sq0vW5ICiLXO3YtsMC4JqbG3uCFKMSb3nYuwNyLKMK6Q6wj7a7oMY4vwJwwG8TzP8zzP834CEcRJKkEhVogAAAAASUVORK5CYII=");
}
@@ -72,18 +72,6 @@ body.frontpage {
}
&#main-menu{
padding: 3px 0;
- li{
- a{
- //@extend .report-a-problem-btn;
- color: #fff;
- padding: 0.7em;
- background-color: rgba(0,0,0,0);
- background-image: none;
- &:hover{
- background-color: rgba(0,0,0,0.8);
- }
- }
- }
}
}
diff --git a/web/cobrands/fixmystreet/_colours.scss b/web/cobrands/fixmystreet/_colours.scss
index 7dcd9ab9b..29b18be1f 100644
--- a/web/cobrands/fixmystreet/_colours.scss
+++ b/web/cobrands/fixmystreet/_colours.scss
@@ -4,6 +4,14 @@ $primary: #FFD000;
$primary_b: #F3B11E; // For the box around the front page postcode form only
$primary_text: #222;
+// Tiled main body background
+$base_bg: #1A1A1A url(images/tile.jpg) 0 0 repeat;
+$base_fg: #fff;
+
+$map_nav_bg: #222;
+$nav_fg: #fff;
+$nav_fg_hover: #444;
+
// The "Click map" box on /around
$col_click_map: #00BD08;
$col_click_map_dark: #4B8304;
diff --git a/web/cobrands/fixmystreet/dashboard.scss b/web/cobrands/fixmystreet/dashboard.scss
index bd241617e..ca862aaa4 100644
--- a/web/cobrands/fixmystreet/dashboard.scss
+++ b/web/cobrands/fixmystreet/dashboard.scss
@@ -95,3 +95,8 @@
font-size:2.25em;
}
}
+
+ .export_as_csv {
+ font-size: 0.75em;
+ font-weight: bold;
+ }
diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js
index 1bcb8f3c0..ef74ebff4 100644
--- a/web/cobrands/fixmystreet/fixmystreet.js
+++ b/web/cobrands/fixmystreet/fixmystreet.js
@@ -53,16 +53,10 @@ function tabs(elem, indirect) {
$(function(){
var $html = $('html');
- var cobrand;
+ var cobrand = $('meta[name="cobrand"]').attr('content');
var is_small_map = false;
- if (window.location.href.indexOf('bromley') != -1) {
- cobrand = 'bromley';
+ if (cobrand === 'bromley') {
is_small_map = true;
- } else if (window.location.href.indexOf('oxfordshire') != -1) {
- cobrand = 'oxfordshire';
- is_small_map = true;
- } else if (window.location.href.indexOf('zurich') != -1 || window.location.href.indexOf('zueri') != -1) {
- cobrand = 'zurich';
}
// Deal with switching between mobile and desktop versions on resize
@@ -95,11 +89,13 @@ $(function(){
height: 'auto',
margin: 0
});
- $('#fms_pan_zoom').css({ top: '2.75em !important' });
+ $('#fms_pan_zoom').css({ top: '2.75em' });
$('.big-green-banner')
.addClass('mobile-map-banner')
.appendTo('#map_box')
.html('<a href="/">' + translation_strings.home + '</a> ' + translation_strings.place_pin_on_map);
+ } else {
+ $('#fms_pan_zoom').css({ top: '0.5em' });
}
$('span.report-a-problem-btn').on('click.reportBtn', function(){
$('html, body').animate({scrollTop:0}, 500);
@@ -123,16 +119,16 @@ $(function(){
if (cobrand == 'bromley') {
banner_text += '<span>Yellow pins show existing reports</span>';
}
- if (! is_small_map) {
+ if (! is_small_map && cobrand !== 'oxfordshire') {
$('#site-header').show();
banner_text = translation_strings.report_problem_heading;
}
- $('#fms_pan_zoom').css({ top: '4.75em !important' });
$('.big-green-banner')
.removeClass('mobile-map-banner')
.prependTo('#side')
.html(banner_text);
}
+ $('#fms_pan_zoom').css({ top: '4.75em' });
$('span.report-a-problem-btn').css({ cursor:'' }).off('.reportBtn');
}
last_type = type;
@@ -447,8 +443,6 @@ $.fn.drawer = function(id, ajax) {
var offset = -18 * 16;
if (cobrand == 'bromley') {
offset = -110;
- } else if (cobrand == 'oxfordshire') {
- offset = -110;
}
heightFix(window, '.content', offset, 1);
// in case we have a map that isn't full screen
diff --git a/web/cobrands/fixmystreet/fms-og_image.png b/web/cobrands/fixmystreet/fms-og_image.png
new file mode 100644
index 000000000..5bda935f8
--- /dev/null
+++ b/web/cobrands/fixmystreet/fms-og_image.png
Binary files differ
diff --git a/web/cobrands/fixmystreet/layout.scss b/web/cobrands/fixmystreet/layout.scss
index bc61f09e4..d7f4257c1 100644
--- a/web/cobrands/fixmystreet/layout.scss
+++ b/web/cobrands/fixmystreet/layout.scss
@@ -66,24 +66,31 @@ h3, h4 {
@import "_colours";
@import "../sass/layout";
-// Tiled main body background
-body {
- background: #1A1A1A url(/cobrands/fixmystreet/images/tile.jpg) 0 0 repeat;
- color: #fff;
-}
-
// Tiled background stripe, not plain colour
#front-main {
- background: $primary url(/cobrands/fixmystreet/images/tile-y.jpg);
+ background: $primary url(images/tile-y.jpg);
}
#main-nav {
+ ul#main-menu {
+ li {
+ a:hover {
+ @include background(linear-gradient(#000, #444 10%, #444 95%, #111));
+ }
+ }
+ }
ul#mysoc-menu {
- background: $primary url(/cobrands/fixmystreet/images/tile-y.jpg);
+ background: $primary url(images/tile-y.jpg);
}
}
.nav-wrapper {
.nav-wrapper-2 {
- @include border-image(url(/cobrands/fixmystreet/images/tile-y-border.jpg) 4 0 0 0);
+ @include border-image(url(images/tile-y-border.jpg) 4 0 0 0);
+ }
+}
+body.mappage {
+ .nav-wrapper {
+ .nav-wrapper-2 {
+ @include background(linear-gradient(#000, #222 10%, #222 90%, #000));
+ }
}
}
-
diff --git a/web/cobrands/hart/_colours.scss b/web/cobrands/hart/_colours.scss
new file mode 100644
index 000000000..ce47a17c4
--- /dev/null
+++ b/web/cobrands/hart/_colours.scss
@@ -0,0 +1,20 @@
+/* COLOURS */
+
+$hart_primary: #7ECBA2;
+
+$primary: $hart_primary;
+$col_click_map: $hart_primary;
+$col_click_map_dark: $hart_primary;
+$col_fixed_label_dark: $hart_primary;
+$col_fixed_label: $hart_primary;
+
+$primary_b: #000000;
+$primary_text: #ffffff;
+
+$base_bg: #ffffff;
+$base_fg: #1a1a1a;
+
+/* Unused here */
+$map_nav_bg: #222;
+$nav_fg: #fff;
+$nav_fg_hover: #444;
diff --git a/web/cobrands/hart/base.scss b/web/cobrands/hart/base.scss
new file mode 100644
index 000000000..c163f3fcd
--- /dev/null
+++ b/web/cobrands/hart/base.scss
@@ -0,0 +1,104 @@
+@import "../sass/h5bp";
+@import "./_colours";
+@import "../sass/mixins";
+@import "compass";
+
+@import "../sass/base";
+
+a, a:visited {
+ color: #369;
+ &:hover, &:active {
+ color: #369;
+ }
+}
+
+.issue-list-a {
+ li {
+ color:#666;
+ a {
+ color:#666;
+ }
+ }
+}
+
+h1.main {
+ color: $primary;
+ text-align: center;
+ margin: 0.5em 0;
+}
+
+.container {
+ padding: 0 1em 1em; /* if remove this 1em, need to edit .full-width! */
+}
+
+#site-header {
+ background: $primary;
+ height: 57px;
+
+
+ .mobile-header-nav {
+ height: 56px;
+ float: right;
+ li {
+ a, a:hover {text-decoration:none;}
+ list-style-type: none;
+ float: left;
+ div {
+ height: 57px;
+ width: 57px;
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ }
+ .home-icon { background-image: url('/cobrands/hart/home_mobile.png'); }
+ .search-icon { background-image: url('/cobrands/hart/search_mobile.png'); }
+ .menu-icon { background-image: url('/cobrands/hart/menu_mobile.png'); }
+ }
+ }
+}
+
+// Colour tab to match colour scheme
+#nav-link {
+ width: 50px;
+ height: 48px;
+ background: url('/cobrands/hart/tab-blue.png') 0 0 no-repeat;
+}
+
+#problems-nav {
+ border-bottom:0.25em solid $primary;
+ ul li a {
+ text-transform: none;
+ color: #666;
+ &.active {
+ background: $primary;
+ color: #fff;
+ }
+ }
+}
+
+.big-green-banner {
+ text-transform: none;
+ z-index: 0;
+}
+
+#form_sign_in {
+ margin-top: 1em;
+}
+
+#front-main {
+ /* default on mobile view, preventing jagged hart-green box */
+
+ margin: 0;
+ padding: 1em;
+
+ #postcodeForm {
+ padding: 1em;
+ div {
+ padding-top: 0px;
+ input#pc {
+ }
+ input#sub {
+ height: 100%;
+ }
+ }
+ }
+}
diff --git a/web/cobrands/hart/config.rb b/web/cobrands/hart/config.rb
new file mode 100644
index 000000000..cab97b18f
--- /dev/null
+++ b/web/cobrands/hart/config.rb
@@ -0,0 +1,25 @@
+# Require any additional compass plugins here.
+
+# Set this to the root of your project when deployed:
+http_path = "/"
+css_dir = ""
+sass_dir = ""
+images_dir = ""
+javascripts_dir = ""
+
+# You can select your preferred output style here (can be overridden via the command line):
+# output_style = :expanded or :nested or :compact or :compressed
+
+# To enable relative paths to assets via compass helper functions. Uncomment:
+# relative_assets = true
+
+# To disable debugging comments that display the original location of your selectors. Uncomment:
+# line_comments = false
+
+# If you prefer the indented syntax, you might want to regenerate this
+# project again passing --syntax sass, or you can uncomment this:
+# preferred_syntax = :sass
+# and then run:
+# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
+
+line_comments = false # by Compass.app
diff --git a/web/cobrands/hart/facebook-logo.png b/web/cobrands/hart/facebook-logo.png
new file mode 100755
index 000000000..931c39316
--- /dev/null
+++ b/web/cobrands/hart/facebook-logo.png
Binary files differ
diff --git a/web/cobrands/hart/favicon.ico b/web/cobrands/hart/favicon.ico
new file mode 100644
index 000000000..a960bae0a
--- /dev/null
+++ b/web/cobrands/hart/favicon.ico
Binary files differ
diff --git a/web/cobrands/hart/favicon.png b/web/cobrands/hart/favicon.png
new file mode 100644
index 000000000..0acd804e7
--- /dev/null
+++ b/web/cobrands/hart/favicon.png
Binary files differ
diff --git a/web/cobrands/hart/fms-logo.png b/web/cobrands/hart/fms-logo.png
new file mode 100644
index 000000000..23bea6b0f
--- /dev/null
+++ b/web/cobrands/hart/fms-logo.png
Binary files differ
diff --git a/web/cobrands/hart/gov-logo.png b/web/cobrands/hart/gov-logo.png
new file mode 100755
index 000000000..d5fc93455
--- /dev/null
+++ b/web/cobrands/hart/gov-logo.png
Binary files differ
diff --git a/web/cobrands/hart/hart-logo-inverse-small.gif b/web/cobrands/hart/hart-logo-inverse-small.gif
new file mode 100644
index 000000000..899567e6d
--- /dev/null
+++ b/web/cobrands/hart/hart-logo-inverse-small.gif
Binary files differ
diff --git a/web/cobrands/hart/hart-logo-mobile.png b/web/cobrands/hart/hart-logo-mobile.png
new file mode 100755
index 000000000..0c779121e
--- /dev/null
+++ b/web/cobrands/hart/hart-logo-mobile.png
Binary files differ
diff --git a/web/cobrands/hart/hart-logo.png b/web/cobrands/hart/hart-logo.png
new file mode 100755
index 000000000..7dd453c3e
--- /dev/null
+++ b/web/cobrands/hart/hart-logo.png
Binary files differ
diff --git a/web/cobrands/hart/hart.scss b/web/cobrands/hart/hart.scss
new file mode 100644
index 000000000..b2602a06e
--- /dev/null
+++ b/web/cobrands/hart/hart.scss
@@ -0,0 +1,475 @@
+/*
+
+ CARGO CULTED FROM BROMLEY FOR NOW
+
+ */
+
+@import "compass";
+@import "_colours";
+
+/* from http://nicolasgallagher.com/micro-clearfix-hack/ */
+.clearfix:before,
+.clearfix:after { content: " "; display: table; }
+.clearfix:after { clear: both; }
+/* For IE 6/7 only */
+.clearfix { *zoom: 1; }
+
+
+// Taken from Bromley's form css
+input[type=text],
+input[type=password],
+input[type=email],
+input[type=file],
+textarea,
+select { background: #fff; border: 1px solid #768b9a; border-color: #768b9a #d1dee8 #d1dee8 #768b9a; color: #333; font-family: "Gill Sans MT", "Gill Sans", Arial, 'Helvetica Neue', Helvetica, sans-serif; padding: 8px;
+@include border-radius(0); }
+
+.green-btn, button.green-btn, input.green-btn {
+ background: #5b7189;
+ border: 1px solid #8e9eb0;
+ color: #fff;
+ font-family: 'Gill Sans MT', 'Gill Sans', 'Trebuchet MS', Calibri, sans-serif;
+ font-weight: normal;
+ margin: 0; min-height: 23px;
+ /* outline: 1px solid #405062; */
+ padding: 4px 8px;
+ text-transform: uppercase;
+}
+.green-btn:hover, button.green-btn:hover, input.green-btn:hover {
+ background: #5b7189; border: 1px solid #8e9eb0;
+}
+.form-txt-submit-box input[type=submit] {
+ padding-top: 0; padding-bottom: 0; width: auto;
+}
+
+
+h1, h2, h3, h4, h5, h6, legend { font-family: 'Gill Sans MT', 'Gill Sans', 'Trebuchet MS', Calibri, sans-serif; }
+body { color: #333; font-family: "Gill Sans MT", "Gill Sans", Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 1.4; background-color: $base_bg;}
+
+.nav-wrapper-2,
+body.mappage .nav-wrapper .nav-wrapper-2,
+body.frontpage .nav-wrapper-2 {
+ border: 0;
+ border-top: solid 4px $hart_primary; /* otherwise overridden in base layout.scss
+ for some templates only */
+ min-height: auto;
+ background-color: $hart_primary;
+
+ @media only screen and (min-width:48em) {
+ height: 173px;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ body.frontpage #site-header {
+ height: 13em;
+
+ .mobile-header-nav {
+ display: none;
+ }
+ }
+
+ #skipped-map {
+ clear: both;
+ margin-top: 3em; /* required to push "Your Reports" visible on Safari/IE */
+ }
+
+ #main-nav {
+ margin-top: 106px;
+
+ ul {
+ margin-left: 157px;
+ float: none;
+ }
+ }
+
+ #main-nav ul li {
+ text-align: center;
+ text-transform: uppercase;
+ padding: 0 15px;
+ font-size: 16px;
+ border-right: solid 1px white;
+ line-height: 1.5em;
+ }
+
+ #main-nav ul li a {
+ padding: 0;
+ font-size: inherit;
+ }
+
+ #main-nav ul li:last-child {
+ border-right: none;
+ }
+
+ #main-nav ul li a:link, #main-nav ul li a:visited {
+ color: #fff;
+ }
+
+ #main-nav ul li:hover, #main-nav ul li:hover a, {
+ background-color: white;
+ color: black;
+ text-decoration: none;
+ }
+}
+
+@media only screen and (max-width: 61em) and (min-width: 48em) {
+ #main-nav {
+ padding-left: 0px;
+ float:none;
+ }
+}
+
+/* -------- For Google translate select box only */
+.header-nav div#google_translate_element .goog-te-gadget { font-family: "Gill Sans MT", Arial, 'Helvetica Neue', Helvetica, sans-serif; }
+.header-nav div#google_translate_element .goog-te-gadget .goog-te-combo { margin:5px 0 0 5px; padding:0 0 0 2px; background: #9b9b9b; color: #fff; border: 1px solid #606060; font-size: 12px; width: 138px;}
+.header-nav div#google_translate_element .goog-te-gadget .goog-te-combo option { background:#fff; color: #666; padding: 1px 0; margin: 0; }
+/* --- */
+
+body.frontpage #site-logo,
+#site-logo {
+ display: block;
+ background: url("/cobrands/hart/hart-logo-mobile.png") 0 0 no-repeat;
+ margin: 10px;
+ padding-left: 10px;
+ position: static;
+ @media only screen and (min-width: 48em) {
+ position: relative;
+ top: 1em;
+ margin: 0;
+ margin-left: 2.25em;
+ padding: 0;
+ background: url("/cobrands/hart/hart-logo.png") 0 0 no-repeat;
+ width: 123px;
+ height: 132px;
+ }
+}
+
+.sign-in {
+ display: none;
+}
+@media only screen and (min-width:48em) {
+ .sign-in {
+ display: block;
+ float:right;
+ margin-top:-87px;
+ height: 2em;
+ }
+}
+.sign-in a:link, .sign-in a:visited {color:#333; font-weight:bold; text-decoration:none;}
+.sign-in a:hover, .sign-in a:active {text-decoration:underline;}
+
+.main-menu-wrapper {
+ /* z-index:2; */
+ background-color: #FFF;
+ width:100%;
+ @media only screen and (min-width:48em) {
+ position: absolute;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ body.mappage .main-menu-wrapper {
+ position: fixed
+ }
+}
+
+.main-menu {
+
+ li {
+ font-family: 'Gill Sans MT', 'Gill Sans', 'Trebuchet MS', Calibri, sans-serif;
+ margin: 0;
+
+ span { display: none }
+
+ a {
+ padding: 0.5em 1em;
+ background: #f6f6f6;
+ color: #333;
+ font-size: 1.25em;
+ border-bottom: 0.25em solid #333;
+ display: block;
+
+ &:link, &:visited {
+ color: $hart_primary;
+ text-decoration: none;
+ }
+ &:hover {
+ background-color: $hart_primary;
+ color: #FFF;
+ }
+ }
+ }
+ @media only screen and (min-width:48em) {
+ margin-top: 173px;
+ height: 2em;
+ max-width: 60em;
+ margin: 173px auto 0 auto;
+
+ li {
+ float: left;
+ margin-left: 1em;
+ text-align: center;
+
+ span {
+ display: inline;
+ }
+
+ a {
+ padding: 0;
+ background: #fff;
+ color: #333;
+ font-size: 1em;
+ border-bottom: 0;
+ display: inline;
+
+ &:link, &:visited {
+ color: $hart_primary;
+ text-decoration: none;
+ }
+ &:hover {
+ background-color: #fff;
+ color: $hart_primary;
+ text-decoration: underline;
+ }
+ }
+ }
+ }
+}
+
+#front-main {
+ background-color: #FFF;
+
+ #front-main-container {
+ padding-bottom: 1em;
+ }
+}
+
+#postcode-intro {
+ background-color: #FFF;
+ color: $hart_primary;
+ padding-bottom: 1em;
+}
+
+.content,
+body.frontpage .table-cell .content {
+ margin-bottom: 2em;
+}
+
+.hart-footer-wrapper {
+
+ background-color: #4F5757;
+ clear: both;
+ height: auto;
+ overflow: hidden;
+ padding: 15px 15px 50px 15px;
+ color:#fff;
+
+ @media only screen and (min-width:48em) {
+ margin-left:-15px;
+ padding: 35px 25px 40px 25px;
+ }
+
+ #footer_outside_wrapper {
+ max-width: 60em;
+ margin: 0 auto;
+ #footer_inside_wrapper {
+ display: block;
+
+ #footer-right {
+ @media only screen and (min-width:48em) {
+ float: right;
+ width: 30%;
+ }
+
+ .region-footer-right {
+ float: left;
+ max-width: 319px;
+ }
+ }
+ #footer-images {
+ width: 50%;
+ text-align: right;
+ padding-bottom: 10px;
+ margin-bottom: 0px;
+ @media only screen and (min-width:48em) {
+ margin-top: 1.5em;
+ padding-bottom: 1em;
+ }
+ float: right!important;
+ text-decoration: none!important;
+ img {
+ margin-bottom: 5px;
+ }
+ a, a:hover, a:active {
+ text-decoration: none;
+ }
+ }
+ }
+ }
+ .footer_border {
+ display: block;
+ }
+ p {
+ margin: 0;
+ }
+ a:link, a:visited {
+ color: #fff; text-decoration: none;
+ }
+ a:hover, a:active {
+ text-decoration: underline;
+ }
+
+ footer#hart-footer {
+ margin-top: 0;
+
+ @media only screen and (min-width:48em) {
+ width: 70%;
+ float: left;
+ }
+ }
+
+ #copyright-block {
+ float: left;
+ margin-left: 1em;
+ }
+ #copyright-block-mobile {
+ margin-left: 10px;
+ }
+
+ #footer-row-2 {
+ margin-top: 2em;
+ }
+
+ .footer-nav, {
+ height:35px;
+
+ margin-left: 0;
+ margin-bottom: 0;
+
+ @media only screen and (min-width:48em) {
+ float: right;
+ }
+
+ li {
+ list-style-type: none;
+ float: left;
+ width: 50%;
+ margin-bottom: 0;
+
+ a {
+ display: block;
+ border-bottom:1px solid #797f7f;
+ padding: 10px 0;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+ @media only screen and (min-width:48em) {
+ border-right:1px solid #fff;
+ width: auto;
+ a {
+ border-bottom: none;
+ padding: 0 10px;
+ margin-left: 0;
+ margin-right: 0;
+ }
+ &:last-child {
+ border: none;
+ padding-right: 0;
+ }
+ }
+ }
+ }
+}
+
+// IE specific CSS
+.ie6 {
+ div { zoom: 1; }
+ .hart-wrapper { padding: 0; }
+ #hart-footer { margin: 0; }
+ //#search input { padding: 8px 5px 2px; }
+ //#search input.button { padding: 0; width: 68px; line-height: 24px; }
+ input.button { overflow: visible; width: 1%; }
+}
+.ie7 {
+ div { zoom: 1; }
+ //#search input { padding: 8px 5px 2px; }
+ //#search input.button { padding: 0; width: 68px; line-height: 24px; }
+ input.button { overflow: visible; }
+}
+.ie8 {
+ //#search input { padding: 8px 5px 2px; }
+ //#search input.button { padding: 0; line-height: 24px; }
+}
+
+// mySociety additions
+.hart-header {
+ font-size: 12px;
+ clear: both;
+}
+
+.header-nav ul {
+ margin: 0;
+}
+
+.header-nav li {
+ list-style-type: none;
+}
+
+.main-menu ul {
+ margin: 0;
+ padding-top: 8px;
+}
+
+.main-menu li {
+ list-style-type: none;
+ color: #000;
+}
+
+.main-menu li.last {
+ padding-right: 0;
+}
+
+.main-menu li.last a:hover, .main-menu li.last a:active {
+}
+
+//#search input { display: inline; margin: 0; @include border-radius(0em); }
+//#search input.button { font-weight: normal; text-transform: none; }
+// The footer breaks the map pages layout, easier to exclude it than
+// work out how to make it not be broken.
+body.mappage .hart-footer-wrapper {
+ display: none;
+}
+#hart-powered-by {
+ float: left;
+ width: 50%;
+ a {
+ margin-left: 10px;
+ }
+ @media only screen and (min-width:48em) {
+ a {
+ margin-left: 1em;
+ }
+ }
+ img {
+ float: none;
+ margin-top: 0;
+ }
+}
+
+.issue-list-a li .text small {
+ display: inline;
+}
+
+#fms_pan_zoom {
+ top: 12em;
+}
+
+#hart_hants_note {
+ background-color: lighten($hart_primary, 30%);
+ padding: 0.5em;
+ font-size: 0.8em;
+}
+
+.banner {
+ z-index: 1;
+}
diff --git a/web/cobrands/hart/home_mobile.png b/web/cobrands/hart/home_mobile.png
new file mode 100755
index 000000000..a0a568b3d
--- /dev/null
+++ b/web/cobrands/hart/home_mobile.png
Binary files differ
diff --git a/web/cobrands/hart/layout.scss b/web/cobrands/hart/layout.scss
new file mode 100644
index 000000000..99f8bdfcf
--- /dev/null
+++ b/web/cobrands/hart/layout.scss
@@ -0,0 +1,49 @@
+@import "_colours";
+@import "../sass/layout";
+
+@media only screen and (min-width: 48em) {
+ .content {
+ margin-top: 8em;
+ }
+ .header-container {
+ max-width: 60em;
+ margin: 0 auto;
+ padding: 0em;
+ position: relative;
+ }
+ body.mappage .content {
+ margin-top: 14em;
+ }
+
+ #front-main-container {
+ background-color: $hart_primary;
+ }
+ .hart-footer-wrapper {
+ display: block;
+ }
+}
+
+#report-a-problem-sidebar {
+ top: 14em;
+}
+
+body.twothirdswidthpage .content {
+ width: 30em;
+ aside {
+ left: 672px;
+ width: 208px;
+ padding: 16px;
+ @include box-shadow(none);
+ }
+ .sticky-sidebar {
+ left: 672px;
+ aside {
+ position: fixed;
+ top: 14em;
+ }
+ }
+}
+
+.content {
+ @include box-shadow(none);
+}
diff --git a/web/cobrands/hart/main-menu-hover-home-right.gif b/web/cobrands/hart/main-menu-hover-home-right.gif
new file mode 100644
index 000000000..80c11c782
--- /dev/null
+++ b/web/cobrands/hart/main-menu-hover-home-right.gif
Binary files differ
diff --git a/web/cobrands/hart/main-menu1.gif b/web/cobrands/hart/main-menu1.gif
new file mode 100644
index 000000000..21ab45668
--- /dev/null
+++ b/web/cobrands/hart/main-menu1.gif
Binary files differ
diff --git a/web/cobrands/hart/menu_mobile.png b/web/cobrands/hart/menu_mobile.png
new file mode 100755
index 000000000..61c1c0cf8
--- /dev/null
+++ b/web/cobrands/hart/menu_mobile.png
Binary files differ
diff --git a/web/cobrands/hart/position_map.js b/web/cobrands/hart/position_map.js
new file mode 100644
index 000000000..e5bc78c9a
--- /dev/null
+++ b/web/cobrands/hart/position_map.js
@@ -0,0 +1,21 @@
+function position_map_box() {
+ var $html = $('html');
+ if ($html.hasClass('ie6')) {
+ $('#map_box').prependTo('body').css({
+ zIndex: 0, position: 'absolute',
+ top: 250, left: 0, right: 0, bottom: 0,
+ width: '100%', height: $(window).height(),
+ margin: 0
+ });
+ } else {
+ $('#map_box').prependTo('body').css({
+ zIndex: 0, position: 'fixed',
+ top: 250, left: 0, right: 0, bottom: 0,
+ width: '100%', height: '100%',
+ margin: 0
+ });
+ }
+}
+
+function map_fix() {}
+var slide_wards_down = 0;
diff --git a/web/cobrands/hart/tab-blue.png b/web/cobrands/hart/tab-blue.png
new file mode 100644
index 000000000..62e6285b7
--- /dev/null
+++ b/web/cobrands/hart/tab-blue.png
Binary files differ
diff --git a/web/cobrands/hart/twitter-logo.png b/web/cobrands/hart/twitter-logo.png
new file mode 100755
index 000000000..7e10506e2
--- /dev/null
+++ b/web/cobrands/hart/twitter-logo.png
Binary files differ
diff --git a/web/cobrands/oxfordshire/_colours.scss b/web/cobrands/oxfordshire/_colours.scss
index eea046781..900f96d3d 100644
--- a/web/cobrands/oxfordshire/_colours.scss
+++ b/web/cobrands/oxfordshire/_colours.scss
@@ -7,6 +7,14 @@ $primary: $oxfordshire_lt_green;
$primary_b: $oxfordshire_dk_green;
$primary_text: #fff;
+$base_bg: #fff;
+$base_fg: #000;
+
+/* Unused here */
+$map_nav_bg: #222;
+$nav_fg: #fff;
+$nav_fg_hover: #444;
+
$col_click_map: $oxfordshire_lt_green;
$col_click_map_dark: $primary_text;
diff --git a/web/cobrands/oxfordshire/layout.scss b/web/cobrands/oxfordshire/layout.scss
index 8e6b9f227..ff7f9b373 100644
--- a/web/cobrands/oxfordshire/layout.scss
+++ b/web/cobrands/oxfordshire/layout.scss
@@ -1,11 +1,6 @@
@import "_colours";
@import "../sass/layout";
-body {
- background-color: #fff;
- background-image: none;
-}
-
body, body a {
font-family:"Trebuchet MS",Arial, Helvetica, sans-serif;
}
@@ -89,15 +84,14 @@ body.twothirdswidthpage {
// show the sidebar tips and notices in the document flow, i.e., in the
// left-hand column, rather than in smaller text above the map
-.general-sidebar-notes,
-#report-a-problem-sidebar {
- position: static;
- width: auto;
- @include box-shadow(rgba(0, 0, 0, 0), 0, 0, 0);
- .sidebar-tips,
- .sidebar-notes {
- font-size:1em;
- }
+.general-sidebar-notes {
+ position: static;
+ width: auto;
+ @include box-shadow(rgba(0, 0, 0, 0), 0, 0, 0);
+ .sidebar-tips,
+ .sidebar-notes {
+ font-size:1em;
+ }
}
// To prevent font size larger interfering with the fixed Oxfordshire layout
@@ -105,7 +99,10 @@ body.twothirdswidthpage {
.full-width { width: 464px; }
.shadow-wrap { width: 464px; }
-#map_box { width: 464px; }
+#map_box {
+ width: 956px;
+ height: 600px;
+}
.content { width: 432px; }
body.fullwidthpage .content { width: auto; }
@@ -123,6 +120,39 @@ body.twothirdswidthpage .content {
}
}
}
+
+body.mappage {
+ .content {
+ width: 345px;
+ padding: 1em;
+ position: relative;
+ z-index: 1;
+ }
+
+ .content, .ie7 .content, .ie9 .content {
+ margin: 3em 0 0 1em;
+ @include box-shadow(0px 0px 6px 1px #000);
+ }
+
+ .container {
+ width: auto;
+ min-height: 635px;
+ z-index: auto;
+ }
+ .full-width { width: 377px; }
+ .shadow-wrap { width: 377px; }
+
+ .general-sidebar-notes,
+ #report-a-problem-sidebar {
+ top: 1em;
+ left: 23.5em;
+ }
+
+ #forgotten-pw {
+ left: 21.6em;
+ }
+}
+
.ie6, .ie7 {
body.mappage .container {
width: 464px;
@@ -134,8 +164,9 @@ body.twothirdswidthpage .content {
#map_box {
border: solid 1px #999;
top: 1em;
- right: 0em;
- margin: 0;
+ right: 0;
+ left: 0;
+ margin: 0 1em;
}
// Perhaps fix map location (should be in central?)
@@ -154,8 +185,14 @@ body.twothirdswidthpage .content {
}
}
-#front-main #postcodeForm div {
+#oxford-wrapper #front-main #postcodeForm div {
border: 1px solid #fff; // because orange "Go" button (see below) abuts this border, looks a tiny bit better if it's not dark green
+
+ #pc {
+ padding: 0 2%;
+ width: 89%;
+ height: 38px;
+ }
}
// styled Oxfordshire buttons -- including the "Go" button on the postcode form -- to be orange:
@@ -180,16 +217,24 @@ input.green-btn{
cursor: pointer;
}
-// map instructions (click on 'details' to see details) are a specific requirement from OCC management
-// populated dynamically by position_map.js
-#occ-map-instructions {
- display: none;
- position: absolute;
- color: #666;
- margin: 0;
- p {
- padding: 0.5em;
+.big-green-banner {
+ text-align: left;
+ text-transform: inherit;
+ font-family: inherit;
+ font-size: 1.5em;
+ padding: 0.5em 2em 0.5em 0.5em;
+ line-height: 1.3;
+ background: #339e00 url("/cobrands/fixmystreet/images/sprite.png") right -2177px no-repeat;
+
+ .ie6 &, .ie7 & {
+ zoom: 1;
+ position: relative;
}
}
+.extra-text__image {
+ float: left;
+ margin-right: 1em;
+}
+
@import "oxfordshire";
diff --git a/web/cobrands/oxfordshire/position_map.js b/web/cobrands/oxfordshire/position_map.js
index c0e7e6399..9e299ea72 100644
--- a/web/cobrands/oxfordshire/position_map.js
+++ b/web/cobrands/oxfordshire/position_map.js
@@ -1,3 +1,9 @@
+/**
+ * Position the map box correctly on window resize.
+ *
+ * Called from fixmystreet.js when the window 'resize' event is fired
+ * and the page is transitioning to a desktop version.
+ */
function position_map_box() {
var $html = $('html');
var oxfordshire_right;
@@ -6,33 +12,17 @@ function position_map_box() {
} else {
oxfordshire_right = '0em';
}
-
- var map_box_width = 464;
- var map_box_height = 464;
+
+ var map_box_width = "956px";
+ var map_box_height = "600px";
// Do the same as CSS (in case resized from mobile).
- $('#map_box').prependTo('.content').css({
+ $('#map_box').prependTo('.wrapper').css({
zIndex: 1, position: 'absolute',
top: '1em', left: '', right: oxfordshire_right, bottom: '',
- width: map_box_width + 'px', height: map_box_height +'px',
- margin: 0
+ width: map_box_width, height: map_box_height,
+ margin: "0 1em"
});
- if($('#map_box').length) {
- if (! $('#occ-map-instructions').length) {
- $('#map_box').after("<div id='occ-map-instructions'><p>" +
- "Click on a pin and then on the &ldquo;details&rdquo; link to see an individual report detail.</p></div>");
- }
- var mb_y = $('#map_box').position().top + map_box_height ;
- $('#occ-map-instructions').show().css({
- left: '',
- right: oxfordshire_right,
- bottom: '',
- top: mb_y +'px',
- width: map_box_width
- });
- }
-
}
function map_fix() {}
var slide_wards_down = 1;
-
diff --git a/web/cobrands/sass/_base.scss b/web/cobrands/sass/_base.scss
index a7670b434..669b7c385 100644
--- a/web/cobrands/sass/_base.scss
+++ b/web/cobrands/sass/_base.scss
@@ -653,22 +653,14 @@ footer {
#footer-mobileapps {
@extend .full-width;
- padding:1em;
+ padding:1em 1em 0 1em;
h4 {
margin:0;
}
- ul {
- @include list-reset-soft;
- li {
- border-bottom:1px solid #AFAFAF;
- &:last-child {
- border-bottom:none;
- }
- a {
- display:block;
- padding:0.5em 0;
- }
- }
+ p {
+ font-size: 0.75em;
+ padding-bottom: 0;
+ border-bottom:1px solid #AFAFAF;
}
}
@@ -685,6 +677,7 @@ footer {
}
p {
font-size:0.75em;
+ margin-bottom: 0;
}
}
}
@@ -1018,11 +1011,10 @@ a:hover.button-left {
// Left and right so that zoom can be left, pan right.
#fms_pan_zoom {
right: 0.5em !important;
- top: 2.75em !important;
+ top: 0.5em;
left: 0.5em !important;
}
// The left and right of the above causes the navigation to move off-screen left in IE6.
-// XXX Need to check IE7
.ie6 #fms_pan_zoom {
left: auto !important;
}
diff --git a/web/cobrands/sass/_layout.scss b/web/cobrands/sass/_layout.scss
index 07f944ffa..781832609 100644
--- a/web/cobrands/sass/_layout.scss
+++ b/web/cobrands/sass/_layout.scss
@@ -12,8 +12,8 @@ $image-sprite: '/cobrands/fixmystreet/images/sprite.png' !default;
}
body {
- background: #1A1A1A;
- color: #fff;
+ color: $base_fg;
+ background: $base_bg;
}
/* The OpenLayers popup sets a background image with a white background without setting the CSS colours correctly. */
@@ -32,7 +32,6 @@ h1 {
padding: 0em;
width: 60em;
position: relative;
- z-index:1;
}
//z-index stack order gets reset to 0 in ie6/7 if you position anything,
@@ -138,7 +137,7 @@ h1 {
a,
span {
display: block;
- color:#fff;
+ color: $nav_fg;
background: none;
border-bottom: none;
}
@@ -150,8 +149,7 @@ h1 {
font-size: 0.9em;
}
a:hover{
- background:#444;
- @include background(linear-gradient(#000, #444 10%, #444 95%, #111));
+ background: $nav_fg_hover;
}
a.report-a-problem-btn {
color: $primary_text;
@@ -206,9 +204,7 @@ h1 {
// The narrow single column box
.content {
width: 27em;
- margin-top: 3em;
- margin-bottom: -1em;
- margin-left: 0.5em;
+ margin: 3em 0.5em -1em;
padding: 1em 1em 3em;
background: #fff;
color: #222;
@@ -219,7 +215,7 @@ h1 {
// If no box-shadow, just want a boring black border to stand it out from the map.
border: 1px solid #666;
//take off margins so we line up properly
- margin: 0 0 0 0.5em;
+ margin: 0 0.5em;
}
}
@@ -243,13 +239,15 @@ body.mappage {
.nav-wrapper{
.nav-wrapper-2{
position: fixed;
- background: #222;
- @include background(linear-gradient(#000, #222 10%, #222 90%, #000));
+ background: $map_nav_bg;
}
}
#site-logo{
position: fixed;
}
+ #user-meta {
+ max-width: none;
+ }
}
.ie6, .ie7 {
body.mappage {
@@ -268,6 +266,9 @@ body.mappage {
#site-logo {
position: absolute;
}
+ #user-meta {
+ margin-left: 2em;
+ }
}
}
//ie8 needs different stuff on .nav-wrapper so we
@@ -293,14 +294,17 @@ body.mappage {
// full width page
body.fullwidthpage {
.content {
- width: 57em;
- }
- .intro {
- width:40em;
+ width: auto;
}
}
// two thirds width page, also has option for a sidebar which can be sticky or not
body.twothirdswidthpage {
+ .container {
+ // This used to be on all containers, but there was a bug in Chrome, so now
+ // it's just here so that the sidebar links are still clickable with their
+ // negative z-index.
+ z-index: 1;
+ }
.content {
width:40em;
position: relative;
@@ -390,36 +394,8 @@ body.twothirdswidthpage {
color:#222;
margin-top:0;
}
- ul {
- @include list-reset;
- li {
- border-bottom:none;
- float:left;
- margin:0 1em 1em 0;
- a {
- color:#222;
- padding:0;
- width: 96px;
- height: 32px;
- margin:0 auto;
- text-indent: -999999px;
- background: url($image-sprite) -12px -3610px no-repeat;
- opacity: 0.8;
- &:hover {
- opacity: 1;
- }
- &.m-app-iphone {
- background-position: -12px -3610px;
- }
- &.m-app-droid {
- background-position: -12px -3756px;
- }
- &.m-app-nokia {
- background-position: -12px -3820px;
- width:74px;
- }
- }
- }
+ p {
+ border-bottom:none;
}
}
.ie6, .ie7 {
@@ -428,16 +404,6 @@ body.twothirdswidthpage {
margin-right:2%;
}
}
-.ie6 #footer-mobileapps ul li a {
- background:url(/cobrands/fixmystreet/images/ie_mobileapps.gif) -1px -1px no-repeat;
- &.m-app-droid {
- background-position: -1px -148px;
- }
- &.m-app-nokia {
- background-position: -1px -212px;
- width:74px;
- }
-}
#footer-help {
border-left:1em solid transparent;
@@ -477,11 +443,6 @@ body.twothirdswidthpage {
z-index:1;
}
-// Pull OpenLayers navigation down a bit
-#fms_pan_zoom {
- top: 4.75em !important;
-}
-
// push zoom back over to right
#fms_pan_zoom_zoomin {
left:auto !important;
@@ -534,12 +495,13 @@ body.twothirdswidthpage {
#user-meta{
display:block;
position: relative;
- max-width: 57em;
- margin:0 auto;
+ max-width: 60em;
+ margin: 0 auto;
p {
@include inline-block;
- position:absolute;
- top:1em;
+ position: absolute;
+ top: 1em;
+ left: 1em;
height:2em;
padding:0.25em 6em 0.5em 0.5em;
@include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px);
@@ -565,11 +527,10 @@ body.twothirdswidthpage {
}
}
.ie6 #user-meta {
- width:57em; //ie6 doesn't like max-width
+ width: 60em; //ie6 doesn't like max-width
}
-
// Wraps around #key-tools box - sticks to the bottom of the screen on desktop
.shadow-wrap {
position:fixed;
@@ -732,30 +693,30 @@ textarea.form-error {
@include border-radius(0 0 0.25em 0.25em);
}
+#report-a-problem-sidebar, .general-sidebar-notes {
+ position: absolute;
+ left: 29em;
+ width: 15em;
+ @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px);
+}
// Report a problem sidebar notes
#report-a-problem-sidebar {
- position:absolute;
- z-index:-1;//push behind .content, .container resets z-index for this
- left:29.5em;
top:5em;
- width:15em;
- @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px);
- .sidebar-tips {
- background:#eeeeee;
+ div {
padding:1em;
font-size:0.75em;
+ background:#eeeeee;
}
.sidebar-notes {
background:#333333;
- padding:1em;
color:#ffffff;
- font-size:0.75em;
}
}
.ie6, .ie7 {
#report-a-problem-sidebar, .general-sidebar-notes {
- left: 29em; // 0.5em left margin gone on .content in IE6/7, so reduce this accordingly.
+ left: 28.5em; // 0.5em left margin gone on .content in IE6/7, so reduce this accordingly.
+ z-index: 1;
}
}
@@ -772,11 +733,6 @@ textarea.form-error {
// More general sidebar notes
.general-sidebar-notes {
- position: absolute;
- left:29.5em;
- width:15em;
- z-index: -1; //push behind .content, .container resets z-index for this
- @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px);
p {
background:#eeeeee;
font-size:0.75em;
@@ -792,7 +748,7 @@ textarea.form-error {
/* Adjust the above so text flow can be different from display */
#forgotten-pw {
position: relative;
- left: 27em;
+ left: 26.5em;
top: -7em;
margin-bottom: -7em; // So no gap in main flow
}
@@ -802,7 +758,7 @@ textarea.form-error {
body.frontpage {
.table-cell {
.content {
- margin: 1em auto 0;
+ margin: 1em 0.5em 0;
}
}
.nav-wrapper-2{
@@ -820,8 +776,9 @@ body.frontpage {
#user-meta {
z-index:10;
p {
- top:-4em;
- right:0;
+ top: -4em;
+ left: auto;
+ right: 0;
color:$primary;
background:none;
@include box-shadow(rgba(0, 0, 0, 0) 0 0 0);
@@ -853,9 +810,6 @@ body.frontpage {
#site-logo {
top:-1em;
}
- #user-meta p {
- top:-2em;
- }
}
}
.ie6 body.frontpage #site-logo {
@@ -869,8 +823,8 @@ body.frontpage {
margin: 0;
padding: 1em;
#front-main-container {
- max-width: 57em;
- margin:0 auto;
+ max-width: 60em;
+ margin: 0 auto;
}
h2 {
font-style:normal;
@@ -1032,11 +986,109 @@ $button_bg_col: #a1a1a1; // also search bar (tables)
border: none;
padding: 3px 0.5em;
}
+ tr.is-deleted {
+ background-color: #ffdddd;
+ td.contact-category {
+ text-decoration: line-through;
+ }
+ }
+ }
+ .no-bullets {
+ margin-left: 0;
+ > li {
+ list-style: none;
+ }
+ }
+ .admin-box { // for delimiting forms, etc
+ border:1px solid #999;
+ padding:0.5em 1em;
+ margin:1.5em 0;
+ h2 { // only really want on first-child
+ margin-top: 0;
+ }
+ }
+ .fms-admin-warning, .fms-admin-info, .admin-hint, .admin-offsite-link {
+ display: none; // don't display admin-notes unless .show-admin-notes class is present
+ }
+ &.show-admin-notes {
+ .fms-admin-warning, .fms-admin-info, .admin-hint {
+ display: block;
+ }
+ .admin-offsite-link {
+ display: inline;
}
+ .fms-admin-warning, .fms-admin-info {
+ padding: 1em;
+ font-size: 90%;
+ border-style: solid;
+ border-width: 1px;
+ border-left-width: 1em;
+ margin-bottom: 1em;
+ }
+ .fms-admin-warning {
+ border-color: #f99;
+ background-color: #ffe1e1;
+ }
+ .fms-admin-info {
+ border-color: #9f9;
+ background-color: #e1ffe1;
+ }
+ .admin-open311-only {
+ border:1px solid #666;
+ padding:1em;
+ margin: 1em 0;
+ }
+ .admin-hint {
+ font-size: 80%; // little question marks are small
+ cursor: pointer;
+ display: block;
+ float:left;
+ overflow: hidden;
+ padding: 0.2em;
+ margin-right: 0.666em;
+ text-align: center;
+ color: #fff;
+ font-weight: bold;
+ background-color: #f93;
+ -moz-border-radius: 0.333em;
+ -webkit-border-radius: 0.333em;
+ border-radius: 0.333em;
+ p {
+ display:none;
+ }
+ &:before { content: "?" }
+ &.admin-hint-show {
+ font-size: 90%;
+ text-align: left;
+ display: block;
+ float:none;
+ margin:1em 0;
+ &:before { content: "" }
+ background-color: inherit !important;
+ p {
+ font-weight: normal;
+ display: block;
+ background-color: #ff9;
+ color: #000;
+ border-style: solid;
+ border-width: 1px;
+ border-left-width: 1em;
+ border-color: #f93;
+ padding:1em;
+ margin: 0;
+ }
+ }
+ }
+ .admin-offsite-link {
+ padding-right: 12px;
+ background-image: url(../../i/external-link.png);
+ background-position: right top;
+ background-repeat: no-repeat;
+ }
+ }
}
-
/* MEDIA QUERIES */
@media only screen and (min-width: 48em) and (max-width: 61em) {
.container {
@@ -1079,20 +1131,6 @@ $button_bg_col: #a1a1a1; // also search bar (tables)
top: 7em !important;
}
- //fix the left margin on login bit
- #user-meta {
- p {
- left:1em;
- }
- }
- body.frontpage {
- #user-meta {
- p {
- left:auto;
- }
- }
- }
-
//Map becomes percentage width
#map_box{
left: 32em;
@@ -1118,11 +1156,6 @@ $button_bg_col: #a1a1a1; // also search bar (tables)
margin: 0em -1em 0 -1em;
}
- //make fullpage auto width
- body.fullwidthpage .content {
- width: auto;
- }
-
//make twothirdswidthpage nearly as small as main
//.content: just enough to still fit the sidebar in
body.twothirdswidthpage {
diff --git a/web/cobrands/southampton/css/style.css b/web/cobrands/southampton/css/style.css
index cd4c0f490..8bdf19aa6 100644
--- a/web/cobrands/southampton/css/style.css
+++ b/web/cobrands/southampton/css/style.css
@@ -12,10 +12,10 @@ ul#topMenu {width:860px; height:15px; margin:13px auto 3px auto;}
ul#topMenu li {float:left; list-style-type:none;}
ul#topMenu a {padding:0 5px 2px 5px; font-size:0.9em; color:#000; font-weight:400;}
-#wrapper {width:960px; height:auto; margin:0 auto; background:url(bg-repeat.gif) repeat-y;}
-#header {width:100%; height:176px; background:url(bg-header.jpg) no-repeat; background-position:1px 0px;}
+#wrapper {width:960px; height:auto; margin:0 auto; background:url(../bg-repeat.gif) repeat-y;}
+#header {width:100%; height:176px; background:url(../bg-header.jpg) no-repeat; background-position:1px 0px;}
#header .logo {float:left; width:87px; height:81px; margin:25px 0 17px 46px;}
-#header a.siteTitle {height:27px; width:287px; background:url(logo.png) no-repeat; display:block; font-family:verdana; float:left; margin:60px 0 0 15px; text-indent:-9999px;}
+#header a.siteTitle {height:27px; width:287px; background:url(../logo.png) no-repeat; display:block; font-family:verdana; float:left; margin:60px 0 0 15px; text-indent:-9999px;}
a.mctv {float:right; height:37px; width:104px; margin:15px 7px 0 0;}
a.mctv img {border:none;}
@@ -24,25 +24,25 @@ a.mctv img {border:none;}
#searchWrap form {border:none; padding:0; margin:0 0 10px 0;}
#searchWrap fieldset {border:none; padding:0; margin:0;}
#searchWrap label {color:#1b4384; font-weight:700; font-size:1.1em; margin:0; padding:0;}
-#searchWrap input {float:left; background:url(bg-input.gif) repeat-x; margin:3px 0 0 0; line-height:16px; padding:3px 5px 3px 4px;}
-#searchWrap .button {background:url(bg-button.gif) repeat-x; margin:3px 0 0 5px; float:left; height:26px; padding:0 3px 4px 3px; color:#fff; border:none;}
+#searchWrap input {float:left; background:url(../bg-input.gif) repeat-x; margin:3px 0 0 0; line-height:16px; padding:3px 5px 3px 4px;}
+#searchWrap .button {background:url(../bg-button.gif) repeat-x; margin:3px 0 0 5px; float:left; height:26px; padding:0 3px 4px 3px; color:#fff; border:none;}
.moreInfo {margin:0 0 -2px 2px;}
.text {width:109px; color:#999;}
.text2 {width:137px; color:#999;}
-ul#topNav {width:870px; height:17px; background:#1b4384; clear:both; margin:0 auto; padding:3px 0 1px 0;}
-ul#topNav li {float:left; list-style-type:none; background:url(line.gif) no-repeat 0 2px;}
+ul#topNav {width:870px; height:40px; background:#1b4384; clear:both; margin:0 auto; padding:3px 0 1px 0;}
+ul#topNav li {float:left; list-style-type:none; background:url(../line.gif) no-repeat 0 2px;}
ul#topNav li:first-child {background:none;}
ul#topNav li a {color:#ffffff; font-size:1.2em; padding:0 7px 0 8px; font-size:1.2em; font-weight:400;}
p.atoz {float:left; margin:8px 0 0 43px; padding:5px 5px 3px 0; font-size:1.2em; border-bottom:1px solid #E0DBEF;}
-ul#atoz {width:485px; float:left; margin:13px 0 0 0; border-bottom:1px solid #E0DBEF; padding:0 0 1px 0;}
+ul#atoz {width:420px; float:left; margin:13px 0 0 0; border-bottom:1px solid #E0DBEF; padding:0 0 1px 0;}
ul#atoz li {list-style-type:none; display:inline;}
ul#atoz li a {font-size:13px; font-weight:400;}
ul#contacts {float:right; margin:13px 36px 0 0; padding:0;}
-ul#contacts li {float:left; list-style-type:none; background:url(blue-line.gif) no-repeat 0 2px;}
+ul#contacts li {float:left; list-style-type:none; background:url(../blue-line.gif) no-repeat 0 2px;}
ul#contacts li:first-child {background:none;}
ul#contacts li a {font-size:1.2em; padding:0 8px 0 10px; font-weight:400;}
@@ -54,12 +54,12 @@ ul#contacts li a {font-size:1.2em; padding:0 8px 0 10px; font-weight:400;}
#menuBar {width:200px; height:auto; float:left; margin:25px 0 0 43px; padding-bottom:25px; clear:both; }
-ul#leftMenu {height:auto; width:199px; float:left; background:#e9eef7 url(bg-box.gif) no-repeat -1px 100%; padding:0 0 10px 0; margin:5px 0 0 0; overflow:hidden;}
+ul#leftMenu {height:auto; width:199px; float:left; background:#e9eef7 url(../bg-box.gif) no-repeat -1px 100%; padding:0 0 10px 0; margin:5px 0 0 0; overflow:hidden;}
ul#leftMenu li {list-style-type:none; width:199px; padding:0;}
ul#leftMenu li a {display:block; width:100%; line-height:1.5em; padding:3px 10px 3px 32px; font-size:1.2em; font-weight:700;}
-ul#leftMenu li.parent {background:url(bulletActiveSG.gif) no-repeat #768eb5; background-position:10px 11px; color:#fff; padding:3px 0 3px 0;}
+ul#leftMenu li.parent {background:url(../bulletActiveSG.gif) no-repeat #768eb5; background-position:10px 11px; color:#fff; padding:3px 0 3px 0;}
ul#leftMenu li.parent a {color:#fff}
-ul#leftMenu li.selected {background:url(bullet.gif) no-repeat; background-position:10px 8px; color:#fff; padding:0;}
+ul#leftMenu li.selected {background:url(../bullet.gif) no-repeat; background-position:10px 8px; color:#fff; padding:0;}
/* ******* End of Left Menu Bar ******* */
@@ -75,7 +75,7 @@ ul#leftMenu li.selected {background:url(bullet.gif) no-repeat; background-positi
/* ******* Start of Footer ******* */
-#footer {width:100%; height:54px; clear:both; background:url(bg-footer.gif) no-repeat;}
+#footer {width:100%; height:54px; clear:both; background:url(../bg-footer.gif) no-repeat;}
a.accessInfo {float:left; height:32px; width:117px; margin:0 10px 0 43px;}
a.accessInfo img {border:none;}
diff --git a/web/cobrands/stevenage/_colours.scss b/web/cobrands/stevenage/_colours.scss
index 219f1066a..6b0d1bcdd 100644
--- a/web/cobrands/stevenage/_colours.scss
+++ b/web/cobrands/stevenage/_colours.scss
@@ -5,6 +5,13 @@ $primary: #066539;
$primary_b: $primary;
$primary_text: #fff;
+$base_bg: #dddddb;
+$base_fg: #222;
+
+$map_nav_bg: #6b6969;
+$nav_fg: #fff;
+$nav_fg_hover: #444;
+
$col_click_map: #00BD08;
$col_click_map_dark: #4B8304;
$col_fixed_label: #00BD08;
diff --git a/web/cobrands/stevenage/layout.scss b/web/cobrands/stevenage/layout.scss
index 91499c5a4..07429b302 100644
--- a/web/cobrands/stevenage/layout.scss
+++ b/web/cobrands/stevenage/layout.scss
@@ -4,11 +4,6 @@
// d523b431 - "Stevenage Home page styles"
// 2a23e09f - Moved menu on map page and reverted to full header.
-body {
- color: #222;
- background: #dddddb;
-}
-
// d523b431
.nav-wrapper{
.nav-wrapper-2{
@@ -60,9 +55,6 @@ body {
margin: 0;
@include border-radius(0.25em);
}
- a:hover {
- background: #444;
- }
a.report-a-problem-btn {
padding:0.5em 0.75em;
margin:0;
@@ -113,7 +105,6 @@ body.mappage {
width: 29em;
padding-top: 0.15em;
z-index: 0;
- background-color: #6b6969;
@include background(linear-gradient(#6b6969, #555454));
}
}
diff --git a/web/cobrands/zurich/_colours.scss b/web/cobrands/zurich/_colours.scss
index e2a2587f0..8ae175583 100644
--- a/web/cobrands/zurich/_colours.scss
+++ b/web/cobrands/zurich/_colours.scss
@@ -7,6 +7,15 @@ $primary: $zurich_blue;
$primary_b: $dark_blue;
$primary_text: #fff;
+$base_bg: #fff;
+$base_fg: #3c3c3c;
+
+$map_nav_bg: #fff;
+/* Unused here, main-nav is mobile only */
+$nav_fg: $primary_text;
+$nav_fg_hover: $primary/1.1;
+
+
$col_click_map: $zurich_blue;
$col_click_map_dark: darken($zurich_blue, 20%);
diff --git a/web/cobrands/zurich/_zurich.scss b/web/cobrands/zurich/_zurich.scss
index c9eb7a080..746da4ece 100644
--- a/web/cobrands/zurich/_zurich.scss
+++ b/web/cobrands/zurich/_zurich.scss
@@ -35,3 +35,12 @@ body.frontpage #zurich-footer-wrapper {
#zurich-footer a:hover {
color: #3c3c3c;
}
+
+#form_sign_in_yes {
+ .form-txt-submit-box {
+ clear: both;
+ div.form-error {
+ width: 61%;
+ }
+ }
+}
diff --git a/web/cobrands/zurich/layout.scss b/web/cobrands/zurich/layout.scss
index 0c42924d4..03f8b3143 100644
--- a/web/cobrands/zurich/layout.scss
+++ b/web/cobrands/zurich/layout.scss
@@ -4,11 +4,6 @@
// Things to override from parent stylesheet
-body {
- color: #3c3c3c;
- background-color: #fff;
-}
-
// White background, so no shadow or margin needed.
.content {
color: #3c3c3c;
@@ -37,6 +32,11 @@ body.mappage.admin .nav-wrapper-2 {
@include box-shadow(none);
}
+/* Fix positioning of images in the admin */
+body.admin .admin-nav-wrapper {
+ z-index: 1;
+}
+
// Different header and logo
#site-header .container {
height: 99px;
@@ -99,7 +99,6 @@ body.mappage {
.nav-wrapper {
.nav-wrapper-2 {
border-top: none;
- background: #fff;
height: 117px; // 99px+18px for padding
padding: 0 10px;
box-sizing: border-box;
@@ -150,19 +149,6 @@ body.mappage {
}
}
-#main-nav {
- ul#main-menu {
- li {
- a:hover {
- background: $primary/1.1;
- }
- span {
- color: $primary_text;
- }
- }
- }
-}
-
#zurich-main-nav {
margin: -1em -1em 1em -1em; // -1em spreads back out over content's 1em padding
padding: 0;
diff --git a/web/i/external-link.png b/web/i/external-link.png
new file mode 100644
index 000000000..8e8ba74bf
--- /dev/null
+++ b/web/i/external-link.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/blank.gif b/web/js/OpenLayers-2.13.1/img/blank.gif
new file mode 100644
index 000000000..4bcc753a1
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/blank.gif
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/cloud-popup-relative.png b/web/js/OpenLayers-2.13.1/img/cloud-popup-relative.png
new file mode 100755
index 000000000..c9fd4c411
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/cloud-popup-relative.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/drag-rectangle-off.png b/web/js/OpenLayers-2.13.1/img/drag-rectangle-off.png
new file mode 100644
index 000000000..382a81d9a
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/drag-rectangle-off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/drag-rectangle-on.png b/web/js/OpenLayers-2.13.1/img/drag-rectangle-on.png
new file mode 100644
index 000000000..2ed2d5b08
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/drag-rectangle-on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/east-mini.png b/web/js/OpenLayers-2.13.1/img/east-mini.png
new file mode 100644
index 000000000..ecedc5ef9
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/east-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/layer-switcher-maximize.png b/web/js/OpenLayers-2.13.1/img/layer-switcher-maximize.png
new file mode 100644
index 000000000..f346086b3
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/layer-switcher-maximize.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/layer-switcher-minimize.png b/web/js/OpenLayers-2.13.1/img/layer-switcher-minimize.png
new file mode 100644
index 000000000..b4aab0bf7
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/layer-switcher-minimize.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/marker-blue.png b/web/js/OpenLayers-2.13.1/img/marker-blue.png
new file mode 100644
index 000000000..f5b4efcfe
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/marker-blue.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/marker-gold.png b/web/js/OpenLayers-2.13.1/img/marker-gold.png
new file mode 100644
index 000000000..0b62f9618
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/marker-gold.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/marker-green.png b/web/js/OpenLayers-2.13.1/img/marker-green.png
new file mode 100644
index 000000000..c36b164b5
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/marker-green.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/marker.png b/web/js/OpenLayers-2.13.1/img/marker.png
new file mode 100644
index 000000000..ea3e59a56
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/marker.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/measuring-stick-off.png b/web/js/OpenLayers-2.13.1/img/measuring-stick-off.png
new file mode 100644
index 000000000..efbf63fb3
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/measuring-stick-off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/measuring-stick-on.png b/web/js/OpenLayers-2.13.1/img/measuring-stick-on.png
new file mode 100644
index 000000000..2d41c84e8
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/measuring-stick-on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/north-mini.png b/web/js/OpenLayers-2.13.1/img/north-mini.png
new file mode 100644
index 000000000..dfd7211ff
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/north-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/panning-hand-off.png b/web/js/OpenLayers-2.13.1/img/panning-hand-off.png
new file mode 100644
index 000000000..d1c593e1d
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/panning-hand-off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/panning-hand-on.png b/web/js/OpenLayers-2.13.1/img/panning-hand-on.png
new file mode 100644
index 000000000..9b7e0646d
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/panning-hand-on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/slider.png b/web/js/OpenLayers-2.13.1/img/slider.png
new file mode 100644
index 000000000..433536422
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/slider.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/south-mini.png b/web/js/OpenLayers-2.13.1/img/south-mini.png
new file mode 100644
index 000000000..2970875c4
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/south-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/west-mini.png b/web/js/OpenLayers-2.13.1/img/west-mini.png
new file mode 100644
index 000000000..363cd3d7b
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/west-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/zoom-minus-mini.png b/web/js/OpenLayers-2.13.1/img/zoom-minus-mini.png
new file mode 100644
index 000000000..8f0d77fff
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/zoom-minus-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/zoom-plus-mini.png b/web/js/OpenLayers-2.13.1/img/zoom-plus-mini.png
new file mode 100644
index 000000000..a73ab4e95
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/zoom-plus-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/zoom-world-mini.png b/web/js/OpenLayers-2.13.1/img/zoom-world-mini.png
new file mode 100644
index 000000000..aebf22d95
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/zoom-world-mini.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/img/zoombar.png b/web/js/OpenLayers-2.13.1/img/zoombar.png
new file mode 100644
index 000000000..47110ab3e
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/img/zoombar.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/google.css b/web/js/OpenLayers-2.13.1/theme/default/google.css
new file mode 100644
index 000000000..1b748ef3e
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/google.css
@@ -0,0 +1,9 @@
+.olLayerGoogleCopyright {
+ right: 3px;
+ bottom: 2px;
+ left: auto;
+}
+.olLayerGooglePoweredBy {
+ left: 2px;
+ bottom: 2px;
+}
diff --git a/web/js/OpenLayers-2.13.1/theme/default/google.tidy.css b/web/js/OpenLayers-2.13.1/theme/default/google.tidy.css
new file mode 100644
index 000000000..c0e07ace6
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/google.tidy.css
@@ -0,0 +1 @@
+.olLayerGoogleCopyright{right:3px;bottom:2px;left:auto;}.olLayerGooglePoweredBy{left:2px;bottom:2px;} \ No newline at end of file
diff --git a/web/js/OpenLayers-2.13.1/theme/default/ie6-style.css b/web/js/OpenLayers-2.13.1/theme/default/ie6-style.css
new file mode 100644
index 000000000..a0fd7c639
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/ie6-style.css
@@ -0,0 +1,10 @@
+.olControlZoomPanel div {
+ background-image: url(img/zoom-panel-NOALPHA.png);
+}
+.olControlPanPanel div {
+ background-image: url(img/pan-panel-NOALPHA.png);
+}
+.olControlEditingToolbar {
+ width: 200px;
+}
+
diff --git a/web/js/OpenLayers-2.13.1/theme/default/ie6-style.tidy.css b/web/js/OpenLayers-2.13.1/theme/default/ie6-style.tidy.css
new file mode 100644
index 000000000..7a23bbc78
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/ie6-style.tidy.css
@@ -0,0 +1 @@
+.olControlZoomPanel div{background-image:url(img/zoom-panel-NOALPHA.png);}.olControlPanPanel div{background-image:url(img/pan-panel-NOALPHA.png);}.olControlEditingToolbar{width:200px;} \ No newline at end of file
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/add_point_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_off.png
new file mode 100644
index 000000000..26c023309
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/add_point_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_on.png
new file mode 100644
index 000000000..1294a2c16
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/add_point_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/blank.gif b/web/js/OpenLayers-2.13.1/theme/default/img/blank.gif
new file mode 100644
index 000000000..4bcc753a1
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/blank.gif
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/close.gif b/web/js/OpenLayers-2.13.1/theme/default/img/close.gif
new file mode 100644
index 000000000..a8958de9b
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/close.gif
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-off.png b/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-off.png
new file mode 100644
index 000000000..382a81d9a
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-on.png b/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-on.png
new file mode 100644
index 000000000..2ed2d5b08
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/drag-rectangle-on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_off.png
new file mode 100644
index 000000000..a4d67b3b9
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_on.png
new file mode 100644
index 000000000..90dcf3e35
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_line_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_off.png
new file mode 100644
index 000000000..56334072a
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_on.png
new file mode 100644
index 000000000..fff50b7b0
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_point_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_off.png
new file mode 100644
index 000000000..917af3597
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_on.png
new file mode 100644
index 000000000..05a2cc5a8
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/draw_polygon_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/editing_tool_bar.png b/web/js/OpenLayers-2.13.1/theme/default/img/editing_tool_bar.png
new file mode 100644
index 000000000..5977856cf
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/editing_tool_bar.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_off.png
new file mode 100644
index 000000000..ed4472dd8
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_on.png
new file mode 100644
index 000000000..62226a2d7
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/move_feature_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/navigation_history.png b/web/js/OpenLayers-2.13.1/theme/default/img/navigation_history.png
new file mode 100644
index 000000000..84e348985
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/navigation_history.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/overview_replacement.gif b/web/js/OpenLayers-2.13.1/theme/default/img/overview_replacement.gif
new file mode 100644
index 000000000..a82cf5fc5
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/overview_replacement.gif
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel-NOALPHA.png b/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel-NOALPHA.png
new file mode 100644
index 000000000..698726884
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel-NOALPHA.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel.png b/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel.png
new file mode 100644
index 000000000..dfe67481c
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan-panel.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/pan_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/pan_off.png
new file mode 100644
index 000000000..30b2aed4d
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/pan_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/pan_on.png
new file mode 100644
index 000000000..e3953a824
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/pan_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-off.png b/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-off.png
new file mode 100644
index 000000000..d1c593e1d
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-on.png b/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-on.png
new file mode 100644
index 000000000..9b7e0646d
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/panning-hand-on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_off.png
new file mode 100644
index 000000000..76c8606f5
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_on.png
new file mode 100644
index 000000000..cc8d7b2c6
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/remove_point_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/ruler.png b/web/js/OpenLayers-2.13.1/theme/default/img/ruler.png
new file mode 100644
index 000000000..aa4883bcd
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/ruler.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/save_features_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/save_features_off.png
new file mode 100644
index 000000000..3d305b622
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/save_features_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/save_features_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/save_features_on.png
new file mode 100644
index 000000000..5640ae888
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/save_features_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/view_next_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_off.png
new file mode 100644
index 000000000..9149a2420
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/view_next_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_on.png
new file mode 100644
index 000000000..e41fb7bdd
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_next_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_off.png b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_off.png
new file mode 100644
index 000000000..8a9ef2179
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_off.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_on.png b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_on.png
new file mode 100644
index 000000000..c009c255e
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/view_previous_on.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel-NOALPHA.png b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel-NOALPHA.png
new file mode 100644
index 000000000..cdde6fc7e
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel-NOALPHA.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel.png b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel.png
new file mode 100644
index 000000000..c91a4ef3c
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/img/zoom-panel.png
Binary files differ
diff --git a/web/js/OpenLayers-2.13.1/theme/default/style.css b/web/js/OpenLayers-2.13.1/theme/default/style.css
new file mode 100644
index 000000000..cbed84e8c
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/style.css
@@ -0,0 +1,516 @@
+div.olMap {
+ z-index: 0;
+ padding: 0 !important;
+ margin: 0 !important;
+ cursor: default;
+}
+
+div.olMapViewport {
+ text-align: left;
+ -ms-touch-action: none;
+}
+
+div.olLayerDiv {
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.olLayerGoogleCopyright {
+ left: 2px;
+ bottom: 2px;
+}
+.olLayerGoogleV3.olLayerGoogleCopyright {
+ right: auto !important;
+}
+.olLayerGooglePoweredBy {
+ left: 2px;
+ bottom: 15px;
+}
+.olLayerGoogleV3.olLayerGooglePoweredBy {
+ bottom: 15px !important;
+}
+/* GMaps should not set styles on its container */
+.olForeignContainer {
+ opacity: 1 !important;
+}
+.olControlAttribution {
+ font-size: smaller;
+ right: 3px;
+ bottom: 4.5em;
+ position: absolute;
+ display: block;
+}
+.olControlScale {
+ right: 3px;
+ bottom: 3em;
+ display: block;
+ position: absolute;
+ font-size: smaller;
+}
+.olControlScaleLine {
+ display: block;
+ position: absolute;
+ 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 {
+ bottom: 0;
+ right: 3px;
+ display: block;
+ position: absolute;
+ font-family: Arial;
+ font-size: smaller;
+}
+
+.olControlOverviewMapContainer {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+}
+
+.olControlOverviewMapElement {
+ padding: 10px 18px 10px 10px;
+ background-color: #00008B;
+ -moz-border-radius: 1em 0 0 0;
+}
+
+.olControlOverviewMapMinimizeButton,
+.olControlOverviewMapMaximizeButton {
+ height: 18px;
+ width: 18px;
+ right: 0;
+ bottom: 80px;
+ cursor: pointer;
+}
+
+.olControlOverviewMapExtentRectangle {
+ 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%;
+ overflow:auto;
+ font-size:1.0em;
+}
+.olLayerGeoRSSClose {
+ float:right;
+ color:gray;
+ font-size:1.2em;
+ margin-right:6px;
+ font-family:sans-serif;
+}
+.olLayerGeoRSSTitle {
+ float:left;font-size:1.2em;
+}
+
+.olPopupContent {
+ padding:5px;
+ overflow: auto;
+}
+
+.olControlNavigationHistory {
+ background-image: url("img/navigation_history.png");
+ background-repeat: no-repeat;
+ width: 24px;
+ height: 24px;
+
+}
+.olControlNavigationHistoryPreviousItemActive {
+ background-position: 0 0;
+}
+.olControlNavigationHistoryPreviousItemInactive {
+ background-position: 0 -24px;
+}
+.olControlNavigationHistoryNextItemActive {
+ background-position: -24px 0;
+}
+.olControlNavigationHistoryNextItemInactive {
+ background-position: -24px -24px;
+}
+
+div.olControlSaveFeaturesItemActive {
+ background-image: url(img/save_features_on.png);
+ background-repeat: no-repeat;
+ background-position: 0 1px;
+}
+div.olControlSaveFeaturesItemInactive {
+ background-image: url(img/save_features_off.png);
+ background-repeat: no-repeat;
+ background-position: 0 1px;
+}
+
+.olHandlerBoxZoomBox {
+ border: 2px solid red;
+ position: absolute;
+ background-color: white;
+ opacity: 0.50;
+ font-size: 1px;
+ filter: alpha(opacity=50);
+}
+.olHandlerBoxSelectFeature {
+ border: 2px solid blue;
+ position: absolute;
+ background-color: white;
+ opacity: 0.50;
+ font-size: 1px;
+ filter: alpha(opacity=50);
+}
+
+.olControlPanPanel {
+ top: 10px;
+ left: 5px;
+}
+
+.olControlPanPanel div {
+ background-image: url(img/pan-panel.png);
+ height: 18px;
+ width: 18px;
+ cursor: pointer;
+ position: absolute;
+}
+
+.olControlPanPanel .olControlPanNorthItemInactive {
+ top: 0;
+ left: 9px;
+ background-position: 0 0;
+}
+.olControlPanPanel .olControlPanSouthItemInactive {
+ top: 36px;
+ left: 9px;
+ background-position: 18px 0;
+}
+.olControlPanPanel .olControlPanWestItemInactive {
+ position: absolute;
+ top: 18px;
+ left: 0;
+ background-position: 0 18px;
+}
+.olControlPanPanel .olControlPanEastItemInactive {
+ top: 18px;
+ left: 18px;
+ background-position: 18px 18px;
+}
+
+.olControlZoomPanel {
+ top: 71px;
+ left: 14px;
+}
+
+.olControlZoomPanel div {
+ background-image: url(img/zoom-panel.png);
+ position: absolute;
+ height: 18px;
+ width: 18px;
+ cursor: pointer;
+}
+
+.olControlZoomPanel .olControlZoomInItemInactive {
+ top: 0;
+ left: 0;
+ background-position: 0 0;
+}
+
+.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {
+ top: 18px;
+ left: 0;
+ background-position: 0 -18px;
+}
+
+.olControlZoomPanel .olControlZoomOutItemInactive {
+ top: 36px;
+ left: 0;
+ background-position: 0 18px;
+}
+
+/*
+ * When a potential text is bigger than the image it move the image
+ * with some headers (closes #3154)
+ */
+.olControlPanZoomBar div {
+ font-size: 1px;
+}
+
+.olPopupCloseBox {
+ background: url("img/close.gif") no-repeat;
+ cursor: pointer;
+}
+
+.olFramedCloudPopupContent {
+ padding: 5px;
+ overflow: auto;
+}
+
+.olControlNoSelect {
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.olImageLoadError {
+ background-color: pink;
+ opacity: 0.5;
+ filter: alpha(opacity=50); /* IE */
+}
+
+/**
+ * Cursor styles
+ */
+
+.olCursorWait {
+ cursor: wait;
+}
+.olDragDown {
+ cursor: move;
+}
+.olDrawBox {
+ cursor: crosshair;
+}
+.olControlDragFeatureOver {
+ cursor: move;
+}
+.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown {
+ cursor: -moz-grabbing;
+}
+
+/**
+ * Layer switcher
+ */
+.olControlLayerSwitcher {
+ position: absolute;
+ top: 25px;
+ right: 0;
+ width: 20em;
+ font-family: sans-serif;
+ font-weight: bold;
+ margin-top: 3px;
+ margin-left: 3px;
+ margin-bottom: 3px;
+ font-size: smaller;
+ color: white;
+ background-color: transparent;
+}
+
+.olControlLayerSwitcher .layersDiv {
+ padding-top: 5px;
+ padding-left: 10px;
+ padding-bottom: 5px;
+ padding-right: 10px;
+ background-color: darkblue;
+}
+
+.olControlLayerSwitcher .layersDiv .baseLbl,
+.olControlLayerSwitcher .layersDiv .dataLbl {
+ margin-top: 3px;
+ margin-left: 3px;
+ margin-bottom: 3px;
+}
+
+.olControlLayerSwitcher .layersDiv .baseLayersDiv,
+.olControlLayerSwitcher .layersDiv .dataLayersDiv {
+ padding-left: 10px;
+}
+
+.olControlLayerSwitcher .maximizeDiv,
+.olControlLayerSwitcher .minimizeDiv {
+ width: 18px;
+ height: 18px;
+ top: 5px;
+ right: 0;
+ cursor: pointer;
+}
+
+.olBingAttribution {
+ color: #DDD;
+}
+.olBingAttribution.road {
+ color: #333;
+}
+
+.olGoogleAttribution.hybrid, .olGoogleAttribution.satellite {
+ color: #EEE;
+}
+.olGoogleAttribution {
+ color: #333;
+}
+span.olGoogleAttribution a {
+ color: #77C;
+}
+span.olGoogleAttribution.hybrid a, span.olGoogleAttribution.satellite a {
+ color: #EEE;
+}
+
+/**
+ * Editing and navigation icons.
+ * (using the editing_tool_bar.png sprint image)
+ */
+.olControlNavToolbar ,
+.olControlEditingToolbar {
+ margin: 5px 5px 0 0;
+}
+.olControlNavToolbar div,
+.olControlEditingToolbar div {
+ background-image: url("img/editing_tool_bar.png");
+ background-repeat: no-repeat;
+ margin: 0 0 5px 5px;
+ width: 24px;
+ height: 22px;
+ cursor: pointer
+}
+/* positions */
+.olControlEditingToolbar {
+ right: 0;
+ top: 0;
+}
+.olControlNavToolbar {
+ top: 295px;
+ left: 9px;
+}
+/* layouts */
+.olControlEditingToolbar div {
+ float: right;
+}
+/* individual controls */
+.olControlNavToolbar .olControlNavigationItemInactive,
+.olControlEditingToolbar .olControlNavigationItemInactive {
+ background-position: -103px -1px;
+}
+.olControlNavToolbar .olControlNavigationItemActive ,
+.olControlEditingToolbar .olControlNavigationItemActive {
+ background-position: -103px -24px;
+}
+.olControlNavToolbar .olControlZoomBoxItemInactive {
+ background-position: -128px -1px;
+}
+.olControlNavToolbar .olControlZoomBoxItemActive {
+ background-position: -128px -24px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePointItemInactive {
+ background-position: -77px -1px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePointItemActive {
+ background-position: -77px -24px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePathItemInactive {
+ background-position: -51px -1px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePathItemActive {
+ background-position: -51px -24px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive{
+ background-position: -26px -1px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive {
+ background-position: -26px -24px;
+}
+
+div.olControlZoom {
+ position: absolute;
+ top: 8px;
+ left: 8px;
+ background: rgba(255,255,255,0.4);
+ border-radius: 4px;
+ padding: 2px;
+}
+div.olControlZoom a {
+ display: block;
+ margin: 1px;
+ padding: 0;
+ color: white;
+ font-size: 18px;
+ font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ text-decoration: none;
+ text-align: center;
+ height: 22px;
+ width:22px;
+ line-height: 19px;
+ background: #130085; /* fallback for IE - IE6 requires background shorthand*/
+ background: rgba(0, 60, 136, 0.5);
+ filter: alpha(opacity=80);
+}
+div.olControlZoom a:hover {
+ background: #130085; /* fallback for IE */
+ background: rgba(0, 60, 136, 0.7);
+ filter: alpha(opacity=100);
+}
+@media only screen and (max-width: 600px) {
+ div.olControlZoom a:hover {
+ background: rgba(0, 60, 136, 0.5);
+ }
+}
+a.olControlZoomIn {
+ border-radius: 4px 4px 0 0;
+}
+a.olControlZoomOut {
+ border-radius: 0 0 4px 4px;
+}
+
+
+/**
+ * Animations
+ */
+
+.olLayerGrid .olTileImage {
+ -webkit-transition: opacity 0.2s linear;
+ -moz-transition: opacity 0.2s linear;
+ -o-transition: opacity 0.2s linear;
+ transition: opacity 0.2s linear;
+}
+
+/* Turn on GPU support where available */
+.olTileImage {
+ -webkit-transform: translateZ(0);
+ -moz-transform: translateZ(0);
+ -o-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ -ms-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000;
+ -moz-perspective: 1000;
+ -ms-perspective: 1000;
+ perspective: 1000;
+}
+
+/* when replacing tiles, do not show tile and backbuffer at the same time */
+.olTileReplacing {
+ display: none;
+}
+
+/* override any max-width image settings (e.g. bootstrap.css) */
+img.olTileImage {
+ max-width: none;
+}
diff --git a/web/js/OpenLayers-2.13.1/theme/default/style.mobile.css b/web/js/OpenLayers-2.13.1/theme/default/style.mobile.css
new file mode 100644
index 000000000..92e7d00d4
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/style.mobile.css
@@ -0,0 +1,70 @@
+div.olControlZoom {
+ position: absolute;
+ top: 8px;
+ left: 8px;
+ background: rgba(255,255,255,0.4);
+ border-radius: 4px;
+ padding: 2px;
+}
+* {
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+div.olControlZoom a {
+ display: block;
+ margin: 1px;
+ padding: 0;
+ color: white;
+ font-size: 28px;
+ font-family: sans-serif;
+ font-weight: bold;
+ text-decoration: none;
+ text-align: center;
+ height: 32px;
+ width: 32px;
+ line-height: 28px;
+ text-shadow: 0 0 3px rgba(0,0,0,0.8);
+ background: #130085; /* fallback for IE - IE6 requires background shorthand*/
+ background: rgba(0, 60, 136, 0.5);
+ filter: alpha(opacity=80);
+}
+a.olControlZoomIn {
+ border-radius: 4px 4px 0 0;
+}
+a.olControlZoomOut {
+ border-radius: 0 0 4px 4px;
+}
+div.olControlZoom a:hover {
+ background: #130085; /* fallback for IE */
+ background: rgba(0, 60, 136, 0.7);
+ filter: alpha(opacity=100);
+}
+@media only screen and (max-width: 600px) {
+ div.olControlZoom a:hover {
+ background: rgba(0, 60, 136, 0.5);
+ }
+}
+div.olMapViewport {
+ -ms-touch-action: none;
+}
+.olLayerGrid .olTileImage {
+ -webkit-transition: opacity 0.2s linear;
+ -moz-transition: opacity 0.2s linear;
+ -o-transition: opacity 0.2s linear;
+ transition: opacity 0.2s linear;
+}
+/* Turn on GPU support where available */
+.olTileImage {
+ -webkit-transform: translateZ(0);
+ -moz-transform: translateZ(0);
+ -o-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ -ms-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000;
+ -moz-perspective: 1000;
+ -ms-perspective: 1000;
+ perspective: 1000;
+}
diff --git a/web/js/OpenLayers-2.13.1/theme/default/style.mobile.tidy.css b/web/js/OpenLayers-2.13.1/theme/default/style.mobile.tidy.css
new file mode 100644
index 000000000..bf7eeaf3d
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/style.mobile.tidy.css
@@ -0,0 +1 @@
+div.olControlZoom{position:absolute;top:8px;left:8px;background:rgba(255,255,255,0.4);border-radius:4px;padding:2px;}*{-webkit-tap-highlight-color:rgba(0,0,0,0);}div.olControlZoom a{display:block;color:#FFF;font-size:28px;font-family:sans-serif;font-weight:700;text-decoration:none;text-align:center;height:32px;width:32px;line-height:28px;text-shadow:0 0 3px rgba(0,0,0,0.8);background:rgba(0,60,136,0.5);filter:alpha(opacity=80);margin:1px;padding:0;}a.olControlZoomIn{border-radius:4px 4px 0 0;}a.olControlZoomOut{border-radius:0 0 4px 4px;}div.olControlZoom a:hover{background:rgba(0,60,136,0.7);filter:alpha(opacity=100);}div.olMapViewport{-ms-touch-action:none;}.olLayerGrid .olTileImage{-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear;}.olTileImage{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;perspective:1000;}@media only screen and max-width 600px{div.olControlZoom a:hover{background:rgba(0,60,136,0.5);}} \ No newline at end of file
diff --git a/web/js/OpenLayers-2.13.1/theme/default/style.tidy.css b/web/js/OpenLayers-2.13.1/theme/default/style.tidy.css
new file mode 100644
index 000000000..f973d450b
--- /dev/null
+++ b/web/js/OpenLayers-2.13.1/theme/default/style.tidy.css
@@ -0,0 +1 @@
+div.olMap{z-index:0;cursor:default;margin:0!important;padding:0!important;}div.olMapViewport{text-align:left;-ms-touch-action:none;}.olLayerGoogleCopyright{left:2px;bottom:2px;}.olLayerGoogleV3.olLayerGoogleCopyright{right:auto!important;}.olLayerGooglePoweredBy{left:2px;bottom:15px;}.olLayerGoogleV3.olLayerGooglePoweredBy{bottom:15px!important;}.olForeignContainer{opacity:1!important;}.olControlAttribution{font-size:smaller;right:3px;bottom:4.5em;position:absolute;display:block;}.olControlScale{right:3px;bottom:3em;display:block;position:absolute;font-size:smaller;}.olControlScaleLine{display:block;position:absolute;left:10px;bottom:15px;font-size:xx-small;}.olControlScaleLineBottom{border:solid 2px #000;border-bottom:none;margin-top:-2px;text-align:center;}.olControlScaleLineTop{border:solid 2px #000;border-top:none;text-align:center;}.olControlPermalink{right:3px;bottom:1.5em;display:block;position:absolute;font-size:smaller;}div.olControlMousePosition{bottom:0;right:3px;display:block;position:absolute;font-family:Arial;font-size:smaller;}.olControlOverviewMapContainer{position:absolute;bottom:0;right:0;}.olControlOverviewMapElement{background-color:#00008B;-moz-border-radius:1em 0 0;padding:10px 18px 10px 10px;}.olControlOverviewMapMinimizeButton,.olControlOverviewMapMaximizeButton{height:18px;width:18px;right:0;bottom:80px;cursor:pointer;}.olControlOverviewMapExtentRectangle{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%;overflow:auto;font-size:1em;}.olLayerGeoRSSClose{float:right;color:gray;font-size:1.2em;margin-right:6px;font-family:sans-serif;}.olLayerGeoRSSTitle{float:left;font-size:1.2em;}.olControlNavigationHistory{background-image:url(img/navigation_history.png);background-repeat:no-repeat;width:24px;height:24px;}.olControlNavigationHistoryPreviousItemActive{background-position:0 0;}.olControlNavigationHistoryPreviousItemInactive{background-position:0 -24px;}.olControlNavigationHistoryNextItemActive{background-position:-24px 0;}.olControlNavigationHistoryNextItemInactive{background-position:-24px -24px;}div.olControlSaveFeaturesItemActive{background-image:url(img/save_features_on.png);background-repeat:no-repeat;background-position:0 1px;}div.olControlSaveFeaturesItemInactive{background-image:url(img/save_features_off.png);background-repeat:no-repeat;background-position:0 1px;}.olHandlerBoxZoomBox{border:2px solid red;position:absolute;background-color:#FFF;opacity:.5;font-size:1px;filter:alpha(opacity=50);}.olHandlerBoxSelectFeature{border:2px solid blue;position:absolute;background-color:#FFF;opacity:.5;font-size:1px;filter:alpha(opacity=50);}.olControlPanPanel{top:10px;left:5px;}.olControlPanPanel div{background-image:url(img/pan-panel.png);height:18px;width:18px;cursor:pointer;position:absolute;}.olControlPanPanel .olControlPanNorthItemInactive{top:0;left:9px;background-position:0 0;}.olControlPanPanel .olControlPanSouthItemInactive{top:36px;left:9px;background-position:18px 0;}.olControlPanPanel .olControlPanWestItemInactive{position:absolute;top:18px;left:0;background-position:0 18px;}.olControlPanPanel .olControlPanEastItemInactive{top:18px;left:18px;background-position:18px 18px;}.olControlZoomPanel{top:71px;left:14px;}.olControlZoomPanel div{background-image:url(img/zoom-panel.png);position:absolute;height:18px;width:18px;cursor:pointer;}.olControlZoomPanel .olControlZoomInItemInactive{top:0;left:0;background-position:0 0;}.olControlZoomPanel .olControlZoomToMaxExtentItemInactive{top:18px;left:0;background-position:0 -18px;}.olControlZoomPanel .olControlZoomOutItemInactive{top:36px;left:0;background-position:0 18px;}.olControlPanZoomBar div{font-size:1px;}.olPopupCloseBox{background:url(img/close.gif) no-repeat;cursor:pointer;}.olImageLoadError{background-color:#FFC0CB;opacity:.5;filter:alpha(opacity=50);}.olCursorWait{cursor:wait;}.olDrawBox{cursor:crosshair;}.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown{cursor:0;}.olControlLayerSwitcher{position:absolute;top:25px;right:0;width:20em;font-family:sans-serif;font-weight:700;margin-top:3px;margin-left:3px;margin-bottom:3px;font-size:smaller;color:#FFF;background-color:transparent;}.olControlLayerSwitcher .layersDiv{background-color:#00008B;padding:5px 10px;}.olControlLayerSwitcher .layersDiv .baseLbl,.olControlLayerSwitcher .layersDiv .dataLbl{margin-top:3px;margin-left:3px;margin-bottom:3px;}.olControlLayerSwitcher .layersDiv .baseLayersDiv,.olControlLayerSwitcher .layersDiv .dataLayersDiv{padding-left:10px;}.olControlLayerSwitcher .maximizeDiv,.olControlLayerSwitcher .minimizeDiv{width:18px;height:18px;top:5px;right:0;cursor:pointer;}.olBingAttribution{color:#DDD;}span.olGoogleAttribution a{color:#77C;}.olControlNavToolbar,.olControlEditingToolbar{margin:5px 5px 0 0;}.olControlNavToolbar div,.olControlEditingToolbar div{background-image:url(img/editing_tool_bar.png);background-repeat:no-repeat;width:24px;height:22px;cursor:pointer;margin:0 0 5px 5px;}.olControlEditingToolbar{right:0;top:0;}.olControlNavToolbar{top:295px;left:9px;}.olControlEditingToolbar div{float:right;}.olControlNavToolbar .olControlNavigationItemInactive,.olControlEditingToolbar .olControlNavigationItemInactive{background-position:-103px -1px;}.olControlNavToolbar .olControlNavigationItemActive,.olControlEditingToolbar .olControlNavigationItemActive{background-position:-103px -24px;}.olControlNavToolbar .olControlZoomBoxItemInactive{background-position:-128px -1px;}.olControlNavToolbar .olControlZoomBoxItemActive{background-position:-128px -24px;}.olControlEditingToolbar .olControlDrawFeaturePointItemInactive{background-position:-77px -1px;}.olControlEditingToolbar .olControlDrawFeaturePointItemActive{background-position:-77px -24px;}.olControlEditingToolbar .olControlDrawFeaturePathItemInactive{background-position:-51px -1px;}.olControlEditingToolbar .olControlDrawFeaturePathItemActive{background-position:-51px -24px;}.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive{background-position:-26px -1px;}.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive{background-position:-26px -24px;}div.olControlZoom{position:absolute;top:8px;left:8px;background:rgba(255,255,255,0.4);border-radius:4px;padding:2px;}div.olControlZoom a{display:block;color:#FFF;font-size:18px;font-family:'Lucida Grande', Verdana, Geneva, Lucida, Arial, Helvetica, sans-serif;font-weight:700;text-decoration:none;text-align:center;height:22px;width:22px;line-height:19px;background:rgba(0,60,136,0.5);filter:alpha(opacity=80);margin:1px;padding:0;}div.olControlZoom a:hover{background:rgba(0,60,136,0.7);filter:alpha(opacity=100);}a.olControlZoomIn{border-radius:4px 4px 0 0;}a.olControlZoomOut{border-radius:0 0 4px 4px;}.olLayerGrid .olTileImage{-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear;}.olTileImage{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;perspective:1000;}.olTileReplacing{display:none;}img.olTileImage{max-width:none;}div.olLayerDiv,.olControlNoSelect{-khtml-user-select:none;-moz-user-select:none;}.olPopupContent,.olFramedCloudPopupContent{overflow:auto;padding:5px;}.olDragDown,.olControlDragFeatureOver{cursor:move;}.olBingAttribution.road,.olGoogleAttribution{color:#333;}.olGoogleAttribution.hybrid,.olGoogleAttribution.satellite,span.olGoogleAttribution.hybrid a,span.olGoogleAttribution.satellite a{color:#EEE;}@media only screen and max-width 600px{div.olControlZoom a:hover{background:rgba(0,60,136,0.5);}} \ No newline at end of file
diff --git a/web/js/OpenLayers.fixmystreet.google.js b/web/js/OpenLayers.fixmystreet.google.js
new file mode 100644
index 000000000..183497b2a
--- /dev/null
+++ b/web/js/OpenLayers.fixmystreet.google.js
@@ -0,0 +1,563 @@
+/*
+
+ OpenLayers.js -- OpenLayers Map Viewer Library
+
+ Copyright (c) 2006-2013 by OpenLayers Contributors
+ Published under the 2-clause BSD license.
+ See http://openlayers.org/dev/license.txt for the full text of the license,
+ and http://openlayers.org/dev/authors.txt for full list of contributors.
+
+ Includes compressed code under the following licenses:
+
+ (For uncompressed versions of the code used, please see the
+ OpenLayers Github repository: <https://github.com/openlayers/openlayers>)
+
+*/
+
+/**
+ * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
+ * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+/**
+ * OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
+ * Copyright (c) 2006, Yahoo! Inc. All rights reserved.
+ * Code licensed under the BSD License:
+ * http://developer.yahoo.com/yui/license.html
+ */
+var OpenLayers={VERSION_NUMBER:"Release 2.13.1",singleFile:!0,_getScriptLocation:function(){return "/js/OpenLayers-2.13.1/"},ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};
+OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}"function"==typeof window.Event&&b instanceof window.Event||!b.hasOwnProperty||!b.hasOwnProperty("toString")||(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},camelize:function(a){a=a.split("-");for(var b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\.+/),h=0;h<g.length;h++){0==h&&(f=b);if(void 0===f)break;
+f=f[g[h]]}"function"==typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\$\{([\w.]+?)\}/g,numberRegEx:/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a,b){var c=a;!0===b&&null!=a&&a.replace&&(a=a.replace(/^\s*|\s*$/g,""));return OpenLayers.String.isNumeric(a)?parseFloat(a):c}};
+OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");
+0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a}};
+OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};
+OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=
+a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+
+","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},
+getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+
+d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){if(a)switch(a.CLASS_NAME){case "OpenLayers.LonLat":this.extendXY(a.lon,a.lat);break;case "OpenLayers.Geometry.Point":this.extendXY(a.x,a.y);break;case "OpenLayers.Bounds":this.centerLonLat=null;if(null==this.left||a.left<this.left)this.left=a.left;if(null==this.bottom||a.bottom<this.bottom)this.bottom=
+a.bottom;if(null==this.right||a.right>this.right)this.right=a.right;if(null==this.top||a.top>this.top)this.top=a.top}},extendXY:function(a,b){this.centerLonLat=null;if(null==this.left||a<this.left)this.left=a;if(null==this.bottom||b<this.bottom)this.bottom=b;if(null==this.right||a>this.right)this.right=a;if(null==this.top||b>this.top)this.top=b},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};var c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),
+d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;a=OpenLayers.Util.toFloat(a);b=OpenLayers.Util.toFloat(b);var d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b=
+{inclusive:b});b=b||{};if(b.worldBounds){var c=this.wrapDateLine(b.worldBounds);a=a.wrapDateLine(b.worldBounds)}else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=
+a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,{inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c);a=this.contains(a.right,a.top,c);return b?
+d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,
+d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){b=b||{};var c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&c>a.left&&e.right-d>a.right&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});
+OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\s)"+b+"(\\s|$)").test(c)},
+addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\s+)"+b+"(\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){a=OpenLayers.Util.getElement(a);var c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];
+c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position")&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+
+OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});
+OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");
+return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};
+(function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),
+b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!(!a||1!==a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;0<=c;c--)a[c]==b&&a.splice(c,1);return a};
+OpenLayers.Util.indexOf=function(a,b){if("function"==typeof a.indexOf)return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};OpenLayers.Util.dotless=/\./g;
+OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){b&&(a.id=b.replace(OpenLayers.Util.dotless,"_"));c&&(a.style.left=c.x+"px",a.style.top=c.y+"px");d&&(a.style.width=d.w+"px",a.style.height=d.h+"px");e&&(a.style.position=e);f&&(a.style.border=f);g&&(a.style.overflow=g);0<=parseFloat(h)&&1>parseFloat(h)?(a.style.filter="alpha(opacity="+100*h+")",a.style.opacity=h):1==parseFloat(h)&&(a.style.filter="",a.style.opacity="")};
+OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var k=document.createElement("div");d&&(k.style.backgroundImage="url("+d+")");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(k,a,b,c,e,f,g,h);return k};
+OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var k=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(k,a,b,c,e,f,null,g);h&&(k.style.display="none",b=function(){k.style.display="";OpenLayers.Event.stopObservingElement(k)},OpenLayers.Event.observe(k,"load",b),OpenLayers.Event.observe(k,"error",b));k.style.alt=a;k.galleryImg="no";d&&(k.src=d);return k};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;
+OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(null==OpenLayers.Util.alphaHackNeeded){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=!1;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&5.5<=a&&7>a}return OpenLayers.Util.alphaHackNeeded};
+OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,k){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,k);b=a.childNodes[0];e&&(b.src=e);OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);OpenLayers.Util.alphaHack()&&("none"!=a.style.display&&(a.style.display="inline-block"),null==h&&(h="scale"),a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b.src+"', sizingMethod='"+h+"')",0<=parseFloat(a.style.opacity)&&1>parseFloat(a.style.opacity)&&
+(a.style.filter+=" alpha(opacity="+100*a.style.opacity+")"),b.style.filter="alpha(opacity=0)")};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,k){var l=OpenLayers.Util.createDiv();k=OpenLayers.Util.createImage(null,null,null,null,null,null,null,k);k.className="olAlphaImg";l.appendChild(k);OpenLayers.Util.modifyAlphaImageDiv(l,a,b,c,d,e,f,g,h);return l};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};
+OpenLayers.Util.applyDefaults=function(a,b){a=a||{};var c="function"==typeof window.Event&&b instanceof window.Event,d;for(d in b)if(void 0===a[d]||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];!c&&b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString")&&(a.toString=b.toString);return a};
+OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(null!=d&&"function"!=typeof d){if("object"==typeof d&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++)f=d[g],e.push(encodeURIComponent(null===f||void 0===f?"":f));d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(" "===d.pop()?b:d.length?"&"+b:"?"+b);return c};
+OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};
+OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;b||(b=a.textContent);b||(b=a.firstChild.nodeValue)},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&null!=c;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(a,b){null==b&&(b=OpenLayers.Util.DEFAULT_PRECISION);"number"!==typeof a&&(a=parseFloat(a));return 0===b?a:parseFloat(a.toPrecision(b))};
+OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return 180*a/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};
+OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),k=Math.sin(g),g=Math.cos(g),l=Math.sin(h),h=Math.cos(h),m=f,q=2*Math.PI,p=20;1E-12<Math.abs(m-q)&&0<--p;){var n=Math.sin(m),r=Math.cos(m),s=Math.sqrt(h*n*h*n+(g*l-k*h*r)*(g*l-k*h*r));if(0==s)return 0;var r=k*l+g*h*r,t=Math.atan2(s,r),u=Math.asin(g*h*
+n/s),v=Math.cos(u)*Math.cos(u),n=r-2*k*l/v,w=c/16*v*(4+c*(4-3*v)),q=m,m=f+(1-w)*c*Math.sin(u)*(t+w*s*(n+w*r*(-1+2*n*n)))}if(0==p)return NaN;d=v*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(t-c*s*(n+c/4*(r*(-1+2*n*n)-c/6*n*(-3+4*s*s)*(-3+4*n*n))))).toFixed(3)/1E3};
+OpenLayers.Util.destinationVincenty=function(a,b,c){var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon;a=a.lat;var k=d.rad(b);b=Math.sin(k);k=Math.cos(k);a=(1-h)*Math.tan(d.rad(a));var l=1/Math.sqrt(1+a*a),m=a*l,q=Math.atan2(a,k);a=l*b;for(var p=1-a*a,f=p*(f*f-g*g)/(g*g),n=1+f/16384*(4096+f*(-768+f*(320-175*f))),r=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*n),s=2*Math.PI;1E-12<Math.abs(f-s);)var t=Math.cos(2*q+f),u=Math.sin(f),v=Math.cos(f),w=r*u*(t+r/4*(v*(-1+2*t*t)-r/6*t*(-3+4*
+u*u)*(-3+4*t*t))),s=f,f=c/(g*n)+w;c=m*u-l*v*k;g=Math.atan2(m*v+l*u*k,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(u*b,l*v-m*u*k);k=h/16*p*(4+h*(4-3*p));t=b-(1-k)*h*a*(f+k*u*(t+k*v*(-1+2*t*t)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(t),d.deg(g))};
+OpenLayers.Util.getParameters=function(a,b){b=b||{};a=null===a||void 0===a?window.location.href:a;var c="";if(OpenLayers.String.contains(a,"?"))var d=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,c=a.substring(d,c);for(var d={},c=c.split(/[&;]/),e=0,f=c.length;e<f;++e){var g=c[e].split("=");if(g[0]){var h=g[0];try{h=decodeURIComponent(h)}catch(k){h=unescape(h)}g=(g[1]||"").replace(/\+/g," ");try{g=decodeURIComponent(g)}catch(l){g=unescape(g)}!1!==b.splitArgs&&(g=g.split(","));
+1==g.length&&(g=g[0]);d[h]=g}}return d};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a=null==a?"id_":a.replace(OpenLayers.Util.dotless,"_");OpenLayers.Util.lastSeqID+=1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.37,km:39370,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;
+OpenLayers.METERS_PER_INCH=0.0254000508001016;
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,
+Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/
+OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,
+Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,
+SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/
+OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,
+"us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return 1<a?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;a&&(null==b&&(b="degrees"),c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH));return c};
+OpenLayers.Util.getScaleFromResolution=function(a,b){null==b&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};
+OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&"absolute"==OpenLayers.Element.getStyle(a,"position")&&(""==a.style.top||""==a.style.left),e=null;if(a.getBoundingClientRect)a=a.getBoundingClientRect(),e=window.pageYOffset||c.scrollTop,b[0]=a.left+(window.pageXOffset||c.scrollLeft),b[1]=a.top+e;else if(document.getBoxObjectFor&&!d)a=document.getBoxObjectFor(a),c=document.getBoxObjectFor(c),
+b[0]=a.screenX-c.screenX,b[1]=a.screenY-c.screenY;else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;)b[0]+=e.offsetLeft,b[1]+=e.offsetTop,e=e.offsetParent;c=OpenLayers.BROWSER_NAME;if("opera"==c||"safari"==c&&"absolute"==OpenLayers.Element.getStyle(a,"position"))b[1]-=document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]-=e.scrollLeft;if("opera"!=c||"TR"!=e.tagName)b[1]-=e.scrollTop;e=e.offsetParent}}return b};
+OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;void 0==a&&(a="msie"==OpenLayers.BROWSER_NAME&&"CSS1Compat"!=document.compatMode?document.body:document.documentElement,arguments.callee.viewportElement=a);return a};
+OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:!0,ignorePort80:!0,ignoreHash:!0,splitArgs:!1});a=OpenLayers.Util.createUrlObject(a,c);b=OpenLayers.Util.createUrlObject(b,c);for(var d in a)if("args"!==d&&a[d]!=b[d])return!1;for(d in a.args){if(a.args[d]!=b.args[d])return!1;delete b.args[d]}for(d in b.args)return!1;return!0};
+OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\w+:\/\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;0===a.indexOf("/")?a=d+a:(c=c.pathname.split("/"),c.pop(),a=d+c.join("/")+"/"+a)}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?"80"==c.port||"0"==c.port?"":c.port:""==c.port||"0"==c.port?"80":c.port;d.hash=b.ignoreHash||"#"===
+c.hash?"":c.hash;var e=c.search;e||(e=a.indexOf("?"),e=-1!=e?a.substr(e):"");d.args=OpenLayers.Util.getParameters(e,{splitArgs:b.splitArgs});d.pathname="/"==c.pathname.charAt(0)?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=-1==b?-1!=c?a.substr(0,c):a:-1!=c?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return-1==a.indexOf("webkit")&&-1!=a.indexOf("gecko")}();
+OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();-1!=b.indexOf("opera")?a="opera":-1!=b.indexOf("msie")?a="msie":-1!=b.indexOf("safari")?a="safari":-1!=b.indexOf("mozilla")&&(a=-1!=b.indexOf("firefox")?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};
+OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=!1,k=null,l=g;l&&"body"!=l.tagName.toLowerCase();){var m=OpenLayers.Element.getStyle(l,"position");if("absolute"==m){h=!0;break}else if(m&&"static"!=m)break;l=l.parentNode}!h||0!==g.clientHeight&&0!==g.clientWidth||(k=document.createElement("div"),k.style.visibility="hidden",k.style.position="absolute",k.style.overflow=
+"visible",k.style.width=document.body.clientWidth+"px",k.style.height=document.body.clientHeight+"px",k.appendChild(f));f.style.position="absolute";b&&(b.w?(d=b.w,f.style.width=d+"px"):b.h&&(e=b.h,f.style.height=e+"px"));c&&c.displayClass&&(f.className=c.displayClass);b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes)for(a=0,c=b.childNodes.length;a<c;a++)b.childNodes[a].style&&(b.childNodes[a].style.overflow="visible");f.appendChild(b);k?g.appendChild(k):g.appendChild(f);
+d||(d=parseInt(b.scrollWidth),f.style.width=d+"px");e||(e=parseInt(b.scrollHeight));f.removeChild(b);k?(k.removeChild(f),g.removeChild(k)):g.removeChild(f);return new OpenLayers.Size(d,e)};
+OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(null==a){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);
+OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};
+OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");a=(a+540)%360-180;var d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round(10*((f-d)/(1/60))),f=f/10;60<=f&&(f-=60,d+=1,60<=d&&(d-=60,e+=1));10>e&&(e="0"+e);e+="\u00b0";0<=c.indexOf("dm")&&(10>d&&(d="0"+d),e+=d+"'",0<=c.indexOf("dms")&&(10>f&&(f="0"+f),e+=f+'"'));return e="lon"==b?e+(0>a?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(0>a?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&
+(this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?
+this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};
+OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=
+null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||
+this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a;var b=
+this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=
+a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});
+OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,
+hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,
+strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),
+this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length)for(f=!0,g=0,h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a);0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&
+(b.label=String(b.label));return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),!0!==a.stroke&&!0!==a.graphic||OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),
+!0!==a.fill&&!0!==a.graphic||OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));
+return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,
+c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\$\{\w+\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=
+OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};
+OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth();
+a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,
+d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/
+2)/c)*c}},drawGeometry:function(a,b,c){},drawText:function(a,b,c){},removeText:function(a){},clear:function(){},getFeatureIdFromEvent:function(a){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(a,b){},moveRoot:function(a){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);
+!1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};
+OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,
+0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){a=a.id;var b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;
+null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});
+OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){b=a.getZIndex(b);var d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};
+OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);
+this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);b&&(b.zIndexing||b.yOrdering)&&(this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering))},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&
+this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth();a=a.scale(1/f);f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(a,b){},drawGeometry:function(a,
+b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));!1==e&&(b=document.getElementById(a.id))&&(b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b));
+d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);
+this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c,d){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,
+b,c,null)},drawGeometryNode:function(a,b,c){c=c||a._style;var d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;
+case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(a){},drawPoint:function(a,b){},drawLineString:function(a,b){},drawLinearRing:function(a,b){},drawPolygon:function(a,b){},drawRectangle:function(a,b){},drawCircle:function(a,b){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},
+getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else(c=OpenLayers.Util.getElement(a.id))&&c.parentNode&&(c.geometry&&(c.geometry.destroy(),
+c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic&&(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c))},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(a,b){},createNode:function(a,b){},moveRoot:function(a){var b=this.root;a.root.parentNode==
+this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,
+arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},
+setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=
+"olv:shape"}return c},setStyle:function(a,b,c,d){b=b||a._style;c=c||a._options;var e=b.fillColor,f=b.title||b.graphicTitle;f&&(a.title=f);if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/
+g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(k+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];c.isFilled?
+(d||(d=this.createNode("olv:fill",a.id+"_fill")),d.opacity=b.fillOpacity,"OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",b.graphicWidth&&b.graphicHeight||(d.aspect="atmost")),d.parentNode!=a&&a.appendChild(d)):d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,k,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&
+(a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];c.isStroked?(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle&&(h.dashstyle=this.dashStyle(b))):(a.stroked=!1,h&&(h.on=!1));"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,d){d=
+d||a._style;var e=d.rotation||0,f,g;if(d.graphicWidth&&d.graphicHeight){g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var h=Math.round(d.graphicWidth||g*f),k=Math.round(d.graphicHeight||g);a.style.width=h+"px";a.style.height=k+"px";var l=document.getElementById(a.id+"_image");l||(l=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(l));l.style.width=h+"px";l.style.height=k+"px";l.src=d.externalGraphic;l.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='', sizingMethod='scale')";
+l=e*Math.PI/180;e=Math.sin(l);l=Math.cos(l);e="progid:DXImageTransform.Microsoft.Matrix(M11="+l+",M12="+-e+",M21="+e+",M22="+l+",SizingMethod='auto expand')\n";(l=d.graphicOpacity||d.fillOpacity)&&1!=l&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+l+")\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);h=(new OpenLayers.Bounds(0,0,h,k)).toGeometry();h.rotate(d.rotation,e);h=h.getBounds();a.style.left=Math.round(parseInt(a.style.left)+h.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-
+h.bottom)+"px"}else{var m=new Image;m.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==m.readyState||"interactive"==m.readyState)f=m.width/m.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);m.src=d.externalGraphic}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&(a.fillcolor=b);"none"==c&&a.strokecolor!=
+c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;
+default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+
+"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,
+b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,k=0;k<e;k++)g=b.components[k],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[k]=" "+h+","+g+" l ";b=c?" x e":" e";a.path="m"+f.join("")+b;return a},drawPolygon:function(a,b){this.setNodeDimension(a,b);var c=this.getResolution(),d=[],e,f,g,h,k,l,m,q,p,n;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;l=k=null;m=0;
+for(q=g.length;m<q;m++)p=g[m],n=(p.x-this.featureDx)/c-this.offset.x|0,p=p.y/c-this.offset.y|0,n=" "+n+","+p,d.push(n),0==m&&d.push(" l"),h||(k?k!=n&&(l?l!=n&&(h=!0):l=n):k=n);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+"px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+
+this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&(e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=
+b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||"cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=
+parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");
+a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);for(var d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});
+OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Util=OpenLayers.Util||{};
+OpenLayers.Util.vendorPrefix=function(){function a(a){return a?a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}).replace(/^ms-/,"-ms-"):null}function b(a,b){if(void 0===g[b]){var c,e=0,f=d.length,p="undefined"!==typeof a.cssText;for(g[b]=null;e<f;e++)if((c=d[e])?(p||(c=c.toLowerCase()),c=c+b.charAt(0).toUpperCase()+b.slice(1)):c=b,void 0!==a[c]){g[b]=c;break}}return g[b]}function c(a){return b(e,a)}var d=["","O","ms","Moz","Webkit"],e=document.createElement("div").style,f={},g={};return{css:function(b){if(void 0===
+f[b]){var d=b.replace(/(-[\s\S])/g,function(a){return a.charAt(1).toUpperCase()}),d=c(d);f[b]=a(d)}return f[b]},js:b,style:c,cssCache:f,jsCache:g}}();OpenLayers.Animation=function(a){var b=OpenLayers.Util.vendorPrefix.js(a,"requestAnimationFrame"),c=!!b,d=function(){var c=a[b]||function(b,c){a.setTimeout(b,16)};return function(b,d){c.apply(a,[b,d])}}(),e=0,f={};return{isNative:c,requestFrame:d,start:function(a,b,c){b=0<b?b:Number.POSITIVE_INFINITY;var l=++e,m=+new Date;f[l]=function(){f[l]&&+new Date-m<=b?(a(),f[l]&&d(f[l],c)):delete f[l]};d(f[l],c);return l},stop:function(a){delete f[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,minFrameRate:null,startTime:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.minFrameRate=d.minFrameRate||30;this.time=0;this.startTime=(new Date).getTime();OpenLayers.Animation.stop(this.animationId);this.animationId=null;
+this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");
+a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&((new Date).getTime()-this.startTime)/this.time<=1E3/this.minFrameRate&&this.callbacks.eachStep.call(this,a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};
+OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};
+OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();
+return this.bounds},calculateBounds:function(){},distanceTo:function(a,b){},getVertices:function(a){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):
+Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};
+OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point;c=c&&c.tolerance;var e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,k=a.y2-a.y1,l=b.y2-b.y1,m=b.x2-b.x1,q=l*h-m*k,l=m*g-l*f,g=h*g-k*f;0==q?0==l&&0==g&&(e=!0):(f=l/q,q=g/q,0<=f&&1>=f&&0<=q&&1>=q&&(d?(h=a.x1+f*h,q=a.y1+f*k,e=new OpenLayers.Geometry.Point(h,q)):e=!0));if(c)if(e){if(d)a:for(a=[a,b],b=0;2>b;++b)for(f=a[b],k=1;3>k;++k)if(h=f["x"+k],q=f["y"+k],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(q-e.y,2)),d<c){e.x=h;e.y=q;break a}}else a:for(a=
+[a,b],b=0;2>b;++b)for(h=a[b],q=a[(b+1)%2],k=1;3>k;++k)if(f={x:h["x"+k],y:h["y"+k]},g=OpenLayers.Geometry.distanceToSegment(f,q),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=OpenLayers.Geometry.distanceSquaredToSegment(a,b);c.distance=Math.sqrt(c.distance);return c};
+OpenLayers.Geometry.distanceSquaredToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,k=g-e,l=h-f,m=(k*(c-e)+l*(d-f))/(Math.pow(k,2)+Math.pow(l,2));0>=m||(1<=m?(e=g,f=h):(e+=m*k,f+=m*l));return{distance:Math.pow(e-c,2)+Math.pow(f-d,2),x:e,y:f,along:m}};OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());
+OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&null!=a.bottom&&null!=a.right&&null!=a.top&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<
+c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=
+this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&
+this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);isNaN(h)||isNaN(f.x)||isNaN(f.y)||(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var k=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,k+=f.y*h;return new OpenLayers.Geometry.Point(e/d,k/d)},getGeodesicLength:function(a){for(var b=0,c=
+0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,k=this.components.length;h<
+k&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(a&&a.CLASS_NAME&&this.CLASS_NAME==a.CLASS_NAME)if(OpenLayers.Util.isArray(a.components)&&a.components.length==this.components.length)for(var c=0,d=this.components.length;c<d;++c){if(!this.components[c].equals(a.components[c])){b=!1;break}}else b=!1;else b=!1;return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,
+b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof
+OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=c?{x0:e,y0:f,x1:g,y1:h,distance:d}:d):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){a*=
+Math.PI/180;var c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,
+a,b),this.bounds=null);return this},getVertices:function(a){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<
+f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments();a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments();
+var e,f,g,h,k,l,m,q=0,p=d.length;a:for(;q<p;++q){c=d[q];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var n=0,r=a.length;for(;n<r;++n){k=a[n];if(k.x1>f)break;if(!(k.x2<e||(l=k.y1,m=k.y2,Math.min(l,m)>Math.max(g,h)||Math.max(l,m)<Math.min(g,h)||!OpenLayers.Geometry.segmentsIntersect(c,k)))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:
+{x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],k=!1,l,m,q,p={point:!0,tolerance:d},n=null,r=0,s=f.length-2;r<=s;++r)if(d=f[r],g.push(d.clone()),l=f[r+1],m={x1:d.x,y1:d.y,x2:l.x,y2:l.y},m=OpenLayers.Geometry.segmentsIntersect(a,m,p),m instanceof OpenLayers.Geometry.Point&&((q=m.x===a.x1&&m.y===a.y1||m.x===a.x2&&m.y===a.y2||m.equals(d)||m.equals(l)?!0:!1)||c))m.equals(h[h.length-
+1])||h.push(m.clone()),0===r&&m.equals(d)||m.equals(l)||(k=!0,m.equals(d)||g.push(m),e.push(new OpenLayers.Geometry.LineString(g)),g=[m.clone()]);k&&(g.push(l.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var t=a.x1<a.x2?1:-1,u=a.y1<a.y2?1:-1,n={lines:e,points:h.sort(function(a,b){return t*a.x-t*b.x||u*a.y-u*b.y})};return n},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var k=this.getVertices(),l,m,q,p,n,r=[];g=[];for(var s=
+0,t=k.length-2;s<=t;++s){l=k[s];m=k[s+1];q={x1:l.x,y1:l.y,x2:m.x,y2:m.y};h=h||[a];d&&r.push(l.clone());for(var u=0;u<h.length;++u)if(p=h[u].splitWithSegment(q,b))if(n=p.lines,0<n.length&&(n.unshift(u,1),Array.prototype.splice.apply(h,n),u+=n.length-2),d)for(var v=0,w=p.points.length;v<w;++v)n=p.points[v],n.equals(l)||(r.push(n),g.push(new OpenLayers.Geometry.LineString(r)),r=n.equals(m)?[]:[n.clone()])}d&&0<g.length&&0<r.length&&(r.push(m.clone()),g.push(new OpenLayers.Geometry.LineString(r)))}else c=
+a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),
+h=a.x,k=a.y,l,m=0,q=g.length;m<q;++m)if(l=g[m],d=OpenLayers.Geometry.distanceToSegment(a,l),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(l.x2>h&&(k>l.y1&&k<l.y2||k<l.y1&&k>l.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:k}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),p,n,r=h.length,s={point:!0},m=0,q=g.length;a:for(;m<q;++m){k=g[m];l=k.x1;n=k.y1;for(var t=0;t<r;++t)if(d=h[t],p=OpenLayers.Geometry.segmentsIntersect(k,
+d,s)){f=0;e={distance:0,x0:p.x,y0:p.y,x1:p.x,y1:p.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:l,y:n},d),d.distance<f&&(f=d.distance,e={distance:f,x0:l,y0:n,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&k&&(d=a.distanceTo(new OpenLayers.Geometry.Point(k.x2,k.y2),b),m=c?d.distance:d,m<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:m))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();
+if(3>b.length)return this;var c=function(a,b,d,k){for(var l=0,m=0,q=b,p;q<d;q++){p=a[b];var n=a[d],r=a[q],r=Math.abs(0.5*(p.x*n.y+n.x*r.y+r.x*p.y-n.x*p.y-r.x*n.y-p.x*r.y));p=Math.sqrt(Math.pow(p.x-n.x,2)+Math.pow(p.y-n.y,2));p=2*(r/p);p>l&&(l=p,m=q)}l>k&&m!=b&&(e.push(m),c(a,b,m,k),c(a,m,d,k))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},
+CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();null==b&&a.equals(d)||(c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments));OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,
+arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,
+b);this.bounds=null}return this},getCentroid:function(){if(this.components){var a=this.components.length;if(0<a&&2>=a)return this.components[0].clone();if(2<a){var b=0,c=0,d=this.components[0].x,e=this.components[0].y,f=-1*this.getArea();if(0!=f){for(var g=0;g<a-1;g++)var h=this.components[g],k=this.components[g+1],b=b+(h.x+k.x-2*d)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e)),c=c+(h.y+k.y-2*e)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e));b=d+b/(6*f);a=e+c/(6*f)}else{for(g=0;g<a-1;g++)b+=this.components[g].x,c+=this.components[g].y;
+b/=a-1;a=c/(a-1)}return new OpenLayers.Geometry.Point(b,a)}return null}},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],
+e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){var b=OpenLayers.Number.limitSigDigs,c=b(a.x,14);a=b(a.y,14);for(var d=this.components.length-1,e,f,g,h,k,l=0,m=0;m<d;++m)if(e=this.components[m],g=b(e.x,14),e=b(e.y,14),f=this.components[m+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){l=-1;break}}else{k=b((a-f)*((h-g)/(f-e))+h,14);if(k==
+c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){l=-1;break}k<=c||g!=h&&(k<Math.min(g,h)||k>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++l}return-1==l?1:!!(l&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<
+d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<
+d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=
+this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b)for(c=0,d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}else for(c=0,d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,
+[a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Event={observers:!1,KEY_SPACE:32,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,
+b){b||OpenLayers.Event.preventDefault(a);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;"keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent)&&(b="keydown");
+this.observers||(this.observers={});if(!a._eventCacheID){var e="eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},
+_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){d=d||!1;a=OpenLayers.Util.getElement(a);var e=a._eventCacheID;"keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent)&&(b="keydown");var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var k=g[h];if(k.name==b&&k.observer==c&&k.useCapture==d){g.splice(h,
+1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};
+OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);
+OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=
+{};this._msTouches=[];null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(a){},attachToElement:function(a){this.element?
+OpenLayers.Event.stopObservingElement(this.element):(this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=!!window.navigator.msMaxTouchPoints,c,d=0,e=this.BROWSER_EVENTS.length;d<e;d++)c=this.BROWSER_EVENTS[d],OpenLayers.Event.observe(a,c,this.eventHandler),b&&0===c.indexOf("touch")&&this.addMsTouchListener(a,c,this.eventHandler);OpenLayers.Event.observe(a,"dragstart",
+OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&!this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,
+b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=
+a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&(d=c[e],d=d.func.apply(d.obj,[b]),void 0==d||!1!=d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=this.getTouchClientXY(c[h]),d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},getTouchClientXY:function(a){var b=window.olMockWin||
+window,c=b.pageXOffset,b=b.pageYOffset,d=a.clientX,e=a.clientY;if(0===a.pageY&&Math.floor(e)>Math.floor(a.pageY)||0===a.pageX&&Math.floor(d)>Math.floor(a.pageX))d-=c,e-=b;else if(e<a.pageY-b||d<a.pageX-c)d=a.pageX-c,e=a.pageY-b;a.olClientX=d;a.olClientY=e;return{clientX:d,clientY:e}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;this.element.offsets=null},getMousePosition:function(a){this.includeXY?this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",
+this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[window.pageXOffset||b.scrollLeft,window.pageYOffset||b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+this.element.scrolls[0]-
+this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},addMsTouchListener:function(a,b,c){function d(a){c(OpenLayers.Util.applyDefaults({stopPropagation:function(){for(var a=e.length-1;0<=a;--a)e[a].stopPropagation()},preventDefault:function(){for(var a=e.length-1;0<=a;--a)e[a].preventDefault()},type:b},a))}var e=this._msTouches;switch(b){case "touchstart":return this.addMsTouchListenerStart(a,b,d);case "touchend":return this.addMsTouchListenerEnd(a,
+b,d);case "touchmove":return this.addMsTouchListenerMove(a,b,d);default:throw"Unknown touch event type";}},addMsTouchListenerStart:function(a,b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerDown",function(a){for(var b=!1,g=0,h=d.length;g<h;++g)if(d[g].pointerId==a.pointerId){b=!0;break}b||d.push(a);a.touches=d.slice();c(a)});OpenLayers.Event.observe(a,"MSPointerUp",function(a){for(var b=0,c=d.length;b<c;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}})},addMsTouchListenerMove:function(a,
+b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerMove",function(a){if(a.pointerType!=a.MSPOINTER_TYPE_MOUSE||0!=a.buttons)if(1!=d.length||d[0].pageX!=a.pageX||d[0].pageY!=a.pageY){for(var b=0,g=d.length;b<g;++b)if(d[b].pointerId==a.pointerId){d[b]=a;break}a.touches=d.slice();c(a)}})},addMsTouchListenerEnd:function(a,b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerUp",function(a){for(var b=0,g=d.length;b<g;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}a.touches=
+d.slice();c(a)})},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);
+delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},ignore:function(a){var b=3,c=!1;do{if("a"===a.nodeName.toLowerCase()){c=!0;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",
+{buttonElement:c}),OpenLayers.Event.stop(a),b=!1}else if(this.startEvt){if(this.completeRegEx.test(a.type)){var b=OpenLayers.Util.pagePosition(c),d=OpenLayers.Util.getViewportElement(),e=window.pageYOffset||d.scrollTop;b[0]-=window.pageXOffset||d.scrollLeft;b[1]-=e;this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})}this.cancelRegEx.test(a.type)&&delete this.startEvt;OpenLayers.Event.stop(a);b=!1}this.startRegEx.test(a.type)&&
+(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else b=!this.ignore(OpenLayers.Event.element(a)),delete this.startEvt;return b}});OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;"object"==typeof Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),"object"==
+typeof Proj4js&&this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};
+OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};
+OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};
+OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{b=b.getCode();c=c.getCode();var d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};
+(function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;var b=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;a.y=Math.max(-2.003750834E7,Math.min(b,2.003750834E7));return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,p,n,r,s;g=0;for(p=d.length;g<p;++g)for(n=d[g],e(c,n,b),e(n,c,a),s=g+1;s<p;++s)r=d[s],e(n,r,f),e(r,n,f)}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857",
+"EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326","EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,
+maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!1,autoUpdateSize:!0,eventListeners:null,panTween:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,zoomTween:null,zoomMethod:OpenLayers.Easing.Quad.easeOut,zoomDuration:20,paddingForPopups:null,layerContainerOriginPx:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,
+OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+"theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);!this.maxExtent||this.maxExtent instanceof OpenLayers.Bounds||(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));
+!this.minExtent||this.minExtent instanceof OpenLayers.Bounds||(this.minExtent=new OpenLayers.Bounds(this.minExtent));!this.restrictedExtent||this.restrictedExtent instanceof OpenLayers.Bounds||(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));!this.center||this.center instanceof OpenLayers.LonLat||(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),
+this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});OpenLayers.TileManager&&null!==
+this.tileManager&&(this.tileManager instanceof OpenLayers.TileManager||(this.tileManager=new OpenLayers.TileManager(this.tileManager)),this.tileManager.addMap(this));c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.layerContainerOriginPx={x:0,y:0};this.applyTransform();this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);
+!0===this.autoUpdateSize&&(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==
+this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&
+this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,"unload",this.unloadDestroy);b&&b.layers&&(delete this.center,delete this.zoom,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom));this.panMethod&&(this.panTween=new OpenLayers.Tween(this.panMethod));this.zoomMethod&&this.applyTransform.transform&&
+(this.zoomTween=new OpenLayers.Tween(this.zoomMethod))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;this.panTween&&(this.panTween.stop(),this.panTween=null);this.zoomTween&&(this.zoomTween.stop(),
+this.zoomTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy&&OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);this.layers=null}this.viewPortDiv&&this.viewPortDiv.parentNode&&this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
+this.viewPortDiv=null;this.tileManager&&(this.tileManager.removeMap(this),this.tileManager=null);this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==
+typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=
+this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=
+"";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,
+b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",
+{map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):
+this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null==this.baseLayer||this.allOverlays||this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),
+!1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&
+(a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,
+a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();
+if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}this.events.triggerEvent("updatesize")},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,
+a.h=this.div.offsetHeight;if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&
+this.size&&(this.center=this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)0==a&&0==b||this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter());a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},
+panTo:function(a){if(this.panTween&&this.getExtent().scale(this.panRatio).containsLonLat(a)){var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(b){this.moveTo(a);this.dragging=!1;this.events.triggerEvent("moveend")},
+this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.zoomTween&&this.zoomTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,k=0;this.restrictedExtent&&(h=c,k=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-k&&f>=this.minPx.y+k?Math.round(b):0;if(a||b){this.dragging||(this.dragging=!0,this.events.triggerEvent("movestart"));
+this.center=null;a&&(this.layerContainerOriginPx.x-=a,this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerOriginPx.y-=b,this.minPx.y-=b,this.maxPx.y-=b);this.applyTransform();d=0;for(e=this.layers.length;d<e;++d)c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange)&&(c.moveByPx(a,b),c.events.triggerEvent("move"));this.events.triggerEvent("move")}},adjustZoom:function(a){if(this.baseLayer&&this.baseLayer.wrapDateLine){var b=this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;
+if(this.getResolutionForZoom(a)>c)if(this.fractionalZoom)a=this.getZoomForResolution(c);else for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}}return a},getMinZoom:function(){return this.adjustZoom(0)},moveTo:function(a,b,c){null==a||a instanceof OpenLayers.LonLat||(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));var d=b;b=this.adjustZoom(b);b!==d&&(a=this.getCenter());var d=c.dragging||this.dragging,e=c.forceZoomChange;this.getCachedCenter()||
+this.isValidLonLat(a)||(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&
+(a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart",{zoomChanged:e});f&&(!e&&this.center&&this.centerLayerContainer(a),
+this.center=a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerOriginPx.x=0;this.layerContainerOriginPx.y=0;this.applyTransform();var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,k=Math.round(f.getWidth()/a),l=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-k)/2-g/a,y:(this.size.h-l)/2-h/a};this.maxPx={x:this.minPx.x+
+Math.round(f.getWidth()/a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)f=this.layers[b],f===this.baseLayer||f.isBaseLayer||(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),
+g&&f.visibility&&(f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e})));this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=this.layerContainerOriginPx.x;a=this.layerContainerOriginPx.y;
+var e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.applyTransform(this.layerContainerOriginPx.x=e,this.layerContainerOriginPx.y=b);d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():
+null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=
+null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,
+b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a,b){var c=this;if(c.isValidZoomLevel(a))if(c.baseLayer.wrapDateLine&&(a=c.adjustZoom(a)),c.zoomTween){var d=c.getResolution(),e=c.getResolutionForZoom(a),f={scale:1},
+d={scale:d/e};c.zoomTween.playing&&c.zoomTween.duration<3*c.zoomDuration?c.zoomTween.finish={scale:c.zoomTween.finish.scale*d.scale}:(b||(e=c.getSize(),b={x:e.w/2,y:e.h/2}),c.zoomTween.start(f,d,c.zoomDuration,{minFrameRate:50,callbacks:{eachStep:function(a){var d=c.layerContainerOriginPx;a=a.scale;c.applyTransform(d.x+((a-1)*(d.x-b.x)|0),d.y+((a-1)*(d.y-b.y)|0),a)},done:function(a){c.applyTransform();a=c.getResolution()/a.scale;var d=c.getZoomForResolution(a,!0);c.moveTo(c.getZoomTargetCenter(b,
+a),d,!0)}}}))}else f=b?c.getZoomTargetCenter(b,c.getResolutionForZoom(a)):null,c.setCenter(f,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},
+zoomToMaxExtent:function(a){a=this.getMaxExtent({restricted:a?a.restricted:!0});this.zoomToExtent(a)},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*c/2,e=this.getCachedCenter(),d=new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c);this.zoomToExtent(d,b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=
+null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getZoomTargetCenter:function(a,b){var c=null,d=this.getSize(),e=d.w/2-a.x,d=a.y-d.h/2,f=this.getLonLatFromPixel(a);f&&(c=new OpenLayers.LonLat(f.lon+e*b,f.lat+d*b));return c},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):
+this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution();a=b.add(-c/2,0);var d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=null;null!=a&&(b=a.add(this.layerContainerOriginPx.x,this.layerContainerOriginPx.y));
+return b},getLayerPxFromViewPortPx:function(a){var b=null;null!=a&&(b=a.add(-this.layerContainerOriginPx.x,-this.layerContainerOriginPx.y),isNaN(b.x)||isNaN(b.y))&&(b=null);return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){a=this.getPixelFromLonLat(a);return this.getLayerPxFromViewPortPx(a)},applyTransform:function(a,b,c){c=c||1;var d=this.layerContainerOriginPx,e=1!==c;a=a||d.x;b=b||d.y;var f=this.layerContainerDiv.style,
+g=this.applyTransform.transform,h=this.applyTransform.template;if(void 0===g&&(g=OpenLayers.Util.vendorPrefix.style("transform"),this.applyTransform.transform=g)){var k=OpenLayers.Element.getStyle(this.viewPortDiv,OpenLayers.Util.vendorPrefix.css("transform"));k&&"none"===k||(h=["translate3d(",",0) ","scale3d(",",1)"],f[g]=[h[0],"0,0",h[1]].join(""));h&&~f[g].indexOf(h[0])||(h=["translate(",") ","scale(",")"]);this.applyTransform.template=h}null===g||"translate3d("!==h[0]&&!0!==e?(f.left=a+"px",f.top=
+b+"px",null!==g&&(f[g]="")):(!0===e&&"translate("===h[0]&&(a-=d.x,b-=d.y,f.left=d.x+"px",f.top=d.y+"px"),f[g]=[h[0],a,"px,",b,"px",h[1],h[2],c,",",c,h[3]].join(""))},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,
+numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};b=OpenLayers.Util.extend({},b);null!=this.alwaysInRange&&(b.alwaysInRange=this.alwaysInRange);this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,
+this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},
+getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),!a.maxExtent||a.maxExtent instanceof
+OpenLayers.Bounds||(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),!a.minExtent||a.minExtent instanceof OpenLayers.Bounds||(a.minExtent=new OpenLayers.Bounds(a.minExtent)));OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,
+e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&this.inRange&&this.visibility&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(a,b,c){a=this.visibility;this.isBaseLayer||
+(a=a&&this.inRange);this.display(a)},moveByPx:function(a,b){},setMap:function(a){null==this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),
+this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},removeMap:function(a){},getImageSize:function(a){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),
+this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=
+a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,b,c,d={},e=!0;a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.options.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<
+b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&
+(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=
+OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),
+c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&"number"!==typeof c&&null!=this.maxExtent&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;
+a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){var a=this.map.getZoom();return this.getResolutionForZoom(a)},
+getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize(),c=Math.max(a.getWidth()/c.w,a.getHeight()/c.h);return this.getZoomForResolution(c,b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom){var b=Math.floor(a),c=Math.ceil(a);a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c])}else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,
+b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=
+a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&(b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<
+d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter){var b=this.gutter*this.map.getResolution();a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+
+b,a.top+b)}this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var a=null;return a=this.sphericalMercator?this.map.calculateBounds():OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this)},getLonLatFromViewPortPx:function(a){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments)},getViewPortPxFromLonLat:function(a){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments)},initMercatorParameters:function(){this.RESOLUTIONS=[];for(var a=0;a<=this.MAX_ZOOM_LEVEL;++a)this.RESOLUTIONS[a]=
+156543.03390625/Math.pow(2,a);this.units="m";this.projection=this.projection||"EPSG:900913"},forwardMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,y:d},a,b);return new OpenLayers.LonLat(e.x,e.y)}}(),inverseMercator:function(){var a=new OpenLayers.Projection("EPSG:4326"),b=new OpenLayers.Projection("EPSG:900913");return function(c,d){var e=OpenLayers.Projection.transform({x:c,
+y:d},b,a);return new OpenLayers.LonLat(e.x,e.y)}}()};OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:!0,isBaseLayer:!0,isFixed:!0,pane:null,mapObject:null,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);null==this.pane&&(this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane"))},destroy:function(){this.pane=this.mapObject=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=
+parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";"msie"==OpenLayers.BROWSER_NAME&&(this.pane.style.background="url("+OpenLayers.Util.getImageLocation("blank.gif")+")");this.isFixed?this.map.viewPortDiv.appendChild(this.pane):this.map.layerContainerDiv.appendChild(this.pane);this.loadMapObject();null==this.mapObject&&this.loadWarningMessage()},removeMap:function(a){this.pane&&this.pane.parentNode&&this.pane.parentNode.removeChild(this.pane);
+OpenLayers.Layer.prototype.removeMap.apply(this,arguments)},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var a=this.map.getSize(),b=Math.min(a.w,300),c=Math.min(a.h,200),b=new OpenLayers.Size(b,c),a=(new OpenLayers.Pixel(a.w/2,a.h/2)).add(-b.w/2,-b.h/2),a=OpenLayers.Util.createDiv(this.name+"_warning",a,b,null,null,null,"auto");a.style.padding="7px";a.style.backgroundColor="yellow";a.innerHTML=this.getWarningHTML();this.div.appendChild(a)},getWarningHTML:function(){return""},
+display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display},setZIndex:function(a){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1},moveByPx:function(a,b){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);this.dragPanMapObject?this.dragPanMapObject(a,-b):this.moveTo(this.map.getCachedCenter())},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,
+arguments);if(null!=this.mapObject){var d=this.map.getCenter(),e=this.map.getZoom();if(null!=d){var f=this.getMapObjectCenter(),f=this.getOLLonLatFromMapObjectLonLat(f),g=this.getMapObjectZoom(),g=this.getOLZoomFromMapObjectZoom(g);d.equals(f)&&e==g||(!b&&f&&this.dragPanMapObject&&this.smoothDragPan?(e=this.map.getViewPortPxFromLonLat(f),d=this.map.getViewPortPxFromLonLat(d),this.dragPanMapObject(d.x-e.x,e.y-d.y)):(d=this.getMapObjectLonLatFromOLLonLat(d),e=this.getMapObjectZoomFromOLZoom(e),this.setMapObjectCenter(d,
+e,c)))}}},getLonLatFromViewPortPx:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(a=this.getMapObjectPixelFromOLPixel(a),a=this.getMapObjectLonLatFromMapObjectPixel(a),b=this.getOLLonLatFromMapObjectLonLat(a));return b},getViewPortPxFromLonLat:function(a){var b=null;null!=this.mapObject&&null!=this.getMapObjectCenter()&&(a=this.getMapObjectLonLatFromOLLonLat(a),a=this.getMapObjectPixelFromMapObjectLonLat(a),b=this.getOLPixelFromMapObjectPixel(a));return b},getOLLonLatFromMapObjectLonLat:function(a){var b=
+null;null!=a&&(b=this.getLongitudeFromMapObjectLonLat(a),a=this.getLatitudeFromMapObjectLonLat(a),b=new OpenLayers.LonLat(b,a));return b},getMapObjectLonLatFromOLLonLat:function(a){var b=null;null!=a&&(b=this.getMapObjectLonLatFromLonLat(a.lon,a.lat));return b},getOLPixelFromMapObjectPixel:function(a){var b=null;null!=a&&(b=this.getXFromMapObjectPixel(a),a=this.getYFromMapObjectPixel(a),b=new OpenLayers.Pixel(b,a));return b},getMapObjectPixelFromOLPixel:function(a){var b=null;null!=a&&(b=this.getMapObjectPixelFromXY(a.x,
+a.y));return b},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){for(var a=["minZoomLevel","maxZoomLevel","numZoomLevels"],b=0,c=a.length;b<c;b++){var d=a[b];this[d]=null!=this.options[d]?this.options[d]:this.map[d]}if(null==this.minZoomLevel||this.minZoomLevel<this.MIN_ZOOM_LEVEL)this.minZoomLevel=this.MIN_ZOOM_LEVEL;a=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;b=null==this.options.numZoomLevels&&null!=this.options.maxZoomLevel||null==this.numZoomLevels&&null!=this.maxZoomLevel?
+this.maxZoomLevel-this.minZoomLevel+1:this.numZoomLevels;this.numZoomLevels=null!=b?Math.min(b,a):a;this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(null!=this.RESOLUTIONS){a=0;this.resolutions=[];for(b=this.minZoomLevel;b<=this.maxZoomLevel;b++)this.resolutions[a++]=this.RESOLUTIONS[b];this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1]}},getResolution:function(){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getResolution.apply(this,
+arguments);var a=null,b=this.map.getSize(),c=this.getExtent();null!=b&&null!=c&&(a=Math.max(c.getWidth()/b.w,c.getHeight()/b.h));return a},getExtent:function(){var a=this.map.getSize(),b=this.getLonLatFromViewPortPx({x:0,y:0}),a=this.getLonLatFromViewPortPx({x:a.w,y:a.h});return null!=b&&null!=a?new OpenLayers.Bounds(b.lon,a.lat,a.lon,b.lat):null},getZoomForResolution:function(a){if(null!=this.resolutions)return OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments);var b=OpenLayers.Layer.prototype.getExtent.apply(this,
+[]);return this.getZoomForExtent(b)},getOLZoomFromMapObjectZoom:function(a){var b=null;null!=a&&(b=a-this.minZoomLevel,this.map.baseLayer!==this&&(b=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(b))));return b},getMapObjectZoomFromOLZoom:function(a){var b=null;null!=a&&(b=a+this.minZoomLevel,this.map.baseLayer!==this&&(b=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(b))));return b},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,6.866455078125E-4,3.4332275390625E-4,1.71661376953125E-4,8.58306884765625E-5,4.291534423828125E-5,2.145767211914062E-5,1.072883605957031E-5,5.36441802978515E-6,2.68220901489257E-6,1.341104507446289E-6,6.705522537231445E-7],
+type:null,wrapDateLine:!0,sphericalMercator:!1,version:null,initialize:function(a,b){b=b||{};b.version||(b.version="function"===typeof GMap2?"2":"3");var c=OpenLayers.Layer.Google["v"+b.version.replace(/\./g,"_")];if(c)OpenLayers.Util.applyDefaults(b,c);else throw"Unsupported Google Maps API version: "+b.version;OpenLayers.Util.applyDefaults(b,c.DEFAULTS);b.maxExtent&&(b.maxExtent=b.maxExtent.clone());OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[a,b]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,
+[a,b]);this.sphericalMercator&&(OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator),this.initMercatorParameters())},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions())},setVisibility:function(a){var b=null==this.opacity?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(b)},display:function(a){this._dragging||this.setGMapVisibility(a);OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments)},moveTo:function(a,
+b,c){this._dragging=c;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging},setOpacity:function(a){a!==this.opacity&&(null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"}),this.opacity=a);if(this.getVisibility()){var b=this.getMapContainer();OpenLayers.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}},destroy:function(){if(this.map){this.setGMapVisibility(!1);var a=OpenLayers.Layer.Google.cache[this.map.id];a&&1>=a.count&&
+this.removeGMapElements()}OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments)},removeGMapElements:function(){var a=OpenLayers.Layer.Google.cache[this.map.id];if(a){var b=this.mapObject&&this.getMapContainer();b&&b.parentNode&&b.parentNode.removeChild(b);(b=a.termsOfUse)&&b.parentNode&&b.parentNode.removeChild(b);(a=a.poweredBy)&&a.parentNode&&a.parentNode.removeChild(a);this.mapObject&&window.google&&google.maps&&google.maps.event&&google.maps.event.clearListeners&&google.maps.event.clearListeners(this.mapObject,
+"tilesloaded")}},removeMap:function(a){this.visibility&&this.mapObject&&this.setGMapVisibility(!1);var b=OpenLayers.Layer.Google.cache[a.id];b&&(1>=b.count?(this.removeGMapElements(),delete OpenLayers.Layer.Google.cache[a.id]):--b.count);delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments)},getOLBoundsFromMapObjectBounds:function(a){var b=null;null!=a&&(b=a.getSouthWest(),a=a.getNorthEast(),this.sphericalMercator?
+(b=this.forwardMercator(b.lng(),b.lat()),a=this.forwardMercator(a.lng(),a.lat())):(b=new OpenLayers.LonLat(b.lng(),b.lat()),a=new OpenLayers.LonLat(a.lng(),a.lat())),b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat));return b},getWarningHTML:function(){return OpenLayers.i18n("googleWarning")},getMapObjectCenter:function(){return this.mapObject.getCenter()},getMapObjectZoom:function(){return this.mapObject.getZoom()},getLongitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),
+a.lat()).lon:a.lng()},getLatitudeFromMapObjectLonLat:function(a){return this.sphericalMercator?this.forwardMercator(a.lng(),a.lat()).lat:a.lat()},getXFromMapObjectPixel:function(a){return a.x},getYFromMapObjectPixel:function(a){return a.y},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};
+OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},
+update:function(){},"delete":function(){},commit:function(){},abort:function(a){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});
+OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.ProxyHost="";OpenLayers.Request||(OpenLayers.Request={});
+OpenLayers.Util.extend(OpenLayers.Request,{DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==
+e.hostname,d=d[4],e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||b&&(a="function"==typeof b?b(a):b+encodeURIComponent(a));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});a=a||{};a.headers=a.headers||{};a=OpenLayers.Util.applyDefaults(a,b);a.headers=OpenLayers.Util.applyDefaults(a.headers,b.headers);var b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]=
+"XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,
+requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||
+200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);b.status&&(200>b.status||300<=b.status)&&(this.events.triggerEvent("failure",a),f&&f(b))},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=
+OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}});(function(){function a(){this._object=f&&!k?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)&&
+(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(k){}try{a.statusText=a._object.statusText}catch(u){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,k=h&&window.navigator.userAgent.match(/MSIE 7.0/);
+b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,k,p,n){delete this._headers;3>arguments.length&&(k=!0);this._async=k;var r=this,
+s=this.readyState,t;h&&k&&(t=function(){s!=b.DONE&&(e(r),r.abort())},window.attachEvent("onunload",t));b.onopen&&b.onopen.apply(this,arguments);4<arguments.length?this._object.open(a,f,k,p,n):3<arguments.length?this._object.open(a,f,k,p):this._object.open(a,f,k);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||k)r.readyState=r._object.readyState,d(r),r._aborted?r.readyState=b.UNSENT:(r.readyState==b.DONE&&(delete r._data,e(r),h&&k&&window.detachEvent("onunload",t)),
+s!=r.readyState&&c(r),s=r.readyState)}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);a&&a.nodeType&&(a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml,this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml"));this._data=a;a:if(this._object.send(this._data),g&&!this._async)for(this.readyState=b.OPENED,d(this);this.readyState<b.DONE;)if(this.readyState++,c(this),this._aborted)break a};
+b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);this.readyState>b.UNSENT&&(this._aborted=!0);this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){this._headers||(this._headers={});this._headers[a]=b;return this._object.setRequestHeader(a,b)};
+b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;(e=this._listeners[d])&&(e[0]!=a||e[1]!=b||e[2]!=c);d++);e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},
+initEvent:function(){}};"readystatechange"==a.type&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]!=a.type||c[2]||(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],
+b[4]);delete a.__func});OpenLayers.Request||(OpenLayers.Request={});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=
+function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});
+b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){b=OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({reqFeatures:a,
+requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){b=b||{};var c=b.url||a.url||this.options.url+"/"+a.fid;b=OpenLayers.Util.applyDefaults(b,this.options);var d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,
+d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){b=b||{};var c=b.url||a.url||this.options.url+"/"+a.fid;b=OpenLayers.Util.applyDefaults(b,this.options);var d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);
+return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;b&&b.documentElement||(b=a.responseText);return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=
+a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;r.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);n=n&&a.success();f++;f>=p&&b.callback&&(r.code=n?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[r]))}b=OpenLayers.Util.applyDefaults(b,this.options);var e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,k,l=[],m=0,q=a.length;m<q;++m)if(h=
+a[m],k=g[h.state])k.push(h),l.push(h);var p=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,n=!0,r=new OpenLayers.Protocol.Response({reqFeatures:l});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(m=h.length-1;0<=m;--m)e.push(this.update(h[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];
+for(m=h.length-1;0<=m;--m)e.push(this["delete"](h[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(a){throw Error("Read not implemented.");},write:function(a){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||"function"!=typeof JSON.parse||"function"!=typeof JSON.stringify)}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))&&(c=eval("("+a+")"),"function"===
+typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);
+return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,
+[a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),
+"]");return c.join("")},string:function(a){var b={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return/["\\\x00-\x1f]/.test(a)?'"'+a.replace(/([\x00-\x1f\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+'"':'"'+a+'"'},number:function(a){return isFinite(a)?String(a):"null"},"boolean":function(a){return String(a)},date:function(a){function b(a){return 10>a?"0"+a:a}return'"'+a.getFullYear()+
+"-"+b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+'"'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,
+arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&
+b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,
+b)},createDocumentFragment:function(){return this.xmldom?this.xmldom.createDocumentFragment():document.createDocumentFragment()},createTextNode:function(a){"string"!==typeof a&&(a=String(a));return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else{a=a.getElementsByTagName("*");for(var e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)"*"!=
+b&&b!=e.namespaceURI||d.push(e)}return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,c);else{a=a.attributes;for(var e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=
+d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){var b=!0;for(a=a.firstChild;a;a=a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},
+hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){b=b||{};var c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||
+(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=
+a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,
+b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if(!(b&&b!==(a.localName||a.nodeName.split(":").pop())||c&&c!==a.namespaceURI))break a;a=null;break a;case 3:if(/^\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==
+a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,
+b)}return c},getXMLDoc:function(){OpenLayers.Format.XML.document||this.xmldom||(document.implementation&&document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};
+OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=
+this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==
+typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},
+this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handlerOptions:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+
+"_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&
+this.handler.setMap(a)},draw:function(a){null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title&&(this.div.title=this.title));null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
+a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),
+!0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,
+keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;
+this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=
+null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=
+this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);this.disableFirefoxOverflowHack||"firefox"!=OpenLayers.BROWSER_NAME||(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;
+a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);this.autoSize||this.size||this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
+a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),
+c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class='"+this.contentDisplayClass+"'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,
+null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=
+a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML&&(this.contentDiv.innerHTML=
+this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImgLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),
+OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){a=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-
+d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-
+this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;a||(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,
+"padding-top")),this.div.parentNode==document.body&&(document.body.removeChild(this.div),this.div.style.display=""));return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,
+"touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);
+b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},
+scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(a){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";
+OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},
+moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);OpenLayers.Popup.prototype.moveTo.call(this,this.calculateNewPx(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if(this.lonlat&&this.map){var b=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(b)}},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);
+return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){a=a.offset(this.anchor.offset);var b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(a){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=
+1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,
+arguments)},setBackgroundColor:function(a){},setBorder:function(){},setOpacity:function(a){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=
+OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+
+"_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,k=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,l=isNaN(c.size.h)?this.size.h-(f+
+h):c.size.h;d.div.style.width=(0>k?0:k)+"px";d.div.style.height=(0>l?0:l)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,
+50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",
+"auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,
+0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,
+21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,
+0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");
+OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,touch:!1,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:
+0)|(a.metaKey?OpenLayers.Handler.MOD_META:0))==this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=this.touch=!1;return!0},startTouch:function(){if(!this.touch){this.touch=!0;
+for(var a="mousedown mouseup mousemove click dblclick mouseout".split(" "),b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]])}},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},
+destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.MOD_META=8;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},
+dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.preventDefault(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):
+(this.started=!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;!this.started||this.timeoutId||a.xy.x==this.last.x&&a.xy.y==this.last.y||(!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=
+document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy);return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(a){},move:function(a){},
+up:function(a){},out:function(a){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.startTouch();return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,
+this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(a){return this.start==this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=
+!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",
+this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=
+b},touchstart:function(a){this.startTouch();return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.preventDefault(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?!this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;
+this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==b;(this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer&&(this.feature=null);this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=
+null);this.feature?("touchstart"===b&&OpenLayers.Event.preventDefault(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):d&&!e||this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&(d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",
+[this.lastFeature]);return c},triggerCallback:function(a,b,c){if(b=this.EVENTMAP[a][b])"click"==a&&this.up&&this.down?(Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c),this.up=this.down=null):this.callback(b,c)},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);
+return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){"removelayer"!=a.type&&"order"!=a.property||this.moveLayerToTop()},moveLayerToTop:function(){var a=Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1;this.layer.setZIndex(a)},
+moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(a,b){},onDrag:function(a,b){},onComplete:function(a,b){},onEnter:function(a){},onLeave:function(a){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,
+up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&!this.over&&this.overFeature(a)&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=
+!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,
+this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*
+(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(a){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},
+cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=
+null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(a){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,
+c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x);a=Math.max(c.x,
+a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?
+(this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,
+"border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,zoomOnClick:!0,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b,c=a.getCenterPixel();if(this.out){b=Math.min(this.map.size.h/(a.bottom-a.top),this.map.size.w/(a.right-a.left));var d=this.map.getExtent(),e=this.map.getLonLatFromPixel(c),f=e.lon-d.getWidth()/
+2*b;a=e.lon+d.getWidth()/2*b;var g=e.lat-d.getHeight()/2*b;b=e.lat+d.getHeight()/2*b;b=new OpenLayers.Bounds(f,g,a,b)}else f=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(f.lon,f.lat,a.lon,a.lat);f=this.map.getZoom();g=this.map.getSize();a=g.w/2;g=g.h/2;b=this.map.getZoomForExtent(b);d=this.map.getResolution();e=this.map.getResolutionForZoom(b);d==e?this.map.setCenter(this.map.getLonLatFromPixel(c)):this.map.zoomTo(b,
+{x:(d*c.x-e*a)/(d-e),y:(d*c.y-e*g)/(d-e)});f==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(f+(this.out?-1:1))}else this.zoomOnClick&&(this.out?this.map.zoomTo(this.map.getZoom()-1,a):this.map.zoomTo(this.map.getZoom()+1,a))},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:0,documentDrag:!1,kinetic:null,enableKinetic:!0,kineticInterval:10,draw:function(){if(this.enableKinetic&&OpenLayers.Kinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},
+{interval:this.interval,documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,
+f){c.map.pan(a,b,{dragging:!f,animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,interval:0,maxDelta:Number.POSITIVE_INFINITY,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=
+!1,c=!1,d=!1,e=OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f,b=(f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"))&&"auto"==f||"scroll"==f}catch(g){}if(!c&&(c=OpenLayers.Element.hasClass(e,"olScrollable"),!c))for(var d=0,h=this.map.layers.length;d<h;d++){var k=this.map.layers[d];if(e==k.div||e==k.pane){c=!0;break}}d=e==this.map.div;e=e.parentNode}if(!b&&d){if(c)if(b=0,a.wheelDelta?(b=a.wheelDelta,0===b%160&&(b*=0.75),
+b/=120):a.detail&&(b=-(a.detail/Math.abs(a.detail))),this.delta+=b,window.clearTimeout(this._timeoutId),this.interval&&Math.abs(this.delta)<this.maxDelta){var l=OpenLayers.Util.extend({},a);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(l)},this),this.interval)}else this.wheelZoom(a);OpenLayers.Event.stop(a)}}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(a.xy=this.map.events.getMousePosition(a),0>b?this.callback("down",[a,this.cumulative?Math.max(-this.maxDelta,
+b):-1]):this.callback("up",[a,this.cumulative?Math.min(this.maxDelta,b):1]))},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,
+"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.startTouch();this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,a.lastTouches=this.last.touches,this.handleSingle(a),
+this.down=null);return!0},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a)&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",
+[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",
+[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.preventDefault(a),this.handleDouble(a)),this.last.touches&&2===this.last.touches.length||this.clearTimer()):(this.first=this.getEventInfo(a),a=this.single?OpenLayers.Util.extend({},a):null,this.queuePotentialClick(a)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,
+this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length){a=0;for(var c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=!1;break}}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,
+2))},passesDblclickTolerance:function(a){a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,
+e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.olClientX,clientY:d.olClientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;
+this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();
+this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,
+documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},OpenLayers.Util.extend(this.map.fractionalZoom?{}:{cumulative:!1,interval:50,maxDelta:6},this.mouseWheelOptions));OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},
+this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.zoomTo(this.map.zoom+1,a.xy)},defaultDblRightClick:function(a){this.map.zoomTo(this.map.zoom-1,a.xy)},wheelChange:function(a,b){this.map.fractionalZoom||(b=Math.round(b));var c=this.map.getZoom(),d;d=Math.max(c+b,0);d=Math.min(d,this.map.getNumZoomLevels());d!==c&&this.map.zoomTo(d,a.xy)},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,
+b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(a){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=
+a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,
+b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.renderer&&this.renderer.supported()||this.assignRenderer();this.renderer&&this.renderer.supported()||
+(this.renderer=null,this.displayError());this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),this.protocol=
+null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));a=OpenLayers.Layer.prototype.clone.apply(this,[a]);for(var b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&
+this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,
+arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(a){this.drawn=!1;if(this.strategies){var b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,
+arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+this.map.layerContainerOriginPx.x,e=-Math.round(e),d=d+this.map.layerContainerOriginPx.y,d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=d+"px";e=this.map.getExtent().scale(this.ratio);
+d=this.renderer.setExtent(e,b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d)for(this.drawn=!0,f=0,d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);var b=this.div.style.display;b!=this.renderer.root.style.display&&
+(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&
+(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&
+(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,e)&&OpenLayers.Util.removeItem(this.selectedFeatures,
+e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){a=!a||!a.silent;var b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=
+[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){b||a.state!==OpenLayers.State.DELETE||(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},
+eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];
+break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(a){},preFeatureInsert:function(a){},getDataExtent:function(){var a=null,b=this.features;if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&
+(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);
+this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,
+b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<
+c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},
+setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,
+b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==
+d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,
+b,c){var d=new Image,e=b.title||b.graphicTitle;e&&(d.title=e);var f=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,f=f?f:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*f),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),l=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),e=b[0],b=b[1];if(!isNaN(e)&&!isNaN(b)){var e=e+h|0,b=b+k|0,p=this.canvas;p.globalAlpha=l;var n=
+OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);p.drawImage(d,e*n,b*n,f*n,g*n);this.hitDetection&&(this.setHitContextStyle("fill",c),this.hitContext.fillRect(e,b,f,g))}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");
+if(!(!h.length||2>h.length||(a=this.getLocalXY(a),e=a[0],g=a[1],isNaN(e)||isNaN(g)))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();
+this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",
+b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],
+e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===
+a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);a="000000"+a.toString(16);var b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);
+"fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=
+this.getLocalXY(a);a=d[0];d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",
+c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,
+a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();d=this.getLocalXY(b[0]);var f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){a=a.components;var d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<
+d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");
+this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];
+null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.globalAlpha=b.labelOutlineOpacity||b.fontOpacity||1,this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];
+null==h&&(h=-0.5);g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var k=c[0]+h*this.canvas.mozMeasureText(e[g]),l=c[1]+g*d;this.canvas.translate(k,l);this.canvas.mozDrawText(e[g]);this.canvas.translate(-k,-l)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;
+this.canvas.clearRect(0,0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers_Feature_Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];
+this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=
+a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",
+"1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,
+"viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);
+this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,
+b,c){b=b||a._style;c=c||a._options;var d=b.title||b.graphicTitle;if(d){a.setAttributeNS(null,"title",d);var e=a.getElementsByTagName("title");0<e.length?e[0].firstChild.textContent=d:(e=this.nodeFactory(null,"title"),e.textContent=d,a.appendChild(e))}var e=parseFloat(a.getAttributeNS(null,"r")),d=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&e){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicWidth&&b.graphicHeight&&
+a.setAttributeNS(null,"preserveAspectRatio","none");var e=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),k=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",e);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,"xlink:href",
+b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+k);a.onclick=OpenLayers.Event.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var e=3*b.pointRadius,g=2*e,l=this.importSymbol(b.graphicName);f=this.getPosition(a);d=3*this.symbolMetrics[l.id][0]/g;h=a.parentNode;k=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(l.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",l.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,"width",
+g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-e);a.setAttributeNS(null,"y",f.y-e);k?h.insertBefore(a,k):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);e=b.rotation;void 0===e&&void 0===a._rotation||!f||(a._rotation=e,e|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+e+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[l.id],a.firstChild.setAttributeNS(null,"transform","rotate("+e+" "+f[1]+" "+f[2]+")")))}c.isFilled?(a.setAttributeNS(null,"fill",b.fillColor),
+a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*d),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,d))):a.setAttributeNS(null,"stroke","none");b.pointerEvents&&
+a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\s+/g,",")}},createNode:function(a,
+b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,b){return this.drawCircle(a,
+b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left;b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,
+"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,k=b.components.length;h<k;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,"x",
+d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;b.labelOutlineOpacity&&(e.fontOpacity=b.labelOutlineOpacity);delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/
+f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,
+"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,"font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",
+OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=b.label.split("\n"),k=h.length;f.childNodes.length>k;)f.removeChild(f.lastChild);for(var l=0;l<k;l++){var m=this.nodeFactory(a+d+"_tspan_"+l,"tspan");!0===b.labelSelect&&(m._featureId=a,m._geometry=c,m._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&m.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");m.setAttribute("x",e);if(0==l){var q=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==q&&
+(q=-0.5);m.setAttribute("dy",q*(k-1)+"em")}else m.setAttribute("dy","1em");m.textContent=""===h[l]?" ":h[l];m.parentNode||f.appendChild(m)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},
+clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,k;if(h<-d||h>d)k=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*k;if(c<-e||c>e)k=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*k;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left;a=this.top-a.y/b;return this.inValidRange(c,
+a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,"cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");a=this.nodeFactory(b,"symbol");var e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,
+0,0),f=[],g,h,k=0;k<d.length;k+=2)g=d[k],h=d[k+1],c.left=Math.min(c.left,g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,
+arguments);b||(b=a.target,b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){OpenLayers.Event.preventDefault(a)};OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=
+OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1;a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;
+b=this.matchCase||"string"!=typeof a||"string"!=typeof b?a==b:a.toUpperCase()==b.toUpperCase();break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=this.matchCase||"string"!=typeof a||"string"!=typeof b?a!=b:a.toUpperCase()!=b.toUpperCase();break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=
+a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a);break;case OpenLayers.Filter.Comparison.IS_NULL:b=null===a}return b},value2regex:function(a,b,c){if("."==a)throw Error("'.' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\"+(c?c:"!")+"(.|$)","g"),"\\$1");this.value=this.value.replace(RegExp("\\"+
+b,"g"),".");this.value=this.value.replace(RegExp("\\"+a,"g"),".*");this.value=this.value.replace(RegExp("\\\\.\\*","g"),"\\"+a);return this.value=this.value.replace(RegExp("\\\\\\.","g"),"\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\)?\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\)?\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\/g,"\\");return a=a.replace(/\.\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,
+this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Filter.Comparison.IS_NULL="NULL";OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\%");a=a.replace(/\\\\\.(\*)?/g,function(a,b){return b?a:"\\\\_"});a=a.replace(/\\\\\.\*/g,"\\\\%");a=a.replace(/(\\)?\.(\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\)?\.\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\./g,".");return a=a.replace(/(\\)?\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=
+"lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){d=d||{};var e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&
+d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+
+c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND)for(e=0,f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d);else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Layer.Google.v3={DEFAULTS:{sphericalMercator:!0,projection:"EPSG:900913"},animationEnabled:!0,loadMapObject:function(){this.type||(this.type=google.maps.MapTypeId.ROADMAP);var a,b=OpenLayers.Layer.Google.cache[this.map.id];b?(a=b.mapObject,++b.count):(a=this.map.getCenter(),b=document.createElement("div"),b.className="olForeignContainer",b.style.width="100%",b.style.height="100%",a=new google.maps.Map(b,{center:a?new google.maps.LatLng(a.lat,a.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||
+0,mapTypeId:this.type,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}),b=document.createElement("div"),b.style.width="100%",b.style.height="100%",a.controls[google.maps.ControlPosition.TOP_LEFT].push(b),b={googleControl:b,mapObject:a,count:1},OpenLayers.Layer.Google.cache[this.map.id]=b);this.mapObject=a;this.setGMapVisibility(this.visibility)},onMapResize:function(){this.visibility&&google.maps.event.trigger(this.mapObject,"resize")},
+setGMapVisibility:function(a){var b=OpenLayers.Layer.Google.cache[this.map.id],c=this.map;if(b){for(var d=this.type,e=c.layers,f,g=e.length-1;0<=g;--g)if(f=e[g],f instanceof OpenLayers.Layer.Google&&!0===f.visibility&&!0===f.inRange){d=f.type;a=!0;break}e=this.mapObject.getDiv();if(!0===a){if(e.parentNode!==c.div)if(b.rendered)c.div.appendChild(e),b.googleControl.appendChild(c.viewPortDiv),google.maps.event.trigger(this.mapObject,"resize");else{var h=this;google.maps.event.addListenerOnce(this.mapObject,
+"tilesloaded",function(){b.rendered=!0;h.setGMapVisibility(h.getVisibility());h.moveTo(h.map.getCenter())})}this.mapObject.setMapTypeId(d)}else b.googleControl.hasChildNodes()&&(c.div.appendChild(c.viewPortDiv),c.div.removeChild(e))}},getMapContainer:function(){return this.mapObject.getDiv()},getMapObjectBoundsFromOLBounds:function(a){var b=null;null!=a&&(b=this.sphericalMercator?this.inverseMercator(a.bottom,a.left):new OpenLayers.LonLat(a.bottom,a.left),a=this.sphericalMercator?this.inverseMercator(a.top,
+a.right):new OpenLayers.LonLat(a.top,a.right),b=new google.maps.LatLngBounds(new google.maps.LatLng(b.lat,b.lon),new google.maps.LatLng(a.lat,a.lon)));return b},getMapObjectLonLatFromMapObjectPixel:function(a){var b=this.map.getSize(),c=this.getLongitudeFromMapObjectLonLat(this.mapObject.center),d=this.getLatitudeFromMapObjectLonLat(this.mapObject.center),e=this.map.getResolution();a=new OpenLayers.LonLat(c+(a.x-b.w/2)*e,d-(a.y-b.h/2)*e);this.wrapDateLine&&(a=a.wrapDateLine(this.maxExtent));return this.getMapObjectLonLatFromLonLat(a.lon,
+a.lat)},getMapObjectPixelFromMapObjectLonLat:function(a){var b=this.getLongitudeFromMapObjectLonLat(a);a=this.getLatitudeFromMapObjectLonLat(a);var c=this.map.getResolution(),d=this.map.getExtent();return this.getMapObjectPixelFromXY(1/c*(b-d.left),1/c*(d.top-a))},setMapObjectCenter:function(a,b){if(!1===this.animationEnabled&&b!=this.mapObject.zoom){var c=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,"idle",function(){c.style.visibility=""});c.style.visibility="hidden"}this.mapObject.setOptions({center:a,
+zoom:b})},getMapObjectZoomFromMapObjectBounds:function(a){return this.mapObject.getBoundsZoomLevel(a)},getMapObjectLonLatFromLonLat:function(a,b){var c;this.sphericalMercator?(c=this.inverseMercator(a,b),c=new google.maps.LatLng(c.lat,c.lon)):c=new google.maps.LatLng(b,a);return c},getMapObjectPixelFromXY:function(a,b){return new google.maps.Point(a,b)}};OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},
+setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",
+c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);
+OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();
+break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return this.active?!1:this.active=!0},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,
+addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){a=a||window.location.href;var b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&
+"OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon&&(this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),
+this.setCenter()))},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);
+"B"==d?this.map.setBaseLayer(c):"T"!=d&&"F"!=d||c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null===a||"object"!=typeof a||OpenLayers.Util.isElement(a)?(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),this.base=b||document.location.href):(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=
+OpenLayers.Util.getElement(this.element)))},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=
+this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||this.anchor||(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,
+changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base,c=null;-1!=b.indexOf("#")&&!1==this.anchor&&(c=b.substring(b.indexOf("#"),b.length));-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b=b.split("#")[0]+a+OpenLayers.Util.getParameterString(this.createParams());c&&(b+=c);this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){a=a||this.map.getCenter();var d=OpenLayers.Util.getParameters(this.base);
+if(a)for(d.zoom=b||this.map.getZoom(),b=a.lat,a=a.lon,this.displayProjection&&(b=OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y),d.lat=Math.round(1E5*b)/1E5,d.lon=Math.round(1E5*a)/1E5,c=c||this.map.layers,d.layers="",a=0,b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=
+{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=
+new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&
+(this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){var b=this.layers||[this.layer],c,d,e,f;for(e=0;e<b.length;++e)if(c=b[e],f=0,null!=c.selectedFeatures)for(;c.selectedFeatures.length>f;)d=c.selectedFeatures[f],a&&a.except==d?++f:this.unselect(d)},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,
+a)?this.toggleSelect()?this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(a){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=
+a.layer;this.hover&&(this.highlightOnly?this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&
+(a._prevHighlighter=a._lastHighlighter,a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=
+this.onBeforeSelect.call(this.scope,a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",
+{feature:a});this.onUnselect.call(this.scope,a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom});a=this.map.getLonLatFromPixel({x:a.right,y:a.top});b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=
+d.features[f];h.getVisibility()&&(null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();
+this.deactivate();this.layers&&(this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);if(a)if(this.layer.events.on({refresh:this.load,scope:this}),!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,
+scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart",{filter:b.filter});b.protocol.read(OpenLayers.Util.applyDefaults({callback:this.merge,filter:b.filter,scope:this},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a){var b=this.layer;b.destroyFeatures();var c=a.features;if(c&&0<c.length){var d=b.projection,e=b.map.getProjectionObject();if(!e.equals(d))for(var f,g=0,h=c.length;g<h;++g)(f=c[g].geometry)&&f.transform(d,e);b.addFeatures(c)}b.events.triggerEvent("loadend",
+{response:a})},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;if(OpenLayers.Event.isMultiTouch(a))this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown;else{if(this.started)return!1;this.started=!1;this.last=this.start=null}OpenLayers.Event.preventDefault(a);return b},touchmove:function(a){if(this.started&&
+OpenLayers.Event.isMultiTouch(a)){this.pinching=!0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}else if(this.started)return!1;return!0},touchend:function(a){return this.started&&!OpenLayers.Event.isMultiTouch(a)?(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null,!1):!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=
+!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=!1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0];a=a[1];return Math.sqrt(Math.pow(b.olClientX-a.olClientX,2)+Math.pow(b.olClientY-a.olClientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,pinchOrigin:null,currentCenter:null,autoActivate:!0,preserveCenter:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},pinchStart:function(a,b){var c=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy;this.currentCenter=
+this.pinchOrigin=c},pinchMove:function(a,b){var c=b.scale,d=this.map.layerContainerOriginPx,e=this.pinchOrigin,f=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy,g=Math.round(d.x+f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(d.y+f.y-e.y+(c-1)*(d.y-e.y));this.map.applyTransform(g,d,c);this.currentCenter=f},pinchDone:function(a,b,c){this.map.applyTransform();a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){b=
+this.map.getResolutionForZoom(a);c=this.map.getLonLatFromPixel(this.pinchOrigin);var d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Date={dateRegEx:/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/,toISOString:function(){return"toISOString"in Date.prototype?function(a){return a.toISOString()}:function(a){return isNaN(a.getTime())?"Invalid Date":a.getUTCFullYear()+"-"+OpenLayers.Number.zeroPad(a.getUTCMonth()+1,2)+"-"+OpenLayers.Number.zeroPad(a.getUTCDate(),2)+"T"+OpenLayers.Number.zeroPad(a.getUTCHours(),2)+":"+OpenLayers.Number.zeroPad(a.getUTCMinutes(),
+2)+":"+OpenLayers.Number.zeroPad(a.getUTCSeconds(),2)+"."+OpenLayers.Number.zeroPad(a.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(this.dateRegEx))&&(a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,a=-1E3*(3600*c+60*a),b=new Date(b.getTime()+
+a))}}else b=new Date("invalid");return b}};OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=
+{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,kmlColor:/(\w{2})(\w{2})(\w{2})(\w{2})/,kmlIconPalette:/root:\/\/icons\/palette-(\d+)(\.\w+)/,straightBracket:/\$\[(.*?)\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&
+(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,
+b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=
+null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=
+d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var k=32*h,l=this.getElementsByTagNameNS(e,"*","Icon")[0];if(l){var m=this.parseProperty(l,"*","href");if(m){var q=this.parseProperty(l,"*","w"),p=this.parseProperty(l,
+"*","h");!OpenLayers.String.startsWith(m,"http://maps.google.com/mapfiles/kml")||q||p||(p=q=64,h/=2);q=q||p;p=p||q;q&&(d=parseInt(q)*h);p&&(k=parseInt(p)*h);if(p=m.match(this.regExes.kmlIconPalette))q=p[1],p=p[2],m=this.parseProperty(l,"*","x"),l=this.parseProperty(l,"*","y"),m="http://maps.google.com/mapfiles/kml/pal"+q+"/icon"+(8*(l?7-l/32:7)+(m?m/32:0))+p;b.graphicOpacity=1;b.externalGraphic=m}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])m=parseFloat(e.getAttribute("x")),l=parseFloat(e.getAttribute("y")),
+q=e.getAttribute("xunits"),"pixels"==q?b.graphicXOffset=-m*h:"insetPixels"==q?b.graphicXOffset=-d+m*h:"fraction"==q&&(b.graphicXOffset=-d*m),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-k+l*h+1:"insetPixels"==e?b.graphicYOffset=-(l*h)+1:"fraction"==e&&(b.graphicYOffset=-k*(1-l)+1);b.graphicWidth=d;b.graphicHeight=k;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,
+"*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);(a=a.getAttribute("id"))&&b&&(b.id=a);return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var k=f[g],l=this.parseProperty(k,"*","key");(k=this.parseProperty(k,"*","styleUrl"))&&"normal"==l&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||
+"")+k])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&g.attributes&&g.attributes.styleUrl&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];h&&(h=this.parseStyle(h))&&(g.style=OpenLayers.Util.extend(g.style,h))}this.extractTracks?(f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length&&(g={features:[],feature:g},
+this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)):c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<
+f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,
+e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;d=c.points[e];h.geometry=d;"z"in d&&(h.attributes.altitude=d.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes)for(var k=0,l=this.trackAttributes.length;k<l;++k)d=this.trackAttributes[k],h.attributes[d]=c.attributes[d][e];h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(d=c.angles[e],h.attributes.heading=
+parseFloat(d[0]),h.attributes.tilt=parseFloat(d[1]),h.attributes.roll=parseFloat(d[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],
+c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||
+a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates");a=[];if(0<b.length){var c=b[0].firstChild.nodeValue,
+c=c.replace(this.regExes.removeSpace,"");a=c.split(",")}b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,k=0;k<e;++k)if(g=
+d[k].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[k]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[k];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing");var b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=
+b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=a.prefix?a.nodeName.split(":")[1]:a.nodeName,(b=this.parseGeometry[b.toLowerCase()])&&c.push(b.apply(this,[a])));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));var d,e,f;a=a.childNodes;for(var c=
+0,g=a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");
+var h={},k=e.getElementsByTagName("value");k.length&&(h.value=this.getChildValue(k[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d;a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=
+null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&
+(b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name"),c=a.style&&a.style.label?a.style.label:a.id;b.appendChild(this.createTextNode(a.attributes.name||c));var d=this.createElementNS(this.kmlns,"description");d.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));c=this.createElementNS(this.kmlns,"Placemark");null!=
+a.fid&&c.setAttribute("id",a.fid);c.appendChild(b);c.appendChild(d);b=this.buildGeometryNode(a.geometry);c.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&c.appendChild(a);return c},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=b.substring(b.lastIndexOf(".")+1),b=this.buildGeometry[b.toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},
+multipoint:function(a){return this.buildGeometry.collection.apply(this,[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){var b=this.createElementNS(this.kmlns,"Polygon");a=a.components;
+for(var c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=
+this.createElementNS(this.kmlns,"coordinates"),c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),
+c;for(c in a)if(a[c]&&"name"!=c&&"description"!=c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?
+null:b},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,
+scope:this});return a},update:function(a){var b=this.getMapBounds();null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b))&&(this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a))},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));
+return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio;a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){!this.response||a&&!0===a.noAbort||
+(this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));var b={filter:this.createFilter()};this.layer.events.triggerEvent("loadstart",b);this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:b.filter,callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,
+filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if(a.success()){var b=a.features;if(b&&0<b.length){var c=this.layer.projection,d=this.layer.map.getProjectionObject();if(!d.equals(c))for(var e,f=0,g=b.length;f<g;++f)(e=b[f].geometry)&&e.transform(c,d);this.layer.addFeatures(b)}}else this.bounds=null;this.response=null;this.layer.events.triggerEvent("loadend",{response:a})},CLASS_NAME:"OpenLayers.Strategy.BBOX"});
diff --git a/web/js/OpenLayers.fixmystreet.js b/web/js/OpenLayers.fixmystreet.js
index ba874e424..4ea2dd466 100644
--- a/web/js/OpenLayers.fixmystreet.js
+++ b/web/js/OpenLayers.fixmystreet.js
@@ -2,26 +2,18 @@
OpenLayers.js -- OpenLayers Map Viewer Library
- Copyright 2005-2011 OpenLayers Contributors, released under the FreeBSD
- license. Please see http://svn.openlayers.org/trunk/openlayers/license.txt
- for the full text of the license.
+ Copyright (c) 2006-2013 by OpenLayers Contributors
+ Published under the 2-clause BSD license.
+ See http://openlayers.org/dev/license.txt for the full text of the license,
+ and http://openlayers.org/dev/authors.txt for full list of contributors.
Includes compressed code under the following licenses:
- (For uncompressed versions of the code used please see the
- OpenLayers SVN repository: <http://openlayers.org/>)
+ (For uncompressed versions of the code used, please see the
+ OpenLayers Github repository: <https://github.com/openlayers/openlayers>)
*/
-/* Contains portions of Prototype.js:
- *
- * Prototype JavaScript framework, version 1.4.0
- * (c) 2005 Sam Stephenson <sam@conio.net>
- *
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://prototype.conio.net/
- */
-
/**
* Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
* Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
@@ -38,1232 +30,548 @@
* Code licensed under the BSD License:
* http://developer.yahoo.com/yui/license.html
*/
-var OpenLayers={VERSION_NUMBER:"Release 2.11",singleFile:true,_getScriptLocation:function(){ return "/jslib/OpenLayers-2.10/";
-}};OpenLayers.Class=function(){var len=arguments.length;var P=arguments[0];var F=arguments[len-1];var C=typeof F.initialize=="function"?F.initialize:function(){P.prototype.initialize.apply(this,arguments);};if(len>1){var newArgs=[C,P].concat(Array.prototype.slice.call(arguments).slice(1,len-1),F);OpenLayers.inherit.apply(null,newArgs);}else{C.prototype=F;}
-return C;};OpenLayers.Class.isPrototype=function(){};OpenLayers.Class.create=function(){return function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}};};OpenLayers.Class.inherit=function(P){var C=function(){P.call(this);};var newArgs=[C].concat(Array.prototype.slice.call(arguments));OpenLayers.inherit.apply(null,newArgs);return C.prototype;};OpenLayers.inherit=function(C,P){var F=function(){};F.prototype=P.prototype;C.prototype=new F;var i,l,o;for(i=2,l=arguments.length;i<l;i++){o=arguments[i];if(typeof o==="function"){o=o.prototype;}
-OpenLayers.Util.extend(C.prototype,o);}};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(destination,source){destination=destination||{};if(source){for(var property in source){var value=source[property];if(value!==undefined){destination[property]=value;}}
-var sourceIsEvt=typeof window.Event=="function"&&source instanceof window.Event;if(!sourceIsEvt&&source.hasOwnProperty&&source.hasOwnProperty("toString")){destination.toString=source.toString;}}
-return destination;};OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(error){alert(error);},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(){var scripts=document.getElementsByTagName("script");for(var i=0,len=scripts.length;i<len;++i){if(scripts[i].src.indexOf("firebug.js")!=-1){if(console){OpenLayers.Util.extend(OpenLayers.Console,console);break;}}}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){if(!OpenLayers.Lang.code){OpenLayers.Lang.setCode();}
-return OpenLayers.Lang.code;},setCode:function(code){var lang;if(!code){code=(OpenLayers.BROWSER_NAME=="msie")?navigator.userLanguage:navigator.language;}
-var parts=code.split('-');parts[0]=parts[0].toLowerCase();if(typeof OpenLayers.Lang[parts[0]]=="object"){lang=parts[0];}
-if(parts[1]){var testLang=parts[0]+'-'+parts[1].toUpperCase();if(typeof OpenLayers.Lang[testLang]=="object"){lang=testLang;}}
-if(!lang){OpenLayers.Console.warn('Failed to find OpenLayers.Lang.'+parts.join("-")+' dictionary, falling back to default language');lang=OpenLayers.Lang.defaultCode;}
-OpenLayers.Lang.code=lang;},translate:function(key,context){var dictionary=OpenLayers.Lang[OpenLayers.Lang.getCode()];var message=dictionary&&dictionary[key];if(!message){message=key;}
-if(context){message=OpenLayers.String.format(message,context);}
-return message;}};OpenLayers.i18n=OpenLayers.Lang.translate;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*/,'').replace(/\s\s*$/,'');},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1,len=oStringList.length;i<len;i++){var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1);}
-return camelizedString;},format:function(template,context,args){if(!context){context=window;}
-var replacer=function(str,match){var replacement;var subs=match.split(/\.+/);for(var i=0;i<subs.length;i++){if(i==0){replacement=context;}
-replacement=replacement[subs[i]];}
-if(typeof replacement=="function"){replacement=args?replacement.apply(null,args):replacement();}
-if(typeof replacement=='undefined'){return'undefined';}else{return replacement;}};return template.replace(OpenLayers.String.tokenRegEx,replacer);},tokenRegEx:/\$\{([\w.]+?)\}/g,numberRegEx:/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,isNumeric:function(value){return OpenLayers.String.numberRegEx.test(value);},numericIf:function(value){return OpenLayers.String.isNumeric(value)?parseFloat(value):value;}};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.Number.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);};},False:function(){return false;},True:function(){return true;},Void:function(){}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Function.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.Function.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<len;i++){if(i in array){var val=array[i];if(callback.call(caller,val,i,array)){selected.push(val);}}}}
-return selected;}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(left,bottom,right,top){if(left!=null){this.left=OpenLayers.Util.toFloat(left);}
-if(bottom!=null){this.bottom=OpenLayers.Util.toFloat(bottom);}
-if(right!=null){this.right=OpenLayers.Util.toFloat(right);}
-if(top!=null){this.top=OpenLayers.Util.toFloat(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));}
-return equals;},toString:function(){return[this.left,this.bottom,this.right,this.top].join(",");},toArray:function(reverseAxisOrder){if(reverseAxisOrder===true){return[this.bottom,this.left,this.top,this.right];}else{return[this.left,this.bottom,this.right,this.top];}},toBBOX:function(decimal,reverseAxisOrder){if(decimal==null){decimal=6;}
-var mult=Math.pow(10,decimal);var xmin=Math.round(this.left*mult)/mult;var ymin=Math.round(this.bottom*mult)/mult;var xmax=Math.round(this.right*mult)/mult;var ymax=Math.round(this.top*mult)/mult;if(reverseAxisOrder===true){return ymin+","+xmin+","+ymax+","+xmax;}else{return xmin+","+ymin+","+xmax+","+ymax;}},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(){if(!this.centerLonLat){this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2);}
-return this.centerLonLat;},scale:function(ratio,origin){if(origin==null){origin=this.getCenterLonLat();}
-var origx,origy;if(origin.CLASS_NAME=="OpenLayers.LonLat"){origx=origin.lon;origy=origin.lat;}else{origx=origin.x;origy=origin.y;}
-var left=(this.left-origx)*ratio+origx;var bottom=(this.bottom-origy)*ratio+origy;var right=(this.right-origx)*ratio+origx;var top=(this.top-origy)*ratio+origy;return new OpenLayers.Bounds(left,bottom,right,top);},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){this.centerLonLat=null;if((this.left==null)||(bounds.left<this.left)){this.left=bounds.left;}
-if((this.bottom==null)||(bounds.bottom<this.bottom)){this.bottom=bounds.bottom;}
-if((this.right==null)||(bounds.right>this.right)){this.right=bounds.right;}
-if((this.top==null)||(bounds.top>this.top)){this.top=bounds.top;}}}},containsLonLat:function(ll,inclusive){return this.contains(ll.lon,ll.lat,inclusive);},containsPixel:function(px,inclusive){return this.contains(px.x,px.y,inclusive);},contains:function(x,y,inclusive){if(inclusive==null){inclusive=true;}
-if(x==null||y==null){return false;}
-x=OpenLayers.Util.toFloat(x);y=OpenLayers.Util.toFloat(y);var contains=false;if(inclusive){contains=((x>=this.left)&&(x<=this.right)&&(y>=this.bottom)&&(y<=this.top));}else{contains=((x>this.left)&&(x<this.right)&&(y>this.bottom)&&(y<this.top));}
-return contains;},intersectsBounds:function(bounds,inclusive){if(inclusive==null){inclusive=true;}
-var intersects=false;var mightTouch=(this.left==bounds.right||this.right==bounds.left||this.top==bounds.bottom||this.bottom==bounds.top);if(inclusive||!mightTouch){var inBottom=(((bounds.bottom>=this.bottom)&&(bounds.bottom<=this.top))||((this.bottom>=bounds.bottom)&&(this.bottom<=bounds.top)));var inTop=(((bounds.top>=this.bottom)&&(bounds.top<=this.top))||((this.top>bounds.bottom)&&(this.top<bounds.top)));var inLeft=(((bounds.left>=this.left)&&(bounds.left<=this.right))||((this.left>=bounds.left)&&(this.left<=bounds.right)));var inRight=(((bounds.right>=this.left)&&(bounds.right<=this.right))||((this.right>=bounds.left)&&(this.right<=bounds.right)));intersects=((inBottom||inTop)&&(inLeft||inRight));}
-return intersects;},containsBounds:function(bounds,partial,inclusive){if(partial==null){partial=false;}
-if(inclusive==null){inclusive=true;}
-var bottomLeft=this.contains(bounds.left,bounds.bottom,inclusive);var bottomRight=this.contains(bounds.right,bounds.bottom,inclusive);var topLeft=this.contains(bounds.left,bounds.top,inclusive);var topRight=this.contains(bounds.right,bounds.top,inclusive);return(partial)?(bottomLeft||bottomRight||topLeft||topRight):(bottomLeft&&bottomRight&&topLeft&&topRight);},determineQuadrant:function(lonlat){var quadrant="";var center=this.getCenterLonLat();quadrant+=(lonlat.lat<center.lat)?"b":"t";quadrant+=(lonlat.lon<center.lon)?"l":"r";return quadrant;},transform:function(source,dest){this.centerLonLat=null;var ll=OpenLayers.Projection.transform({'x':this.left,'y':this.bottom},source,dest);var lr=OpenLayers.Projection.transform({'x':this.right,'y':this.bottom},source,dest);var ul=OpenLayers.Projection.transform({'x':this.left,'y':this.top},source,dest);var ur=OpenLayers.Projection.transform({'x':this.right,'y':this.top},source,dest);this.left=Math.min(ll.x,ul.x);this.bottom=Math.min(ll.y,lr.y);this.right=Math.max(lr.x,ur.x);this.top=Math.max(ul.y,ur.y);return this;},wrapDateLine:function(maxExtent,options){options=options||{};var leftTolerance=options.leftTolerance||0;var rightTolerance=options.rightTolerance||0;var newBounds=this.clone();if(maxExtent){while(newBounds.left<maxExtent.left&&(newBounds.right-rightTolerance)<=maxExtent.left){newBounds=newBounds.add(maxExtent.getWidth(),0);}
-while((newBounds.left+leftTolerance)>=maxExtent.right&&newBounds.right>maxExtent.right){newBounds=newBounds.add(-maxExtent.getWidth(),0);}}
-return newBounds;},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(str,reverseAxisOrder){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds,reverseAxisOrder);};OpenLayers.Bounds.fromArray=function(bbox,reverseAxisOrder){return reverseAxisOrder===true?new OpenLayers.Bounds(parseFloat(bbox[1]),parseFloat(bbox[0]),parseFloat(bbox[3]),parseFloat(bbox[2])):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,len=arguments.length;i<len;i++){var element=OpenLayers.Util.getElement(arguments[i]);var display=OpenLayers.Element.visible(element)?'hide':'show';OpenLayers.Element[display](element);}},hide:function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{newMethod:"element.style.display = 'none';"}));for(var i=0,len=arguments.length;i<len;i++){var element=OpenLayers.Util.getElement(arguments[i]);if(element){element.style.display='none';}}},show:function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{newMethod:"element.style.display = '';"}));for(var i=0,len=arguments.length;i<len;i++){var element=OpenLayers.Util.getElement(arguments[i]);if(element){element.style.display='';}}},remove:function(element){element=OpenLayers.Util.getElement(element);element.parentNode.removeChild(element);},getHeight:function(element){element=OpenLayers.Util.getElement(element);return element.offsetHeight;},getDimensions:function(element){element=OpenLayers.Util.getElement(element);if(OpenLayers.Element.getStyle(element,'display')!='none'){return{width:element.offsetWidth,height:element.offsetHeight};}
-var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},hasClass:function(element,name){var names=element.className;return(!!names&&new RegExp("(^|\\s)"+name+"(\\s|$)").test(names));},addClass:function(element,name){if(!OpenLayers.Element.hasClass(element,name)){element.className+=(element.className?" ":"")+name;}
-return element;},removeClass:function(element,name){var names=element.className;if(names){element.className=OpenLayers.String.trim(names.replace(new RegExp("(^|\\s+)"+name+"(\\s+|$)")," "));}
-return element;},toggleClass:function(element,name){if(OpenLayers.Element.hasClass(element,name)){OpenLayers.Element.removeClass(element,name);}else{OpenLayers.Element.addClass(element,name);}
-return element;},getStyle:function(element,style){element=OpenLayers.Util.getElement(element);var value=null;if(element&&element.style){value=element.style[OpenLayers.String.camelize(style)];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(style):null;}else if(element.currentStyle){value=element.currentStyle[OpenLayers.String.camelize(style)];}}
-var positions=['left','top','right','bottom'];if(window.opera&&(OpenLayers.Util.indexOf(positions,style)!=-1)&&(OpenLayers.Element.getStyle(element,'position')=='static')){value='auto';}}
-return value=='auto'?null:value;}};OpenLayers.LonLat=OpenLayers.Class({lon:0.0,lat:0.0,initialize:function(lon,lat){this.lon=OpenLayers.Util.toFloat(lon);this.lat=OpenLayers.Util.toFloat(lat);},toString:function(){return("lon="+this.lon+",lat="+this.lat);},toShortString:function(){return(this.lon+", "+this.lat);},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat);},add:function(lon,lat){if((lon==null)||(lat==null)){var msg=OpenLayers.i18n("lonlatAddError");OpenLayers.Console.error(msg);return null;}
-return new OpenLayers.LonLat(this.lon+OpenLayers.Util.toFloat(lon),this.lat+OpenLayers.Util.toFloat(lat));},equals:function(ll){var equals=false;if(ll!=null){equals=((this.lon==ll.lon&&this.lat==ll.lat)||(isNaN(this.lon)&&isNaN(this.lat)&&isNaN(ll.lon)&&isNaN(ll.lat)));}
-return equals;},transform:function(source,dest){var point=OpenLayers.Projection.transform({'x':this.lon,'y':this.lat},source,dest);this.lon=point.x;this.lat=point.y;return this;},wrapDateLine:function(maxExtent){var newLonLat=this.clone();if(maxExtent){while(newLonLat.lon<maxExtent.left){newLonLat.lon+=maxExtent.getWidth();}
-while(newLonLat.lon>maxExtent.right){newLonLat.lon-=maxExtent.getWidth();}}
-return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(pair[0],pair[1]);};OpenLayers.LonLat.fromArray=function(arr){var gotArr=OpenLayers.Util.isArray(arr),lon=gotArr&&arr[0],lat=gotArr&&arr[1];return new OpenLayers.LonLat(lon,lat);};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;},distanceTo:function(px){return Math.sqrt(Math.pow(this.x-px.x,2)+
-Math.pow(this.y-px.y,2));},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.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){var elements=[];for(var i=0,len=arguments.length;i<len;i++){var element=arguments[i];if(typeof element=='string'){element=document.getElementById(element);}
-if(arguments.length==1){return element;}
-elements.push(element);}
-return elements;};OpenLayers.Util.isElement=function(o){return!!(o&&o.nodeType===1);};OpenLayers.Util.isArray=function(a){return(Object.prototype.toString.call(a)==='[object Array]');};if(typeof window.$==="undefined"){window.$=OpenLayers.Util.getElement;}
-OpenLayers.Util.removeItem=function(array,item){for(var i=array.length-1;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){if(typeof array.indexOf=="function"){return array.indexOf(obj);}else{for(var i=0,len=array.length;i<len;i++){if(array[i]==obj){return i;}}
-return-1;}};OpenLayers.Util.modifyDOMElement=function(element,id,px,sz,position,border,overflow,opacity){if(id){element.id=id;}
-if(px){element.style.left=px.x+"px";element.style.top=px.y+"px";}
-if(sz){element.style.width=sz.w+"px";element.style.height=sz.h+"px";}
-if(position){element.style.position=position;}
-if(border){element.style.border=border;}
-if(overflow){element.style.overflow=overflow;}
-if(parseFloat(opacity)>=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.display="";}
-OpenLayers.Element.removeClass(this,"olImageLoadError");};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){var urls=this.urls;if(urls&&OpenLayers.Util.isArray(urls)&&urls.length>1){var src=this.src.toString();var current_url,k;for(k=0;current_url=urls[k];k++){if(src.indexOf(current_url)!=-1){break;}}
-var guess=Math.floor(urls.length*Math.random());var new_url=urls[guess];k=0;while(new_url==current_url&&k++<4){guess=Math.floor(urls.length*Math.random());new_url=urls[guess];}
-this.src=src.replace(current_url,new_url);}else{this.src=this.src;}}else{OpenLayers.Element.addClass(this,"olImageLoadError");}
-this.style.display="";};OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=!!(document.body.filters);}catch(e){}
-OpenLayers.Util.alphaHackNeeded=(filter&&(version>=5.5)&&(version<7));}
-return OpenLayers.Util.alphaHackNeeded;};OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz,position,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()){if(div.style.display!="none"){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){to=to||{};var fromIsEvt=typeof window.Event=="function"&&from instanceof window.Event;for(var key in from){if(to[key]===undefined||(!fromIsEvt&&from.hasOwnProperty&&from.hasOwnProperty(key)&&!to.hasOwnProperty(key))){to[key]=from[key];}}
-if(!fromIsEvt&&from&&from.hasOwnProperty&&from.hasOwnProperty('toString')&&!to.hasOwnProperty('toString')){to.toString=from.toString;}
-return to;};OpenLayers.Util.getParameterString=function(params){var 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=[];var item;for(var itemIndex=0,len=value.length;itemIndex<len;itemIndex++){item=value[itemIndex];encodedItemArray.push(encodeURIComponent((item===null||item===undefined)?"":item));}
-encodedValue=encodedItemArray.join(",");}
-else{encodedValue=encodeURIComponent(value);}
-paramsArray.push(encodeURIComponent(key)+"="+encodedValue);}}
-return paramsArray.join("&");};OpenLayers.Util.urlAppend=function(url,paramStr){var newUrl=url;if(paramStr){var parts=(url+" ").split(/[?&]/);newUrl+=(parts.pop()===" "?paramStr:parts.length?"&"+paramStr:"?"+paramStr);}
-return newUrl;};OpenLayers.ImgPath='';OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||(OpenLayers._getScriptLocation()+"img/");};OpenLayers.Util.Try=function(){var returnValue=null;for(var i=0,len=arguments.length;i<len;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
-return returnValue;};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.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(number,precision){if(precision==null){precision=OpenLayers.Util.DEFAULT_PRECISION;}
-if(typeof number!=="number"){number=parseFloat(number);}
-return precision===0?number:parseFloat(number.toPrecision(precision));};OpenLayers.Util.rad=function(x){return x*Math.PI/180;};OpenLayers.Util.deg=function(x){return x*180/Math.PI;};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};OpenLayers.Util.distVincenty=function(p1,p2){var ct=OpenLayers.Util.VincentyConstants;var a=ct.a,b=ct.b,f=ct.f;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;}
-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.destinationVincenty=function(lonlat,brng,dist){var u=OpenLayers.Util;var ct=u.VincentyConstants;var a=ct.a,b=ct.b,f=ct.f;var lon1=lonlat.lon;var lat1=lonlat.lat;var s=dist;var alpha1=u.rad(brng);var sinAlpha1=Math.sin(alpha1);var cosAlpha1=Math.cos(alpha1);var tanU1=(1-f)*Math.tan(u.rad(lat1));var cosU1=1/Math.sqrt((1+tanU1*tanU1)),sinU1=tanU1*cosU1;var sigma1=Math.atan2(tanU1,cosAlpha1);var sinAlpha=cosU1*sinAlpha1;var cosSqAlpha=1-sinAlpha*sinAlpha;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 sigma=s/(b*A),sigmaP=2*Math.PI;while(Math.abs(sigma-sigmaP)>1e-12){var cos2SigmaM=Math.cos(2*sigma1+sigma);var sinSigma=Math.sin(sigma);var cosSigma=Math.cos(sigma);var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)-
-B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));sigmaP=sigma;sigma=s/(b*A)+deltaSigma;}
-var tmp=sinU1*sinSigma-cosU1*cosSigma*cosAlpha1;var lat2=Math.atan2(sinU1*cosSigma+cosU1*sinSigma*cosAlpha1,(1-f)*Math.sqrt(sinAlpha*sinAlpha+tmp*tmp));var lambda=Math.atan2(sinSigma*sinAlpha1,cosU1*cosSigma-sinU1*sinSigma*cosAlpha1);var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));var L=lambda-(1-C)*f*sinAlpha*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));var revAz=Math.atan2(sinAlpha,-tmp);return new OpenLayers.LonLat(lon1+u.deg(L),u.deg(lat2));};OpenLayers.Util.getParameters=function(url){url=(url===null||url===undefined)?window.location.href:url;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,len=pairs.length;i<len;++i){var keyValue=pairs[i].split('=');if(keyValue[0]){var key=keyValue[0];try{key=decodeURIComponent(key);}catch(err){key=unescape(key);}
-var value=(keyValue[1]||'').replace(/\+/g," ");try{value=decodeURIComponent(value);}catch(err){value=unescape(value);}
-value=value.split(",");if(value.length==1){value=value[0];}
-parameters[key]=value;}}
-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.METERS_PER_INCH=0.02540005080010160020;OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{"Inch":OpenLayers.INCHES_PER_UNIT.inches,"Meter":1.0/OpenLayers.METERS_PER_INCH,"Foot":0.30480060960121920243/OpenLayers.METERS_PER_INCH,"IFoot":0.30480000000000000000/OpenLayers.METERS_PER_INCH,"ClarkeFoot":0.3047972651151/OpenLayers.METERS_PER_INCH,"SearsFoot":0.30479947153867624624/OpenLayers.METERS_PER_INCH,"GoldCoastFoot":0.30479971018150881758/OpenLayers.METERS_PER_INCH,"IInch":0.02540000000000000000/OpenLayers.METERS_PER_INCH,"MicroInch":0.00002540000000000000/OpenLayers.METERS_PER_INCH,"Mil":0.00000002540000000000/OpenLayers.METERS_PER_INCH,"Centimeter":0.01000000000000000000/OpenLayers.METERS_PER_INCH,"Kilometer":1000.00000000000000000000/OpenLayers.METERS_PER_INCH,"Yard":0.91440182880365760731/OpenLayers.METERS_PER_INCH,"SearsYard":0.914398414616029/OpenLayers.METERS_PER_INCH,"IndianYard":0.91439853074444079983/OpenLayers.METERS_PER_INCH,"IndianYd37":0.91439523/OpenLayers.METERS_PER_INCH,"IndianYd62":0.9143988/OpenLayers.METERS_PER_INCH,"IndianYd75":0.9143985/OpenLayers.METERS_PER_INCH,"IndianFoot":0.30479951/OpenLayers.METERS_PER_INCH,"IndianFt37":0.30479841/OpenLayers.METERS_PER_INCH,"IndianFt62":0.3047996/OpenLayers.METERS_PER_INCH,"IndianFt75":0.3047995/OpenLayers.METERS_PER_INCH,"Mile":1609.34721869443738887477/OpenLayers.METERS_PER_INCH,"IYard":0.91440000000000000000/OpenLayers.METERS_PER_INCH,"IMile":1609.34400000000000000000/OpenLayers.METERS_PER_INCH,"NautM":1852.00000000000000000000/OpenLayers.METERS_PER_INCH,"Lat-66":110943.316488932731/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872234125/OpenLayers.METERS_PER_INCH,"Decimeter":0.10000000000000000000/OpenLayers.METERS_PER_INCH,"Millimeter":0.00100000000000000000/OpenLayers.METERS_PER_INCH,"Dekameter":10.00000000000000000000/OpenLayers.METERS_PER_INCH,"Decameter":10.00000000000000000000/OpenLayers.METERS_PER_INCH,"Hectometer":100.00000000000000000000/OpenLayers.METERS_PER_INCH,"GermanMeter":1.0000135965/OpenLayers.METERS_PER_INCH,"CaGrid":0.999738/OpenLayers.METERS_PER_INCH,"ClarkeChain":20.1166194976/OpenLayers.METERS_PER_INCH,"GunterChain":20.11684023368047/OpenLayers.METERS_PER_INCH,"BenoitChain":20.116782494375872/OpenLayers.METERS_PER_INCH,"SearsChain":20.11676512155/OpenLayers.METERS_PER_INCH,"ClarkeLink":0.201166194976/OpenLayers.METERS_PER_INCH,"GunterLink":0.2011684023368047/OpenLayers.METERS_PER_INCH,"BenoitLink":0.20116782494375872/OpenLayers.METERS_PER_INCH,"SearsLink":0.2011676512155/OpenLayers.METERS_PER_INCH,"Rod":5.02921005842012/OpenLayers.METERS_PER_INCH,"IntnlChain":20.1168/OpenLayers.METERS_PER_INCH,"IntnlLink":0.201168/OpenLayers.METERS_PER_INCH,"Perch":5.02921005842012/OpenLayers.METERS_PER_INCH,"Pole":5.02921005842012/OpenLayers.METERS_PER_INCH,"Furlong":201.1684023368046/OpenLayers.METERS_PER_INCH,"Rood":3.778266898/OpenLayers.METERS_PER_INCH,"CapeFoot":0.3047972615/OpenLayers.METERS_PER_INCH,"Brealey":375.00000000000000000000/OpenLayers.METERS_PER_INCH,"ModAmFt":0.304812252984505969011938/OpenLayers.METERS_PER_INCH,"Fathom":1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":50000.0/OpenLayers.METERS_PER_INCH,"150kilometers":150000.0/OpenLayers.METERS_PER_INCH});OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{"mm":OpenLayers.INCHES_PER_UNIT["Meter"]/1000.0,"cm":OpenLayers.INCHES_PER_UNIT["Meter"]/100.0,"dm":OpenLayers.INCHES_PER_UNIT["Meter"]*100.0,"km":OpenLayers.INCHES_PER_UNIT["Meter"]*1000.0,"kmi":OpenLayers.INCHES_PER_UNIT["nmi"],"fath":OpenLayers.INCHES_PER_UNIT["Fathom"],"ch":OpenLayers.INCHES_PER_UNIT["IntnlChain"],"link":OpenLayers.INCHES_PER_UNIT["IntnlLink"],"us-in":OpenLayers.INCHES_PER_UNIT["inches"],"us-ft":OpenLayers.INCHES_PER_UNIT["Foot"],"us-yd":OpenLayers.INCHES_PER_UNIT["Yard"],"us-ch":OpenLayers.INCHES_PER_UNIT["GunterChain"],"us-mi":OpenLayers.INCHES_PER_UNIT["Mile"],"ind-yd":OpenLayers.INCHES_PER_UNIT["IndianYd37"],"ind-ft":OpenLayers.INCHES_PER_UNIT["IndianFt37"],"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(scale){var normScale=(scale>1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){var resolution;if(scale){if(units==null){units="degrees";}
-var normScale=OpenLayers.Util.normalizeScale(scale);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 pos=[0,0];var viewportElement=OpenLayers.Util.getViewportElement();if(!forElement||forElement==window||forElement==viewportElement){return pos;}
-var BUGGY_GECKO_BOX_OBJECT=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&OpenLayers.Element.getStyle(forElement,'position')=='absolute'&&(forElement.style.top==''||forElement.style.left=='');var parent=null;var box;if(forElement.getBoundingClientRect){box=forElement.getBoundingClientRect();var scrollTop=viewportElement.scrollTop;var scrollLeft=viewportElement.scrollLeft;pos[0]=box.left+scrollLeft;pos[1]=box.top+scrollTop;}else if(document.getBoxObjectFor&&!BUGGY_GECKO_BOX_OBJECT){box=document.getBoxObjectFor(forElement);var vpBox=document.getBoxObjectFor(viewportElement);pos[0]=box.screenX-vpBox.screenX;pos[1]=box.screenY-vpBox.screenY;}else{pos[0]=forElement.offsetLeft;pos[1]=forElement.offsetTop;parent=forElement.offsetParent;if(parent!=forElement){while(parent){pos[0]+=parent.offsetLeft;pos[1]+=parent.offsetTop;parent=parent.offsetParent;}}
-var browser=OpenLayers.BROWSER_NAME;if(browser=="opera"||(browser=="safari"&&OpenLayers.Element.getStyle(forElement,'position')=='absolute')){pos[1]-=document.body.offsetTop;}
-parent=forElement.offsetParent;while(parent&&parent!=document.body){pos[0]-=parent.scrollLeft;if(browser!="opera"||parent.tagName!='TR'){pos[1]-=parent.scrollTop;}
-parent=parent.offsetParent;}}
-return pos;};OpenLayers.Util.getViewportElement=function(){var viewportElement=arguments.callee.viewportElement;if(viewportElement==undefined){viewportElement=(OpenLayers.BROWSER_NAME=="msie"&&document.compatMode!='CSS1Compat')?document.body:document.documentElement;arguments.callee.viewportElement=viewportElement;}
-return viewportElement;};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(key!=="args"){if(urlObj1[key]!=urlObj2[key]){return false;}}}
-for(var key in urlObj1.args){if(urlObj1.args[key]!=urlObj2.args[key]){return false;}
-delete urlObj2.args[key];}
-for(var key in urlObj2.args){return false;}
-return true;};OpenLayers.Util.createUrlObject=function(url,options){options=options||{};if(!(/^\w+:\/\//).test(url)){var loc=window.location;var port=loc.port?":"+loc.port:"";var fullUrl=loc.protocol+"//"+loc.host.split(":").shift()+port;if(url.indexOf("/")===0){url=fullUrl+url;}else{var parts=loc.pathname.split("/");parts.pop();url=fullUrl+parts.join("/")+"/"+url;}}
-if(options.ignoreCase){url=url.toLowerCase();}
-var a=document.createElement('a');a.href=url;var urlObject={};urlObject.host=a.host.split(":").shift();urlObject.protocol=a.protocol;if(options.ignorePort80){urlObject.port=(a.port=="80"||a.port=="0")?"":a.port;}else{urlObject.port=(a.port==""||a.port=="0")?"80":a.port;}
-urlObject.hash=(options.ignoreHash||a.hash==="#")?"":a.hash;var queryString=a.search;if(!queryString){var qMark=url.indexOf("?");queryString=(qMark!=-1)?url.substr(qMark):"";}
-urlObject.args=OpenLayers.Util.getParameters(queryString);urlObject.pathname=(a.pathname.charAt(0)=="/")?a.pathname:"/"+a.pathname;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.IS_GECKO=(function(){var ua=navigator.userAgent.toLowerCase();return ua.indexOf("webkit")==-1&&ua.indexOf("gecko")!=-1;})();OpenLayers.BROWSER_NAME=(function(){var name="";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("opera")!=-1){name="opera";}else if(ua.indexOf("msie")!=-1){name="msie";}else if(ua.indexOf("safari")!=-1){name="safari";}else if(ua.indexOf("mozilla")!=-1){if(ua.indexOf("firefox")!=-1){name="firefox";}else{name="mozilla";}}
-return name;})();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME;};OpenLayers.Util.getRenderedDimensions=function(contentHTML,size,options){var w,h;var container=document.createElement("div");container.style.visibility="hidden";var containerElement=(options&&options.containerElement)?options.containerElement:document.body;if(size){if(size.w){w=size.w;container.style.width=w+"px";}else if(size.h){h=size.h;container.style.height=h+"px";}}
-if(options&&options.displayClass){container.className=options.displayClass;}
-var content=document.createElement("div");content.innerHTML=contentHTML;content.style.overflow="visible";if(content.childNodes){for(var i=0,l=content.childNodes.length;i<l;i++){if(!content.childNodes[i].style)continue;content.childNodes[i].style.overflow="visible";}}
-container.appendChild(content);containerElement.appendChild(container);var parentHasPositionAbsolute=false;var parent=container.parentNode;while(parent&&parent.tagName.toLowerCase()!="body"){var parentPosition=OpenLayers.Element.getStyle(parent,"position");if(parentPosition=="absolute"){parentHasPositionAbsolute=true;break;}else if(parentPosition&&parentPosition!="static"){break;}
-parent=parent.parentNode;}
-if(!parentHasPositionAbsolute){container.style.position="absolute";}
-if(!w){w=parseInt(content.scrollWidth);container.style.width=w+"px";}
-if(!h){h=parseInt(content.scrollHeight);}
-container.removeChild(content);containerElement.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.Util.getFormattedLonLat=function(coordinate,axis,dmsOption){if(!dmsOption){dmsOption='dms';}
-coordinate=(coordinate+540)%360-180;var abscoordinate=Math.abs(coordinate);var coordinatedegrees=Math.floor(abscoordinate);var coordinateminutes=(abscoordinate-coordinatedegrees)/(1/60);var tempcoordinateminutes=coordinateminutes;coordinateminutes=Math.floor(coordinateminutes);var coordinateseconds=(tempcoordinateminutes-coordinateminutes)/(1/60);coordinateseconds=Math.round(coordinateseconds*10);coordinateseconds/=10;if(coordinateseconds>=60){coordinateseconds-=60;coordinateminutes+=1;if(coordinateminutes>=60){coordinateminutes-=60;coordinatedegrees+=1;}}
-if(coordinatedegrees<10){coordinatedegrees="0"+coordinatedegrees;}
-var str=coordinatedegrees+"\u00B0";if(dmsOption.indexOf('dm')>=0){if(coordinateminutes<10){coordinateminutes="0"+coordinateminutes;}
-str+=coordinateminutes+"'";if(dmsOption.indexOf('dms')>=0){if(coordinateseconds<10){coordinateseconds="0"+coordinateseconds;}
-str+=coordinateseconds+'"';}}
-if(axis=="lon"){str+=coordinate<0?OpenLayers.i18n("W"):OpenLayers.i18n("E");}else{str+=coordinate<0?OpenLayers.i18n("S"):OpenLayers.i18n("N");}
-return str;};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:false,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},destroy:function(){},read:function(data){OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented"));},write:function(object){OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,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);}}
-if(this.layer!=null&&this.marker!=null){this.layer.removeMarker(this.marker);}
-this.layer=null;this.id=null;this.lonlat=null;this.data=null;if(this.marker!=null){this.destroyMarker(this.marker);this.marker=null;}
-if(this.popup!=null){this.destroyPopup(this.popup);this.popup=null;}},onScreen:function(){var onScreen=false;if((this.layer!=null)&&(this.layer.map!=null)){var screenBounds=this.layer.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);}
-return onScreen;},createMarker:function(){if(this.lonlat!=null){this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon);}
-return this.marker;},destroyMarker:function(){this.marker.destroy();},createPopup:function(closeBox){if(this.lonlat!=null){if(!this.popup){var anchor=(this.marker)?this.marker.icon:null;var popupClass=this.popupClass?this.popupClass:OpenLayers.Popup.AnchoredBubble;this.popup=new popupClass(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,anchor,closeBox);}
-if(this.data.overflow!=null){this.popup.contentDiv.style.overflow=this.data.overflow;}
-this.popup.feature=this;}
-return this.popup;},destroyPopup:function(){if(this.popup){this.popup.feature=null;this.popup.destroy();this.popup=null;}},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:'Unknown',INSERT:'Insert',UPDATE:'Update',DELETE:'Delete'};OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(geometry,attributes,style){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,attributes]);this.lonlat=null;this.geometry=geometry?geometry:null;this.state=null;this.attributes={};if(attributes){this.attributes=OpenLayers.Util.extend(this.attributes,attributes);}
-this.style=style?style:null;},destroy:function(){if(this.layer){this.layer.removeFeatures(this);this.layer=null;}
-this.geometry=null;this.modified=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments);},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style);},onScreen:function(boundsOnly){var onScreen=false;if(this.layer&&this.layer.map){var screenBounds=this.layer.map.getExtent();if(boundsOnly){var featureBounds=this.geometry.getBounds();onScreen=screenBounds.intersectsBounds(featureBounds);}else{var screenPoly=screenBounds.toGeometry();onScreen=screenPoly.intersects(this.geometry);}}
-return onScreen;},getVisibility:function(){return!(this.style&&this.style.display=='none'||!this.layer||this.layer&&this.layer.styleMap&&this.layer.styleMap.createSymbolizer(this,this.renderIntent).display=='none'||this.layer&&!this.layer.getVisibility());},createMarker:function(){return null;},destroyMarker:function(){},createPopup:function(){return null;},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;if(this.geometry){atPoint=this.geometry.atPoint(lonlat,toleranceLon,toleranceLat);}
-return atPoint;},destroyPopup:function(){},move:function(location){if(!this.layer||!this.geometry.move){return undefined;}
-var pixel;if(location.CLASS_NAME=="OpenLayers.LonLat"){pixel=this.layer.getViewPortPxFromLonLat(location);}else{pixel=location;}
-var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};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;wkt=wkt.replace(/[\n\r]/g," ");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&&type!="geometrycollection"&&typeof features=="object"){for(var i=0,len=features.length;i<len;i++){var component=features[i];component.geometry.transform(this.externalProjection,this.internalProjection);}}}}
-return features;},write:function(features){var collection,geometry,type,data,isCollection;if(features.constructor==Array){collection=features;isCollection=true;}else{collection=[features];isCollection=false;}
-var pieces=[];if(isCollection){pieces.push('GEOMETRYCOLLECTION(');}
-for(var i=0,len=collection.length;i<len;++i){if(isCollection&&i>0){pieces.push(',');}
-geometry=collection[i].geometry;pieces.push(this.extractGeometry(geometry));}
-if(isCollection){pieces.push(')');}
-return pieces.join('');},extractGeometry:function(geometry){var 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);}
-var wktType=type=='collection'?'GEOMETRYCOLLECTION':type.toUpperCase();var data=wktType+'('+this.extract[type].apply(this,[geometry])+')';return data;},extract:{'point':function(point){return point.x+' '+point.y;},'multipoint':function(multipoint){var array=[];for(var i=0,len=multipoint.components.length;i<len;++i){array.push('('+
-this.extract.point.apply(this,[multipoint.components[i]])+')');}
-return array.join(',');},'linestring':function(linestring){var array=[];for(var i=0,len=linestring.components.length;i<len;++i){array.push(this.extract.point.apply(this,[linestring.components[i]]));}
-return array.join(',');},'multilinestring':function(multilinestring){var array=[];for(var i=0,len=multilinestring.components.length;i<len;++i){array.push('('+
-this.extract.linestring.apply(this,[multilinestring.components[i]])+')');}
-return array.join(',');},'polygon':function(polygon){var array=[];for(var i=0,len=polygon.components.length;i<len;++i){array.push('('+
-this.extract.linestring.apply(this,[polygon.components[i]])+')');}
-return array.join(',');},'multipolygon':function(multipolygon){var array=[];for(var i=0,len=multipolygon.components.length;i<len;++i){array.push('('+
-this.extract.polygon.apply(this,[multipolygon.components[i]])+')');}
-return array.join(',');},'collection':function(collection){var array=[];for(var i=0,len=collection.components.length;i<len;++i){array.push(this.extractGeometry.apply(this,[collection.components[i]]));}
-return array.join(',');}},parse:{'point':function(str){var coords=OpenLayers.String.trim(str).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(coords[0],coords[1]));},'multipoint':function(str){var point;var points=OpenLayers.String.trim(str).split(',');var components=[];for(var i=0,len=points.length;i<len;++i){point=points[i].replace(this.regExes.trimParens,'$1');components.push(this.parse.point.apply(this,[point]).geometry);}
-return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(components));},'linestring':function(str){var points=OpenLayers.String.trim(str).split(',');var components=[];for(var i=0,len=points.length;i<len;++i){components.push(this.parse.point.apply(this,[points[i]]).geometry);}
-return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(components));},'multilinestring':function(str){var line;var lines=OpenLayers.String.trim(str).split(this.regExes.parenComma);var components=[];for(var i=0,len=lines.length;i<len;++i){line=lines[i].replace(this.regExes.trimParens,'$1');components.push(this.parse.linestring.apply(this,[line]).geometry);}
-return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(components));},'polygon':function(str){var ring,linestring,linearring;var rings=OpenLayers.String.trim(str).split(this.regExes.parenComma);var components=[];for(var i=0,len=rings.length;i<len;++i){ring=rings[i].replace(this.regExes.trimParens,'$1');linestring=this.parse.linestring.apply(this,[ring]).geometry;linearring=new OpenLayers.Geometry.LinearRing(linestring.components);components.push(linearring);}
-return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(components));},'multipolygon':function(str){var polygon;var polygons=OpenLayers.String.trim(str).split(this.regExes.doubleParenComma);var components=[];for(var i=0,len=polygons.length;i<len;++i){polygon=polygons[i].replace(this.regExes.trimParens,'$1');components.push(this.parse.polygon.apply(this,[polygon]).geometry);}
-return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(components));},'geometrycollection':function(str){str=str.replace(/,\s*([A-Za-z])/g,'|$1');var wktArray=OpenLayers.String.trim(str).split('|');var components=[];for(var i=0,len=wktArray.length;i<len;++i){components.push(OpenLayers.Format.WKT.prototype.read.apply(this,[wktArray[i]]));}
-return components;}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){this.id=null;this.bounds=null;},clone:function(){return new OpenLayers.Geometry();},setBounds:function(bounds){if(bounds){this.bounds=bounds.clone();}},clearBounds:function(){this.bounds=null;if(this.parent){this.parent.clearBounds();}},extendBounds:function(newBounds){var bounds=this.getBounds();if(!bounds){this.setBounds(newBounds);}else{this.bounds.extend(newBounds);}},getBounds:function(){if(this.bounds==null){this.calculateBounds();}
-return this.bounds;},calculateBounds:function(){},distanceTo:function(geometry,options){},getVertices:function(nodes){},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;var bounds=this.getBounds();if((bounds!=null)&&(lonlat!=null)){var dX=(toleranceLon!=null)?toleranceLon:0;var dY=(toleranceLat!=null)?toleranceLat:0;var toleranceBounds=new OpenLayers.Bounds(this.bounds.left-dX,this.bounds.bottom-dY,this.bounds.right+dX,this.bounds.top+dY);atPoint=toleranceBounds.containsLonLat(lonlat);}
-return atPoint;},getLength:function(){return 0.0;},getArea:function(){return 0.0;},getCentroid:function(){return null;},toString:function(){return OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this));},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(wkt){var format=arguments.callee.format;if(!format){format=new OpenLayers.Format.WKT();arguments.callee.format=format;}
-var geom;var result=format.read(wkt);if(result instanceof OpenLayers.Feature.Vector){geom=result.geometry;}else if(OpenLayers.Util.isArray(result)){var len=result.length;var components=new Array(len);for(var i=0;i<len;++i){components[i]=result[i].geometry;}
-geom=new OpenLayers.Geometry.Collection(components);}
-return geom;};OpenLayers.Geometry.segmentsIntersect=function(seg1,seg2,options){var point=options&&options.point;var tolerance=options&&options.tolerance;var intersection=false;var x11_21=seg1.x1-seg2.x1;var y11_21=seg1.y1-seg2.y1;var x12_11=seg1.x2-seg1.x1;var y12_11=seg1.y2-seg1.y1;var y22_21=seg2.y2-seg2.y1;var x22_21=seg2.x2-seg2.x1;var d=(y22_21*x12_11)-(x22_21*y12_11);var n1=(x22_21*y11_21)-(y22_21*x11_21);var n2=(x12_11*y11_21)-(y12_11*x11_21);if(d==0){if(n1==0&&n2==0){intersection=true;}}else{var along1=n1/d;var along2=n2/d;if(along1>=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);}}}
-if(tolerance){var dist;if(intersection){if(point){var segs=[seg1,seg2];var seg,x,y;outer:for(var i=0;i<2;++i){seg=segs[i];for(var j=1;j<3;++j){x=seg["x"+j];y=seg["y"+j];dist=Math.sqrt(Math.pow(x-intersection.x,2)+
-Math.pow(y-intersection.y,2));if(dist<tolerance){intersection.x=x;intersection.y=y;break outer;}}}}}else{var segs=[seg1,seg2];var source,target,x,y,p,result;outer:for(var i=0;i<2;++i){source=segs[i];target=segs[(i+1)%2];for(var j=1;j<3;++j){p={x:source["x"+j],y:source["y"+j]};result=OpenLayers.Geometry.distanceToSegment(p,target);if(result.distance<tolerance){if(point){intersection=new OpenLayers.Geometry.Point(p.x,p.y);}else{intersection=true;}
-break outer;}}}}}
-return intersection;};OpenLayers.Geometry.distanceToSegment=function(point,segment){var x0=point.x;var y0=point.y;var x1=segment.x1;var y1=segment.y1;var x2=segment.x2;var y2=segment.y2;var dx=x2-x1;var dy=y2-y1;var along=((dx*(x0-x1))+(dy*(y0-y1)))/(Math.pow(dx,2)+Math.pow(dy,2));var x,y;if(along<=0.0){x=x1;y=y1;}else if(along>=1.0){x=x2;y=y2;}else{x=x1+along*dx;y=y1+along*dy;}
-return{distance:Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2)),x:x,y:y};};OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(components){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];if(components!=null){this.addComponents(components);}},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments);},clone:function(){var geometry=eval("new "+this.CLASS_NAME+"()");for(var i=0,len=this.components.length;i<len;i++){geometry.addComponent(this.components[i].clone());}
-OpenLayers.Util.applyDefaults(geometry,this);return geometry;},getComponentsString:function(){var strings=[];for(var i=0,len=this.components.length;i<len;i++){strings.push(this.components[i].toShortString());}
-return strings.join(",");},calculateBounds:function(){this.bounds=null;var bounds=new OpenLayers.Bounds();var components=this.components;if(components){for(var i=0,len=components.length;i<len;i++){bounds.extend(components[i].getBounds());}}
-if(bounds.left!=null&&bounds.bottom!=null&&bounds.right!=null&&bounds.top!=null){this.setBounds(bounds);}},addComponents:function(components){if(!(OpenLayers.Util.isArray(components))){components=[components];}
-for(var i=0,len=components.length;i<len;i++){this.addComponent(components[i]);}},addComponent:function(component,index){var added=false;if(component){if(this.componentTypes==null||(OpenLayers.Util.indexOf(this.componentTypes,component.CLASS_NAME)>-1)){if(index!=null&&(index<this.components.length)){var components1=this.components.slice(0,index);var components2=this.components.slice(index,this.components.length);components1.push(component);this.components=components1.concat(components2);}else{this.components.push(component);}
-component.parent=this;this.clearBounds();added=true;}}
-return added;},removeComponents:function(components){var removed=false;if(!(OpenLayers.Util.isArray(components))){components=[components];}
-for(var i=components.length-1;i>=0;--i){removed=this.removeComponent(components[i])||removed;}
-return removed;},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();return true;},getLength:function(){var length=0.0;for(var i=0,len=this.components.length;i<len;i++){length+=this.components[i].getLength();}
-return length;},getArea:function(){var area=0.0;for(var i=0,len=this.components.length;i<len;i++){area+=this.components[i].getArea();}
-return area;},getGeodesicArea:function(projection){var area=0.0;for(var i=0,len=this.components.length;i<len;i++){area+=this.components[i].getGeodesicArea(projection);}
-return area;},getCentroid:function(weighted){if(!weighted){return this.components.length&&this.components[0].getCentroid();}
-var len=this.components.length;if(!len){return false;}
-var areas=[];var centroids=[];var areaSum=0;var minArea=Number.MAX_VALUE;var component;for(var i=0;i<len;++i){component=this.components[i];var area=component.getArea();var centroid=component.getCentroid(true);if(isNaN(area)||isNaN(centroid.x)||isNaN(centroid.y)){continue;}
-areas.push(area);areaSum+=area;minArea=(area<minArea&&area>0)?area:minArea;centroids.push(centroid);}
-len=areas.length;if(areaSum===0){for(var i=0;i<len;++i){areas[i]=1;}
-areaSum=areas.length;}else{for(var i=0;i<len;++i){areas[i]/=minArea;}
-areaSum/=minArea;}
-var xSum=0,ySum=0,centroid,area;for(var i=0;i<len;++i){centroid=centroids[i];area=areas[i];xSum+=centroid.x*area;ySum+=centroid.y*area;}
-return new OpenLayers.Geometry.Point(xSum/areaSum,ySum/areaSum);},getGeodesicLength:function(projection){var length=0.0;for(var i=0,len=this.components.length;i<len;i++){length+=this.components[i].getGeodesicLength(projection);}
-return length;},move:function(x,y){for(var i=0,len=this.components.length;i<len;i++){this.components[i].move(x,y);}},rotate:function(angle,origin){for(var i=0,len=this.components.length;i<len;++i){this.components[i].rotate(angle,origin);}},resize:function(scale,origin,ratio){for(var i=0;i<this.components.length;++i){this.components[i].resize(scale,origin,ratio);}
-return this;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var result,best,distance;var min=Number.POSITIVE_INFINITY;for(var i=0,len=this.components.length;i<len;++i){result=this.components[i].distanceTo(geometry,options);distance=details?result.distance:result;if(distance<min){min=distance;best=result;if(min==0){break;}}}
-return best;},equals:function(geometry){var equivalent=true;if(!geometry||!geometry.CLASS_NAME||(this.CLASS_NAME!=geometry.CLASS_NAME)){equivalent=false;}else if(!(OpenLayers.Util.isArray(geometry.components))||(geometry.components.length!=this.components.length)){equivalent=false;}else{for(var i=0,len=this.components.length;i<len;++i){if(!this.components[i].equals(geometry.components[i])){equivalent=false;break;}}}
-return equivalent;},transform:function(source,dest){if(source&&dest){for(var i=0,len=this.components.length;i<len;i++){var component=this.components[i];component.transform(source,dest);}
-this.bounds=null;}
-return this;},intersects:function(geometry){var intersect=false;for(var i=0,len=this.components.length;i<len;++i){intersect=geometry.intersects(this.components[i]);if(intersect){break;}}
-return intersect;},getVertices:function(nodes){var vertices=[];for(var i=0,len=this.components.length;i<len;++i){Array.prototype.push.apply(vertices,this.components[i].getVertices(nodes));}
-return vertices;},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(x,y){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(x);this.y=parseFloat(y);},clone:function(obj){if(obj==null){obj=new OpenLayers.Geometry.Point(this.x,this.y);}
-OpenLayers.Util.applyDefaults(obj,this);return obj;},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y);},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var distance,x0,y0,x1,y1,result;if(geometry instanceof OpenLayers.Geometry.Point){x0=this.x;y0=this.y;x1=geometry.x;y1=geometry.y;distance=Math.sqrt(Math.pow(x0-x1,2)+Math.pow(y0-y1,2));result=!details?distance:{x0:x0,y0:y0,x1:x1,y1:y1,distance:distance};}else{result=geometry.distanceTo(this,options);if(details){result={x0:result.x1,y0:result.y1,x1:result.x0,y1:result.y0,distance:result.distance};}}
-return result;},equals:function(geom){var equals=false;if(geom!=null){equals=((this.x==geom.x&&this.y==geom.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(geom.x)&&isNaN(geom.y)));}
-return equals;},toShortString:function(){return(this.x+", "+this.y);},move:function(x,y){this.x=this.x+x;this.y=this.y+y;this.clearBounds();},rotate:function(angle,origin){angle*=Math.PI/180;var radius=this.distanceTo(origin);var theta=angle+Math.atan2(this.y-origin.y,this.x-origin.x);this.x=origin.x+(radius*Math.cos(theta));this.y=origin.y+(radius*Math.sin(theta));this.clearBounds();},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y);},resize:function(scale,origin,ratio){ratio=(ratio==undefined)?1:ratio;this.x=origin.x+(scale*ratio*(this.x-origin.x));this.y=origin.y+(scale*(this.y-origin.y));this.clearBounds();return this;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.equals(geometry);}else{intersect=geometry.intersects(this);}
-return intersect;},transform:function(source,dest){if((source&&dest)){OpenLayers.Projection.transform(this,source,dest);this.bounds=null;}
-return this;},getVertices:function(nodes){return[this];},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},addPoint:function(point,index){this.addComponent(point,index);},removePoint:function(point){this.removeComponent(point);},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});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,len=this.components.length;i<len;i++){length+=this.components[i-1].distanceTo(this.components[i]);}}
-return length;},getGeodesicLength:function(projection){var geom=this;if(projection){var gg=new OpenLayers.Projection("EPSG:4326");if(!gg.equals(projection)){geom=this.clone().transform(projection,gg);}}
-var length=0.0;if(geom.components&&(geom.components.length>1)){var p1,p2;for(var i=1,len=geom.components.length;i<len;i++){p1=geom.components[i-1];p2=geom.components[i];length+=OpenLayers.Util.distVincenty({lon:p1.x,lat:p1.y},{lon:p2.x,lat:p2.y});}}
-return length*1000;},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{initialize:function(points){OpenLayers.Geometry.Curve.prototype.initialize.apply(this,arguments);},removeComponent:function(point){var removed=this.components&&(this.components.length>2);if(removed){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}
-return removed;},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,len=segs1.length;i<len;++i){seg1=segs1[i];seg1x1=seg1.x1;seg1x2=seg1.x2;seg1y1=seg1.y1;seg1y2=seg1.y2;inner:for(var j=0,jlen=segs2.length;j<jlen;++j){seg2=segs2[j];if(seg2.x1>seg1x2){break;}
-if(seg2.x2<seg1x1){continue;}
-seg2y1=seg2.y1;seg2y2=seg2.y2;if(Math.min(seg2y1,seg2y2)>Math.max(seg1y1,seg1y2)){continue;}
-if(Math.max(seg2y1,seg2y2)<Math.min(seg1y1,seg1y2)){continue;}
-if(OpenLayers.Geometry.segmentsIntersect(seg1,seg2)){intersect=true;break outer;}}}}else{intersect=geometry.intersects(this);}
-return intersect;},getSortedSegments:function(){var numSeg=this.components.length-1;var segments=new Array(numSeg),point1,point2;for(var i=0;i<numSeg;++i){point1=this.components[i];point2=this.components[i+1];if(point1.x<point2.x){segments[i]={x1:point1.x,y1:point1.y,x2:point2.x,y2:point2.y};}else{segments[i]={x1:point2.x,y1:point2.y,x2:point1.x,y2:point1.y};}}
-function byX1(seg1,seg2){return seg1.x1-seg2.x1;}
-return segments.sort(byX1);},splitWithSegment:function(seg,options){var edge=!(options&&options.edge===false);var tolerance=options&&options.tolerance;var lines=[];var verts=this.getVertices();var points=[];var intersections=[];var split=false;var vert1,vert2,point;var node,vertex,target;var interOptions={point:true,tolerance:tolerance};var result=null;for(var i=0,stop=verts.length-2;i<=stop;++i){vert1=verts[i];points.push(vert1.clone());vert2=verts[i+1];target={x1:vert1.x,y1:vert1.y,x2:vert2.x,y2:vert2.y};point=OpenLayers.Geometry.segmentsIntersect(seg,target,interOptions);if(point instanceof OpenLayers.Geometry.Point){if((point.x===seg.x1&&point.y===seg.y1)||(point.x===seg.x2&&point.y===seg.y2)||point.equals(vert1)||point.equals(vert2)){vertex=true;}else{vertex=false;}
-if(vertex||edge){if(!point.equals(intersections[intersections.length-1])){intersections.push(point.clone());}
-if(i===0){if(point.equals(vert1)){continue;}}
-if(point.equals(vert2)){continue;}
-split=true;if(!point.equals(vert1)){points.push(point);}
-lines.push(new OpenLayers.Geometry.LineString(points));points=[point.clone()];}}}
-if(split){points.push(vert2.clone());lines.push(new OpenLayers.Geometry.LineString(points));}
-if(intersections.length>0){var xDir=seg.x1<seg.x2?1:-1;var yDir=seg.y1<seg.y2?1:-1;result={lines:lines,points:intersections.sort(function(p1,p2){return(xDir*p1.x-xDir*p2.x)||(yDir*p1.y-yDir*p2.y);})};}
-return result;},split:function(target,options){var results=null;var mutual=options&&options.mutual;var sourceSplit,targetSplit,sourceParts,targetParts;if(target instanceof OpenLayers.Geometry.LineString){var verts=this.getVertices();var vert1,vert2,seg,splits,lines,point;var points=[];sourceParts=[];for(var i=0,stop=verts.length-2;i<=stop;++i){vert1=verts[i];vert2=verts[i+1];seg={x1:vert1.x,y1:vert1.y,x2:vert2.x,y2:vert2.y};targetParts=targetParts||[target];if(mutual){points.push(vert1.clone());}
-for(var j=0;j<targetParts.length;++j){splits=targetParts[j].splitWithSegment(seg,options);if(splits){lines=splits.lines;if(lines.length>0){lines.unshift(j,1);Array.prototype.splice.apply(targetParts,lines);j+=lines.length-2;}
-if(mutual){for(var k=0,len=splits.points.length;k<len;++k){point=splits.points[k];if(!point.equals(vert1)){points.push(point);sourceParts.push(new OpenLayers.Geometry.LineString(points));if(point.equals(vert2)){points=[];}else{points=[point.clone()];}}}}}}}
-if(mutual&&sourceParts.length>0&&points.length>0){points.push(vert2.clone());sourceParts.push(new OpenLayers.Geometry.LineString(points));}}else{results=target.splitWith(this,options);}
-if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];}
-if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];}
-if(targetSplit||sourceSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}}
-return results;},splitWith:function(geometry,options){return geometry.split(this,options);},getVertices:function(nodes){var vertices;if(nodes===true){vertices=[this.components[0],this.components[this.components.length-1]];}else if(nodes===false){vertices=this.components.slice(1,this.components.length-1);}else{vertices=this.components.slice();}
-return vertices;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var result,best={};var min=Number.POSITIVE_INFINITY;if(geometry instanceof OpenLayers.Geometry.Point){var segs=this.getSortedSegments();var x=geometry.x;var y=geometry.y;var seg;for(var i=0,len=segs.length;i<len;++i){seg=segs[i];result=OpenLayers.Geometry.distanceToSegment(geometry,seg);if(result.distance<min){min=result.distance;best=result;if(min===0){break;}}else{if(seg.x2>x&&((y>seg.y1&&y<seg.y2)||(y<seg.y1&&y>seg.y2))){break;}}}
-if(details){best={distance:best.distance,x0:best.x,y0:best.y,x1:x,y1:y};}else{best=best.distance;}}else if(geometry instanceof OpenLayers.Geometry.LineString){var segs0=this.getSortedSegments();var segs1=geometry.getSortedSegments();var seg0,seg1,intersection,x0,y0;var len1=segs1.length;var interOptions={point:true};outer:for(var i=0,len=segs0.length;i<len;++i){seg0=segs0[i];x0=seg0.x1;y0=seg0.y1;for(var j=0;j<len1;++j){seg1=segs1[j];intersection=OpenLayers.Geometry.segmentsIntersect(seg0,seg1,interOptions);if(intersection){min=0;best={distance:0,x0:intersection.x,y0:intersection.y,x1:intersection.x,y1:intersection.y};break outer;}else{result=OpenLayers.Geometry.distanceToSegment({x:x0,y:y0},seg1);if(result.distance<min){min=result.distance;best={distance:min,x0:x0,y0:y0,x1:result.x,y1:result.y};}}}}
-if(!details){best=best.distance;}
-if(min!==0){if(seg0){result=geometry.distanceTo(new OpenLayers.Geometry.Point(seg0.x2,seg0.y2),options);var dist=details?result.distance:result;if(dist<min){if(details){best={distance:min,x0:result.x1,y0:result.y1,x1:result.x0,y1:result.y0};}else{best=dist;}}}}}else{best=geometry.distanceTo(this,options);if(details){best={distance:best.distance,x0:best.x1,y0:best.y1,x1:best.x0,y1:best.y0};}}
-return best;},simplify:function(tolerance){if(this&&this!==null){var points=this.getVertices();if(points.length<3){return this;}
-var compareNumbers=function(a,b){return(a-b);};var douglasPeuckerReduction=function(points,firstPoint,lastPoint,tolerance){var maxDistance=0;var indexFarthest=0;for(var index=firstPoint,distance;index<lastPoint;index++){distance=perpendicularDistance(points[firstPoint],points[lastPoint],points[index]);if(distance>maxDistance){maxDistance=distance;indexFarthest=index;}}
-if(maxDistance>tolerance&&indexFarthest!=firstPoint){pointIndexsToKeep.push(indexFarthest);douglasPeuckerReduction(points,firstPoint,indexFarthest,tolerance);douglasPeuckerReduction(points,indexFarthest,lastPoint,tolerance);}};var perpendicularDistance=function(point1,point2,point){var area=Math.abs(0.5*(point1.x*point2.y+point2.x*point.y+point.x*point1.y-point2.x*point1.y-point.x*point2.y-point1.x*point.y));var bottom=Math.sqrt(Math.pow(point1.x-point2.x,2)+Math.pow(point1.y-point2.y,2));var height=area/bottom*2;return height;};var firstPoint=0;var lastPoint=points.length-1;var pointIndexsToKeep=[];pointIndexsToKeep.push(firstPoint);pointIndexsToKeep.push(lastPoint);while(points[firstPoint].equals(points[lastPoint])){lastPoint--;pointIndexsToKeep.push(lastPoint);}
-douglasPeuckerReduction(points,firstPoint,lastPoint,tolerance);var returnPoints=[];pointIndexsToKeep.sort(compareNumbers);for(var index=0;index<pointIndexsToKeep.length;index++){returnPoints.push(points[pointIndexsToKeep[index]]);}
-return new OpenLayers.Geometry.LineString(returnPoints);}
-else{return this;}},CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.LineString.prototype.initialize.apply(this,arguments);},addComponent:function(point,index){var added=false;var lastPoint=this.components.pop();if(index!=null||!point.equals(lastPoint)){added=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments);}
-var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);return added;},removeComponent:function(point){var removed=this.components&&(this.components.length>3);if(removed){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}
-return removed;},move:function(x,y){for(var i=0,len=this.components.length;i<len-1;i++){this.components[i].move(x,y);}},rotate:function(angle,origin){for(var i=0,len=this.components.length;i<len-1;++i){this.components[i].rotate(angle,origin);}},resize:function(scale,origin,ratio){for(var i=0,len=this.components.length;i<len-1;++i){this.components[i].resize(scale,origin,ratio);}
-return this;},transform:function(source,dest){if(source&&dest){for(var i=0,len=this.components.length;i<len-1;i++){var component=this.components[i];component.transform(source,dest);}
-this.bounds=null;}
-return this;},getCentroid:function(){if(this.components&&(this.components.length>2)){var sumX=0.0;var sumY=0.0;for(var i=0;i<this.components.length-1;i++){var b=this.components[i];var c=this.components[i+1];sumX+=(b.x+c.x)*(b.x*c.y-c.x*b.y);sumY+=(b.y+c.y)*(b.x*c.y-c.x*b.y);}
-var area=-1*this.getArea();var x=sumX/(6*area);var y=sumY/(6*area);return new OpenLayers.Geometry.Point(x,y);}else{return null;}},getArea:function(){var area=0.0;if(this.components&&(this.components.length>2)){var sum=0.0;for(var i=0,len=this.components.length;i<len-1;i++){var b=this.components[i];var c=this.components[i+1];sum+=(b.x+c.x)*(c.y-b.y);}
-area=-sum/2.0;}
-return area;},getGeodesicArea:function(projection){var ring=this;if(projection){var gg=new OpenLayers.Projection("EPSG:4326");if(!gg.equals(projection)){ring=this.clone().transform(projection,gg);}}
-var area=0.0;var len=ring.components&&ring.components.length;if(len>2){var p1,p2;for(var i=0;i<len-1;i++){p1=ring.components[i];p2=ring.components[i+1];area+=OpenLayers.Util.rad(p2.x-p1.x)*(2+Math.sin(OpenLayers.Util.rad(p1.y))+
-Math.sin(OpenLayers.Util.rad(p2.y)));}
-area=area*6378137.0*6378137.0/2.0;}
-return area;},containsPoint:function(point){var approx=OpenLayers.Number.limitSigDigs;var digs=14;var px=approx(point.x,digs);var py=approx(point.y,digs);function getX(y,x1,y1,x2,y2){return(((x1-x2)*y)+((x2*y1)-(x1*y2)))/(y1-y2);}
-var numSeg=this.components.length-1;var start,end,x1,y1,x2,y2,cx,cy;var crosses=0;for(var i=0;i<numSeg;++i){start=this.components[i];x1=approx(start.x,digs);y1=approx(start.y,digs);end=this.components[i+1];x2=approx(end.x,digs);y2=approx(end.y,digs);if(y1==y2){if(py==y1){if(x1<=x2&&(px>=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<y2&&(py>=y1&&py<=y2)||y1>y2&&(py<=y1&&py>=y2)){crosses=-1;break;}}
-if(cx<=px){continue;}
-if(x1!=x2&&(cx<Math.min(x1,x2)||cx>Math.max(x1,x2))){continue;}
-if(y1<y2&&(py>=y1&&py<y2)||y1>y2&&(py<y1&&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,len=geometry.components.length;i<len;++i){intersect=geometry.components[i].intersects(this);if(intersect){break;}}}
-return intersect;},getVertices:function(nodes){return(nodes===true)?[]:this.components.slice(0,this.components.length-1);},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:false,size:null,resolution:null,map:null,initialize:function(containerID,options){this.container=OpenLayers.Util.getElement(containerID);OpenLayers.Util.extend(this,options);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent,resolutionChanged){this.extent=extent.clone();if(resolutionChanged){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){var bounds=feature.geometry.getBounds();if(bounds){if(!bounds.intersectsBounds(this.extent)){style={display:"none"};}
-var rendered=this.drawGeometry(feature.geometry,style,feature.id);if(style.display!="none"&&style.label&&rendered!==false){var location=feature.geometry.getCentroid();if(style.labelXOffset||style.labelYOffset){var xOffset=isNaN(style.labelXOffset)?0:style.labelXOffset;var yOffset=isNaN(style.labelYOffset)?0:style.labelYOffset;var res=this.getResolution();location.move(xOffset*res,yOffset*res);}
-this.drawText(feature.id,style,location);}else{this.removeText(feature.id);}
-return rendered;}}},drawGeometry:function(geometry,style,featureId){},drawText:function(featureId,style,location){},removeText:function(featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
-for(var i=0,len=features.length;i<len;++i){var feature=features[i];this.eraseGeometry(feature.geometry,feature.id);this.removeText(feature.id);}},eraseGeometry:function(geometry,featureId){},moveRoot:function(renderer){},getRenderLayerId:function(){return this.container.id;},applyDefaultSymbolizer:function(symbolizer){var result=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);if(symbolizer.stroke===false){delete result.strokeWidth;delete result.strokeColor;}
-if(symbolizer.fill===false){delete result.fillColor;}
-OpenLayers.Util.extend(result,symbolizer);return result;},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:true,hitOverflow:0,canvas:null,features:null,pendingRedraw:false,initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};if(this.hitDetection){this.hitCanvas=document.createElement("canvas");this.hitContext=this.hitCanvas.getContext("2d");}},eraseGeometry:function(geometry,featureId){this.eraseFeatures(this.features[featureId][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setSize:function(size){this.size=size.clone();var root=this.root;root.style.width=size.w+"px";root.style.height=size.h+"px";root.width=size.w;root.height=size.h;this.resolution=null;if(this.hitDetection){var hitCanvas=this.hitCanvas;hitCanvas.style.width=size.w+"px";hitCanvas.style.height=size.h+"px";hitCanvas.width=size.w;hitCanvas.height=size.h;}},drawFeature:function(feature,style){var rendered;if(feature.geometry){style=this.applyDefaultSymbolizer(style||feature.style);var bounds=feature.geometry.getBounds();rendered=(style.display!=="none")&&!!bounds&&bounds.intersectsBounds(this.extent);if(rendered){this.features[feature.id]=[feature,style];}
-else{delete(this.features[feature.id]);}
-this.pendingRedraw=true;}
-if(this.pendingRedraw&&!this.locked){this.redraw();this.pendingRedraw=false;}
-return rendered;},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;i<geometry.components.length;i++){this.drawGeometry(geometry.components[i],style,featureId);}
-return;}
-switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":this.drawPoint(geometry,style,featureId);break;case"OpenLayers.Geometry.LineString":this.drawLineString(geometry,style,featureId);break;case"OpenLayers.Geometry.LinearRing":this.drawLinearRing(geometry,style,featureId);break;case"OpenLayers.Geometry.Polygon":this.drawPolygon(geometry,style,featureId);break;default:break;}},drawExternalGraphic:function(geometry,style,featureId){var img=new Image();if(style.graphicTitle){img.title=style.graphicTitle;}
-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;var onLoad=function(){if(!this.features[featureId]){return;}
-var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var x=(p0+xOffset)|0;var y=(p1+yOffset)|0;var canvas=this.canvas;canvas.globalAlpha=opacity;var factor=OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);canvas.drawImage(img,x*factor,y*factor,width*factor,height*factor);if(this.hitDetection){this.setHitContextStyle("fill",featureId);this.hitContext.fillRect(x,y,width,height);}}};img.onload=OpenLayers.Function.bind(onLoad,this);img.src=style.externalGraphic;},setCanvasStyle:function(type,style){if(type==="fill"){this.canvas.globalAlpha=style['fillOpacity'];this.canvas.fillStyle=style['fillColor'];}else if(type==="stroke"){this.canvas.globalAlpha=style['strokeOpacity'];this.canvas.strokeStyle=style['strokeColor'];this.canvas.lineWidth=style['strokeWidth'];}else{this.canvas.globalAlpha=0;this.canvas.lineWidth=1;}},featureIdToHex:function(featureId){var id=Number(featureId.split("_").pop())+1;if(id>=16777216){this.hitOverflow=id-16777215;id=id%16777216+1;}
-var hex="000000"+id.toString(16);var len=hex.length;hex="#"+hex.substring(len-6,len);return hex;},setHitContextStyle:function(type,featureId,symbolizer){var hex=this.featureIdToHex(featureId);if(type=="fill"){this.hitContext.globalAlpha=1.0;this.hitContext.fillStyle=hex;}else if(type=="stroke"){this.hitContext.globalAlpha=1.0;this.hitContext.strokeStyle=hex;this.hitContext.lineWidth=symbolizer.strokeWidth+2;}else{this.hitContext.globalAlpha=0;this.hitContext.lineWidth=1;}},drawPoint:function(geometry,style,featureId){if(style.graphic!==false){if(style.externalGraphic){this.drawExternalGraphic(geometry,style,featureId);}else{var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var twoPi=Math.PI*2;var radius=style.pointRadius;if(style.fill!==false){this.setCanvasStyle("fill",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.fill();}}
-if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.stroke();}
-this.setCanvasStyle("reset");}}}}},drawLineString:function(geometry,style,featureId){style=OpenLayers.Util.applyDefaults({fill:false},style);this.drawLinearRing(geometry,style,featureId);},drawLinearRing:function(geometry,style,featureId){if(style.fill!==false){this.setCanvasStyle("fill",style);this.renderPath(this.canvas,geometry,style,featureId,"fill");if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"fill");}}
-if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.renderPath(this.canvas,geometry,style,featureId,"stroke");if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"stroke");}}
-this.setCanvasStyle("reset");},renderPath:function(context,geometry,style,featureId,type){var components=geometry.components;var len=components.length;context.beginPath();var start=this.getLocalXY(components[0]);var x=start[0];var y=start[1];if(!isNaN(x)&&!isNaN(y)){context.moveTo(start[0],start[1]);for(var i=1;i<len;++i){var pt=this.getLocalXY(components[i]);context.lineTo(pt[0],pt[1]);}
-if(type==="fill"){context.fill();}else{context.stroke();}}},drawPolygon:function(geometry,style,featureId){var components=geometry.components;var len=components.length;this.drawLinearRing(components[0],style,featureId);for(var i=1;i<len;++i){this.canvas.globalCompositeOperation="destination-out";if(this.hitDetection){this.hitContext.globalCompositeOperation="destination-out";}
-this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({stroke:false,fillOpacity:1.0},style),featureId);this.canvas.globalCompositeOperation="source-over";if(this.hitDetection){this.hitContext.globalCompositeOperation="source-over";}
-this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({fill:false},style),featureId);}},drawText:function(location,style){style=OpenLayers.Util.extend({fontColor:"#000000",labelAlign:"cm"},style);var pt=this.getLocalXY(location);this.setCanvasStyle("reset");this.canvas.fillStyle=style.fontColor;this.canvas.globalAlpha=style.fontOpacity||1.0;var fontStyle=[style.fontStyle?style.fontStyle:"normal","normal",style.fontWeight?style.fontWeight:"normal",style.fontSize?style.fontSize:"1em",style.fontFamily?style.fontFamily:"sans-serif"].join(" ");var labelRows=style.label.split('\n');var numRows=labelRows.length;if(this.canvas.fillText){this.canvas.font=fontStyle;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[1]]||"middle";var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;}
-var lineHeight=this.canvas.measureText('Mg').height||this.canvas.measureText('xx').width;pt[1]+=lineHeight*vfactor*(numRows-1);for(var i=0;i<numRows;i++){this.canvas.fillText(labelRows[i],pt[0],pt[1]+(lineHeight*i));}}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=fontStyle;var hfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[0]];if(hfactor==null){hfactor=-.5;}
-var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;}
-var lineHeight=this.canvas.mozMeasureText('xx');pt[1]+=lineHeight*(1+(vfactor*numRows));for(var i=0;i<numRows;i++){var x=pt[0]+(hfactor*this.canvas.mozMeasureText(labelRows[i]));var y=pt[1]+(i*lineHeight);this.canvas.translate(x,y);this.canvas.mozDrawText(labelRows[i]);this.canvas.translate(-x,-y);}}
-this.setCanvasStyle("reset");},getLocalXY:function(point){var resolution=this.getResolution();var extent=this.extent;var x=(point.x/resolution+(-extent.left/resolution));var y=((extent.top/resolution)-point.y/resolution);return[x,y];},clear:function(){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);this.features={};if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);}},getFeatureIdFromEvent:function(evt){var feature=null;if(this.hitDetection){if(!this.map.dragging){var xy=evt.xy;var x=xy.x|0;var y=xy.y|0;var data=this.hitContext.getImageData(x,y,1,1).data;if(data[3]===255){var id=data[2]+(256*(data[1]+(256*data[0])));if(id){feature=this.features["OpenLayers.Feature.Vector_"+(id-1+this.hitOverflow)][0];}}}}
-return feature;},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
-for(var i=0;i<features.length;++i){delete this.features[features[i].id];}
-this.redraw();},redraw:function(){if(!this.locked){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);}
-var labelMap=[];var feature,style;for(var id in this.features){if(!this.features.hasOwnProperty(id)){continue;}
-feature=this.features[id][0];style=this.features[id][1];this.drawGeometry(feature.geometry,style,feature.id);if(style.label){labelMap.push([feature,style]);}}
-var item;for(var i=0,len=labelMap.length;i<len;++i){item=labelMap[i];this.drawText(item[0].geometry.getCentroid(),item[1]);}}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={"l":"left","r":"right","t":"top","b":"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={"l":0,"r":-1,"t":0,"b":-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.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;},isSingleTouch:function(event){return event.touches&&event.touches.length==1;},isMultiTouch:function(event){return event.touches&&event.touches.length>1;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},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);}
-var cacheID=element._eventCacheID;if(!this.observers[cacheID]){this.observers[cacheID]=[];}
-this.observers[cacheID].push({'element':element,'name':name,'observer':observer,'useCapture':useCapture});if(element.addEventListener){element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}},stopObservingElement:function(elementParam){var element=OpenLayers.Util.getElement(elementParam);var cacheID=element._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[cacheID]);},_removeElementObservers:function(elementObservers){if(elementObservers){for(var i=elementObservers.length-1;i>=0;i--){var entry=elementObservers[i];var args=new Array(entry.element,entry.name,entry.observer,entry.useCapture);var removed=OpenLayers.Event.stopObserving.apply(this,args);}}},stopObserving:function(elementParam,name,observer,useCapture){useCapture=useCapture||false;var element=OpenLayers.Util.getElement(elementParam);var cacheID=element._eventCacheID;if(name=='keypress'){if(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent){name='keydown';}}
-var foundEntry=false;var elementObservers=OpenLayers.Event.observers[cacheID];if(elementObservers){var i=0;while(!foundEntry&&i<elementObservers.length){var cacheEntry=elementObservers[i];if((cacheEntry.name==name)&&(cacheEntry.observer==observer)&&(cacheEntry.useCapture==useCapture)){elementObservers.splice(i,1);if(elementObservers.length==0){delete OpenLayers.Event.observers[cacheID];}
-foundEntry=true;break;}
-i++;}}
-if(foundEntry){if(element.removeEventListener){element.removeEventListener(name,observer,useCapture);}else if(element&&element.detachEvent){element.detachEvent('on'+name,observer);}}
-return foundEntry;},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var cacheID in OpenLayers.Event.observers){var elementObservers=OpenLayers.Event.observers[cacheID];OpenLayers.Event._removeElementObservers.apply(this,[elementObservers]);}
-OpenLayers.Event.observers=false;}},CLASS_NAME:"OpenLayers.Event"};OpenLayers.Event.observe(window,'unload',OpenLayers.Event.unloadCache,false);if(window.Event){OpenLayers.Util.applyDefaults(window.Event,OpenLayers.Event);}else{var Event=OpenLayers.Event;}
-OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:["mouseover","mouseout","mousedown","mouseup","mousemove","click","dblclick","rightclick","dblrightclick","resize","focus","blur","touchstart","touchmove","touchend"],listeners:null,object:null,element:null,eventTypes:null,eventHandler:null,fallThrough:null,includeXY:false,clearMouseListener:null,initialize:function(object,element,eventTypes,fallThrough,options){OpenLayers.Util.extend(this,options);this.object=object;this.fallThrough=fallThrough;this.listeners={};this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this);this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this);this.eventTypes=[];if(eventTypes!=null){for(var i=0,len=eventTypes.length;i<len;i++){this.addEventType(eventTypes[i]);}}
-if(element!=null){this.attachToElement(element);}},destroy:function(){if(this.element){OpenLayers.Event.stopObservingElement(this.element);if(this.element.hasScrollEvent){OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener);}}
-this.element=null;this.listeners=null;this.object=null;this.eventTypes=null;this.fallThrough=null;this.eventHandler=null;},addEventType:function(eventName){if(!this.listeners[eventName]){this.eventTypes.push(eventName);this.listeners[eventName]=[];}},attachToElement:function(element){if(this.element){OpenLayers.Event.stopObservingElement(this.element);}
-this.element=element;for(var i=0,len=this.BROWSER_EVENTS.length;i<len;i++){var eventType=this.BROWSER_EVENTS[i];this.addEventType(eventType);OpenLayers.Event.observe(element,eventType,this.eventHandler);}
-OpenLayers.Event.observe(element,"dragstart",OpenLayers.Event.stop);},on:function(object){for(var type in object){if(type!="scope"){this.register(type,object.scope,object[type]);}}},register:function(type,obj,func){if((func!=null)&&(OpenLayers.Util.indexOf(this.eventTypes,type)!=-1)){if(obj==null){obj=this.object;}
-var listeners=this.listeners[type];listeners.push({obj:obj,func:func});}},registerPriority:function(type,obj,func){if(func!=null){if(obj==null){obj=this.object;}
-var listeners=this.listeners[type];if(listeners!=null){listeners.unshift({obj:obj,func:func});}}},un:function(object){for(var type in object){if(type!="scope"){this.unregister(type,object.scope,object[type]);}}},unregister:function(type,obj,func){if(obj==null){obj=this.object;}
-var listeners=this.listeners[type];if(listeners!=null){for(var i=0,len=listeners.length;i<len;i++){if(listeners[i].obj==obj&&listeners[i].func==func){listeners.splice(i,1);break;}}}},remove:function(type){if(this.listeners[type]!=null){this.listeners[type]=[];}},triggerEvent:function(type,evt){var listeners=this.listeners[type];if(!listeners||listeners.length==0){return undefined;}
-if(evt==null){evt={};}
-evt.object=this.object;evt.element=this.element;if(!evt.type){evt.type=type;}
-listeners=listeners.slice();var continueChain;for(var i=0,len=listeners.length;i<len;i++){var callback=listeners[i];continueChain=callback.func.apply(callback.obj,[evt]);if((continueChain!=undefined)&&(continueChain==false)){break;}}
-if(!this.fallThrough){OpenLayers.Event.stop(evt,true);}
-return continueChain;},handleBrowserEvent:function(evt){var type=evt.type,listeners=this.listeners[type];if(!listeners||listeners.length==0){return;}
-var touches=evt.touches;if(touches&&touches[0]){var x=0;var y=0;var num=touches.length;var touch;for(var i=0;i<num;++i){touch=touches[i];x+=touch.clientX;y+=touch.clientY;}
-evt.clientX=x/num;evt.clientY=y/num;}
-if(this.includeXY){evt.xy=this.getMousePosition(evt);}
-this.triggerEvent(type,evt);},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;var body=document.body;if(body&&!((body.scrollTop!=0||body.scrollLeft!=0)&&navigator.userAgent.match(/iPhone/i))){this.element.offsets=null;}},getMousePosition:function(evt){if(!this.includeXY){this.clearMouseCache();}else if(!this.element.hasScrollEvent){OpenLayers.Event.observe(window,"scroll",this.clearMouseListener);this.element.hasScrollEvent=true;}
-if(!this.element.scrolls){var viewportElement=OpenLayers.Util.getViewportElement();this.element.scrolls=[viewportElement.scrollLeft,viewportElement.scrollTop];}
-if(!this.element.lefttop){this.element.lefttop=[(document.documentElement.clientLeft||0),(document.documentElement.clientTop||0)];}
-if(!this.element.offsets){this.element.offsets=OpenLayers.Util.pagePosition(this.element);}
-return new OpenLayers.Pixel((evt.clientX+this.element.scrolls[0])-this.element.offsets[0]
--this.element.lefttop[0],(evt.clientY+this.element.scrolls[1])-this.element.offsets[1]
--this.element.lefttop[1]);},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:false,evt:null,initialize:function(control,callbacks,options){OpenLayers.Util.extend(this,options);this.control=control;this.callbacks=callbacks;var map=this.map||control.map;if(map){this.setMap(map);}
-this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},setMap:function(map){this.map=map;},checkModifiers:function(evt){if(this.keyMask==null){return true;}
-var keyModifiers=(evt.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(evt.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(evt.altKey?OpenLayers.Handler.MOD_ALT:0);return(keyModifiers==this.keyMask);},activate:function(){if(this.active){return false;}
-var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.register(events[i],this[events[i]]);}}
-this.active=true;return true;},deactivate:function(){if(!this.active){return false;}
-var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.unregister(events[i],this[events[i]]);}}
-this.active=false;return true;},callback:function(name,args){if(name&&this.callbacks[name]){this.callbacks[name].apply(this.control,args);}},register:function(name,method){this.map.events.registerPriority(name,this,method);this.map.events.registerPriority(name,this,this.setEvent);},unregister:function(name,method){this.map.events.unregister(name,this,method);this.map.events.unregister(name,this,this.setEvent);},setEvent:function(evt){this.evt=evt;return true;},destroy:function(){this.deactivate();this.control=this.map=null;},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:true,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null;},onWheelEvent:function(e){if(!this.map||!this.checkModifiers(e)){return;}
-var overScrollableDiv=false;var overLayerDiv=false;var overMapDiv=false;var elem=OpenLayers.Event.element(e);while((elem!=null)&&!overMapDiv&&!overScrollableDiv){if(!overScrollableDiv){try{if(elem.currentStyle){overflow=elem.currentStyle["overflow"];}else{var style=document.defaultView.getComputedStyle(elem,null);var overflow=style.getPropertyValue("overflow");}
-overScrollableDiv=(overflow&&(overflow=="auto")||(overflow=="scroll"));}catch(err){}}
-if(!overLayerDiv){for(var i=0,len=this.map.layers.length;i<len;i++){if(elem==this.map.layers[i].div||elem==this.map.layers[i].pane){overLayerDiv=true;break;}}}
-overMapDiv=(elem==this.map.div);elem=elem.parentNode;}
-if(!overScrollableDiv&&overMapDiv){if(overLayerDiv){var delta=0;if(!e){e=window.event;}
-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;}
-this.delta=this.delta+delta;if(this.interval){window.clearTimeout(this._timeoutId);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(e);},this),this.interval);}else{this.wheelZoom(e);}}
-OpenLayers.Event.stop(e);}},wheelZoom:function(e){var delta=this.delta;this.delta=0;if(delta){if(this.mousePosition){e.xy=this.mousePosition;}
-if(!e.xy){e.xy=this.map.getPixelFromLonLat(this.map.getCenter());}
-if(delta<0){this.callback("down",[e,this.cumulative?delta:-1]);}else{this.callback("up",[e,this.cumulative?delta:1]);}}},mousemove:function(evt){this.mousePosition=evt.xy;},activate:function(evt){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.observe(window,"mousewheel",wheelListener);OpenLayers.Event.observe(document,"mousewheel",wheelListener);return true;}else{return false;}},deactivate:function(evt){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.stopObserving(window,"mousewheel",wheelListener);OpenLayers.Event.stopObserving(document,"mousewheel",wheelListener);return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(config){OpenLayers.Util.extend(this,config);},clone:function(){var Type=eval(this.CLASS_NAME);return new Type(OpenLayers.Util.extend({},this));},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Tile=OpenLayers.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,initialize:function(layer,position,bounds,url,size,options){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;if(size){this.size=size.clone();}
-this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);OpenLayers.Util.extend(this,options);},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload");}},destroy:function(){this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile(this.layer,this.position,this.bounds,this.url,this.size);}
-OpenLayers.Util.applyDefaults(obj,this);return obj;},draw:function(){var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));this.shouldDraw=(withinMaxExtent||this.layer.displayOutsideMaxExtent);this.clear();return this.shouldDraw;},moveTo:function(bounds,position,redraw){if(redraw==null){redraw=true;}
-this.bounds=bounds.clone();this.position=position.clone();if(redraw){this.draw();}},clear:function(){},getBoundsFromBaseLayer:function(position){var msg=OpenLayers.i18n('reprojectDeprecated',{'layerName':this.layer.name});OpenLayers.Console.warn(msg);var topLeft=this.layer.map.getLonLatFromLayerPx(position);var bottomRightPx=position.clone();bottomRightPx.x+=this.size.w;bottomRightPx.y+=this.size.h;var bottomRight=this.layer.map.getLonLatFromLayerPx(bottomRightPx);if(topLeft.lon>bottomRight.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;},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,isBackBuffer:false,isFirstDraw:true,backBufferTile:null,maxGetUrlLength:null,initialize:function(layer,position,bounds,url,size,options){OpenLayers.Tile.prototype.initialize.apply(this,arguments);if(this.maxGetUrlLength!=null){OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame);}
-this.url=url;this.frame=document.createElement('div');this.frame.style.overflow='hidden';this.frame.style.position='absolute';this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();},destroy:function(){if(this.imgDiv!=null){this.removeImgDiv();}
-this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)){this.layer.div.removeChild(this.frame);}
-this.frame=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null;}
-this.layer.events.unregister("loadend",this,this.resetBackBuffer);OpenLayers.Tile.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size);}
-obj=OpenLayers.Tile.prototype.clone.apply(this,[obj]);obj.imgDiv=null;return obj;},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position);}
-var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if((OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1)||this.layer.singleTile){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);}
-this.startTransition();}else{if(this.backBufferTile){this.backBufferTile.clear();}}}else{if(drawTile&&this.isFirstDraw){this.events.register('loadend',this,this.showTile);this.isFirstDraw=false;}}
-if(!drawTile){return false;}
-if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");}
-return this.renderTile();},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.getImageSize(this.bounds)||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();}
-this.backBufferTile.hide();}},renderTile:function(){if(this.layer.async){this.initImgDiv();this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{this.url=this.layer.getURL(this.bounds);this.initImgDiv();this.positionImage();}
-return true;},positionImage:function(){if(this.layer===null){return;}
-OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize(this.bounds);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;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){if(this.imgDiv==null){var offset=this.layer.imageOffset;var size=this.layer.getImageSize(this.bounds);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);}
-if(OpenLayers.Util.isArray(this.layer.url)){this.imgDiv.urls=this.layer.url.slice();}
-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));}
-this.imgDiv.viewRequestID=this.layer.map.viewRequestID;},removeImgDiv:function(){OpenLayers.Event.stopObservingElement(this.imgDiv);if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;}
-this.imgDiv.urls=null;var child=this.imgDiv.firstChild;if(child){OpenLayers.Event.stopObservingElement(child);this.imgDiv.removeChild(child);delete child;}else{this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}},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!=1){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();}}},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(OpenLayers.IS_GECKO===true){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.BROWSER_NAME=="safari"||OpenLayers.BROWSER_NAME=="opera");OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(yOrdering){this.compare=yOrdering?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear();},insert:function(newNode){if(this.exists(newNode)){this.remove(newNode);}
-var nodeId=newNode.id;this.determineZIndex(newNode);var leftIndex=-1;var rightIndex=this.order.length;var middle;while(rightIndex-leftIndex>1){middle=parseInt((leftIndex+rightIndex)/2);var placement=this.compare(this,newNode,OpenLayers.Util.getElement(this.order[middle]));if(placement>0){leftIndex=middle;}else{rightIndex=middle;}}
-this.order.splice(rightIndex,0,nodeId);this.indices[nodeId]=this.getZIndex(newNode);return this.getNextElement(rightIndex);},remove:function(node){var nodeId=node.id;var arrayIndex=OpenLayers.Util.indexOf(this.order,nodeId);if(arrayIndex>=0){this.order.splice(arrayIndex,1);delete this.indices[nodeId];if(this.order.length>0){var lastId=this.order[this.order.length-1];this.maxZIndex=this.indices[lastId];}else{this.maxZIndex=0;}}},clear:function(){this.order=[];this.indices={};this.maxZIndex=0;},exists:function(node){return(this.indices[node.id]!=null);},getZIndex:function(node){return node._style.graphicZIndex;},determineZIndex:function(node){var zIndex=node._style.graphicZIndex;if(zIndex==null){zIndex=this.maxZIndex;node._style.graphicZIndex=zIndex;}else if(zIndex>this.maxZIndex){this.maxZIndex=zIndex;}},getNextElement:function(index){var nextIndex=index+1;if(nextIndex<this.order.length){var nextElement=OpenLayers.Util.getElement(this.order[nextIndex]);if(nextElement==undefined){nextElement=this.getNextElement(nextIndex);}
-return nextElement;}else{return null;}},CLASS_NAME:"OpenLayers.ElementsIndexer"});OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(indexer,newNode,nextNode){var newZIndex=indexer.getZIndex(newNode);var returnVal=0;if(nextNode){var nextZIndex=indexer.getZIndex(nextNode);returnVal=newZIndex-nextZIndex;}
-return returnVal;},Z_ORDER_DRAWING_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal==0){returnVal=1;}
-return returnVal;},Z_ORDER_Y_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal===0){var result=nextNode._boundsBottom-newNode._boundsBottom;returnVal=(result===0)?1:result;}
-return returnVal;}};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(options&&(options.zIndexing||options.yOrdering)){this.indexer=new OpenLayers.ElementsIndexer(options.yOrdering);}},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){var child;var root=this.vectorRoot;if(root){while(child=root.firstChild){root.removeChild(child);}}
-root=this.textRoot;if(root){while(child=root.firstChild){root.removeChild(child);}}
-if(this.indexer){this.indexer.clear();}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;var rendered=true;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0,len=geometry.components.length;i<len;i++){rendered=this.drawGeometry(geometry.components[i],style,featureId)&&rendered;}
-return rendered;};rendered=false;var removeBackground=false;if(style.display!="none"){if(style.backgroundGraphic){this.redrawBackgroundNode(geometry.id,geometry,style,featureId);}else{removeBackground=true;}
-rendered=this.redrawNode(geometry.id,geometry,style,featureId);}
-if(rendered==false){var node=document.getElementById(geometry.id);if(node){if(node._style.backgroundGraphic){removeBackground=true;}
-node.parentNode.removeChild(node);}}
-if(removeBackground){var node=document.getElementById(geometry.id+this.BACKGROUND_ID_SUFFIX);if(node){node.parentNode.removeChild(node);}}
-return rendered;},redrawNode:function(id,geometry,style,featureId){style=this.applyDefaultSymbolizer(style);var node=this.nodeFactory(id,this.getNodeType(geometry,style));node._featureId=featureId;node._boundsBottom=geometry.getBounds().bottom;node._geometryClass=geometry.CLASS_NAME;node._style=style;var drawResult=this.drawGeometryNode(node,geometry,style);if(drawResult===false){return false;}
-node=drawResult.node;if(this.indexer){var insert=this.indexer.insert(node);if(insert){this.vectorRoot.insertBefore(node,insert);}else{this.vectorRoot.appendChild(node);}}else{if(node.parentNode!==this.vectorRoot){this.vectorRoot.appendChild(node);}}
-this.postDraw(node);return drawResult.complete;},redrawBackgroundNode:function(id,geometry,style,featureId){var backgroundStyle=OpenLayers.Util.extend({},style);backgroundStyle.externalGraphic=backgroundStyle.backgroundGraphic;backgroundStyle.graphicXOffset=backgroundStyle.backgroundXOffset;backgroundStyle.graphicYOffset=backgroundStyle.backgroundYOffset;backgroundStyle.graphicZIndex=backgroundStyle.backgroundGraphicZIndex;backgroundStyle.graphicWidth=backgroundStyle.backgroundWidth||backgroundStyle.graphicWidth;backgroundStyle.graphicHeight=backgroundStyle.backgroundHeight||backgroundStyle.graphicHeight;backgroundStyle.backgroundGraphic=null;backgroundStyle.backgroundXOffset=null;backgroundStyle.backgroundYOffset=null;backgroundStyle.backgroundGraphicZIndex=null;return this.redrawNode(id+this.BACKGROUND_ID_SUFFIX,geometry,backgroundStyle,null);},drawGeometryNode:function(node,geometry,style){style=style||node._style;var options={'isFilled':style.fill===undefined?true:style.fill,'isStroked':style.stroke===undefined?!!style.strokeWidth:style.stroke};var drawn;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.graphic===false){options.isFilled=false;options.isStroked=false;}
-drawn=this.drawPoint(node,geometry);break;case"OpenLayers.Geometry.LineString":options.isFilled=false;drawn=this.drawLineString(node,geometry);break;case"OpenLayers.Geometry.LinearRing":drawn=this.drawLinearRing(node,geometry);break;case"OpenLayers.Geometry.Polygon":drawn=this.drawPolygon(node,geometry);break;case"OpenLayers.Geometry.Surface":drawn=this.drawSurface(node,geometry);break;case"OpenLayers.Geometry.Rectangle":drawn=this.drawRectangle(node,geometry);break;default:break;}
-node._options=options;if(drawn!=false){return{node:this.setStyle(node,style,options,geometry),complete:drawn};}else{return false;}},postDraw:function(node){},drawPoint:function(node,geometry){},drawLineString:function(node,geometry){},drawLinearRing:function(node,geometry){},drawPolygon:function(node,geometry){},drawRectangle:function(node,geometry){},drawCircle:function(node,geometry){},drawSurface:function(node,geometry){},removeText:function(featureId){var label=document.getElementById(featureId+this.LABEL_ID_SUFFIX);if(label){this.textRoot.removeChild(label);}},getFeatureIdFromEvent:function(evt){var target=evt.target;var useElement=target&&target.correspondingUseElement;var node=useElement?useElement:(target||evt.srcElement);var featureId=node._featureId;return featureId;},eraseGeometry:function(geometry,featureId){if((geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPoint")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiLineString")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPolygon")||(geometry.CLASS_NAME=="OpenLayers.Geometry.Collection")){for(var i=0,len=geometry.components.length;i<len;i++){this.eraseGeometry(geometry.components[i],featureId);}}else{var element=OpenLayers.Util.getElement(geometry.id);if(element&&element.parentNode){if(element.geometry){element.geometry.destroy();element.geometry=null;}
-element.parentNode.removeChild(element);if(this.indexer){this.indexer.remove(element);}
-if(element._style.backgroundGraphic){var backgroundId=geometry.id+this.BACKGROUND_ID_SUFFIX;var bElem=OpenLayers.Util.getElement(backgroundId);if(bElem&&bElem.parentNode){bElem.parentNode.removeChild(bElem);}}}}},nodeFactory:function(id,type){var node=OpenLayers.Util.getElement(id);if(node){if(!this.nodeTypeCompare(node,type)){node.parentNode.removeChild(node);node=this.nodeFactory(id,type);}}else{node=this.createNode(type,id);}
-return node;},nodeTypeCompare:function(node,type){},createNode:function(type,id){},moveRoot:function(renderer){var root=this.root;if(renderer.root.parentNode==this.rendererRoot){root=renderer.root;}
-root.parentNode.removeChild(root);renderer.rendererRoot.appendChild(root);},getRenderLayerId:function(){return this.root.parentNode.parentNode.id;},isComplexSymbol:function(graphicName){return(graphicName!="circle")&&!!graphicName;},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Renderer.symbol={"star":[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],"cross":[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],"x":[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],"square":[0,0,0,1,1,1,1,0,0,0],"triangle":[0,10,10,10,5,0,0,10]};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:false,displayClass:"",title:"",autoActivate:false,active:null,handler:null,eventListeners:null,events:null,EVENT_TYPES:["activate","deactivate"],initialize:function(options){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,options);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}
-if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}},destroy:function(){if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);}
-this.events.destroy();this.events=null;}
-this.eventListeners=null;if(this.handler){this.handler.destroy();this.handler=null;}
-if(this.handlers){for(var key in this.handlers){if(this.handlers.hasOwnProperty(key)&&typeof this.handlers[key].destroy=="function"){this.handlers[key].destroy();}}
-this.handlers=null;}
-if(this.map){this.map.removeControl(this);this.map=null;}
-this.div=null;},setMap:function(map){this.map=map;if(this.handler){this.handler.setMap(map);}},draw:function(px){if(this.div==null){this.div=OpenLayers.Util.createDiv(this.id);this.div.className=this.displayClass;if(!this.allowSelection){this.div.className+=" olControlNoSelect";this.div.setAttribute("unselectable","on",0);this.div.onselectstart=OpenLayers.Function.False;}
-if(this.title!=""){this.div.title=this.title;}}
-if(px!=null){this.position=px.clone();}
-this.moveTo(this.position);return this.div;},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},activate:function(){if(this.active){return false;}
-if(this.handler){this.handler.activate();}
-this.active=true;if(this.map){OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");}
-this.events.triggerEvent("activate");return true;},deactivate:function(){if(this.active){if(this.handler){this.handler.deactivate();}
-this.active=false;if(this.map){OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");}
-this.events.triggerEvent("deactivate");return true;}
-return false;},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(url){url=url||window.location.href;var parameters=OpenLayers.Util.getParameters(url);var index=url.indexOf('#');if(index>0){url='?'+url.substring(index+1,url.length);OpenLayers.Util.extend(parameters,OpenLayers.Util.getParameters(url));}
-return parameters;},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if((control!=this)&&(control.CLASS_NAME=="OpenLayers.Control.ArgParser")){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;}
-break;}}
-if(i==this.map.controls.length){var args=this.getParameters();if(args.layers){this.layers=args.layers;this.map.events.register('addlayer',this,this.configureLayers);this.configureLayers();}
-if(args.lat&&args.lon){this.center=new OpenLayers.LonLat(parseFloat(args.lon),parseFloat(args.lat));if(args.zoom){this.zoom=parseInt(args.zoom);}
-this.map.events.register('changebaselayer',this,this.setCenter);this.setCenter();}}},setCenter:function(){if(this.map.baseLayer){this.map.events.unregister('changebaselayer',this,this.setCenter);if(this.displayProjection){this.center.transform(this.displayProjection,this.map.getProjectionObject());}
-this.map.setCenter(this.center,this.zoom);}},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister('addlayer',this,this.configureLayers);for(var i=0,len=this.layers.length;i<len;i++){var layer=this.map.layers[i];var c=this.layers.charAt(i);if(c=="B"){this.map.setBaseLayer(layer);}else if((c=="T")||(c=="F")){layer.setVisibility(c=="T");}}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:false,base:'',displayProjection:null,initialize:function(element,base,options){if(element!==null&&typeof element=='object'&&!OpenLayers.Util.isElement(element)){options=element;this.base=document.location.href;OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.element!=null){this.element=OpenLayers.Util.getElement(this.element);}}
-else{OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);this.base=base||document.location.href;}},destroy:function(){if(this.element.parentNode==this.div){this.div.removeChild(this.element);}
-this.element=null;this.map.events.unregister('moveend',this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if(control.CLASS_NAME==this.argParserClass.CLASS_NAME){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;}
-break;}}
-if(i==this.map.controls.length){this.map.addControl(new this.argParserClass({'displayProjection':this.displayProjection}));}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element&&!this.anchor){this.element=document.createElement("a");this.element.innerHTML=OpenLayers.i18n("Permalink");this.element.href="";this.div.appendChild(this.element);}
-this.map.events.on({'moveend':this.updateLink,'changelayer':this.updateLink,'changebaselayer':this.updateLink,scope:this});this.updateLink();return this.div;},updateLink:function(){var separator=this.anchor?'#':'?';var href=this.base;if(href.indexOf(separator)!=-1){href=href.substring(0,href.indexOf(separator));}
-href+=separator+OpenLayers.Util.getParameterString(this.createParams());if(this.anchor&&!this.element){window.location.href=href;}
-else{this.element.href=href;}},createParams:function(center,zoom,layers){center=center||this.map.getCenter();var params=OpenLayers.Util.getParameters(this.base);if(center){params.zoom=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(),this.displayProjection);lon=mapPosition.x;lat=mapPosition.y;}
-params.lat=Math.round(lat*100000)/100000;params.lon=Math.round(lon*100000)/100000;layers=layers||this.map.layers;params.layers='';for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];if(layer.isBaseLayer){params.layers+=(layer==this.map.baseLayer)?"B":"0";}else{params.layers+=(layer.getVisibility())?"T":"F";}}}
-return params;},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:true,autoDestroy:true,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;this.active=false;},destroy:function(){this.deactivate();this.layer=null;this.options=null;},setLayer:function(layer){this.layer=layer;},activate:function(){if(!this.active){this.active=true;return true;}
-return false;},deactivate:function(){if(this.active){this.active=false;return true;}
-return false;},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:false,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({"refresh":this.load,scope:this});if(this.layer.visibility==true||this.preload){this.load();}else{this.layer.events.on({"visibilitychanged":this.load,scope:this});}
-return true;}
-return false;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"refresh":this.load,"visibilitychanged":this.load,scope:this});}
-return deactivated;},load:function(options){var layer=this.layer;layer.events.triggerEvent("loadstart");layer.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,layer.map.getProjectionObject()),filter:layer.filter},options));layer.events.un({"visibilitychanged":this.load,scope:this});},merge:function(mapProjection,resp){var layer=this.layer;layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){if(!mapProjection.equals(layer.projection)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(layer.projection,mapProjection);}}}
-layer.addFeatures(features);}
-layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Date={toISOString:(function(){if("toISOString"in Date.prototype){return function(date){return date.toISOString();};}else{function pad(num,len){var str=num+"";while(str.length<len){str="0"+str;}
-return str;}
-return function(date){var str;if(isNaN(date.getTime())){str="Invalid Date";}else{str=date.getUTCFullYear()+"-"+
-pad(date.getUTCMonth()+1,2)+"-"+
-pad(date.getUTCDate(),2)+"T"+
-pad(date.getUTCHours(),2)+":"+
-pad(date.getUTCMinutes(),2)+":"+
-pad(date.getUTCSeconds(),2)+"."+
-pad(date.getUTCMilliseconds(),3)+"Z";}
-return str;};}})(),parse:function(str){var date;var match=str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))?$/);if(match&&(match[1]||match[7])){var year=parseInt(match[1],10)||0;var month=(parseInt(match[2],10)-1)||0;var day=parseInt(match[3],10)||1;date=new Date(Date.UTC(year,month,day));var type=match[7];if(type){var hours=parseInt(match[4],10);var minutes=parseInt(match[5],10);var secFrac=parseFloat(match[6]);var seconds=secFrac|0;var milliseconds=Math.round(1000*(secFrac-seconds));date.setUTCHours(hours,minutes,seconds,milliseconds);if(type!=="Z"){var hoursOffset=parseInt(type,10);var minutesOffset=parseInt(match[8],10)||0;var offset=-1000*(60*(hoursOffset*60)+minutesOffset*60);date=new Date(date.getTime()+offset);}}}else{date=new Date("invalid");}
-return date;}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(options){if(window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");}
-OpenLayers.Format.prototype.initialize.apply(this,[options]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var alias in this.namespaces){this.namespaceAlias[this.namespaces[alias]]=alias;}},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,arguments);},setNamespace:function(alias,uri){this.namespaces[alias]=uri;this.namespaceAlias[uri]=alias;},read:function(text){var index=text.indexOf('<');if(index>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;});if(this.keepData){this.data=node;}
-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(typeof text!=="string"){text=String(text);}
-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,len=allNodes.length;i<len;++i){potentialNode=allNodes[i];fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if((name=="*")||(fullName==potentialNode.nodeName)){if((uri=="*")||(uri==potentialNode.namespaceURI)){elements.push(potentialNode);}}}}
-return elements;},getAttributeNodeNS:function(node,uri,name){var attributeNode=null;if(node.getAttributeNodeNS){attributeNode=node.getAttributeNodeNS(uri,name);}else{var attributes=node.attributes;var potentialNode,fullName;for(var i=0,len=attributes.length;i<len;++i){potentialNode=attributes[i];if(potentialNode.namespaceURI==uri){fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if(fullName==potentialNode.nodeName){attributeNode=potentialNode;break;}}}}
-return attributeNode;},getAttributeNS:function(node,uri,name){var attributeValue="";if(node.getAttributeNS){attributeValue=node.getAttributeNS(uri,name)||"";}else{var attributeNode=this.getAttributeNodeNS(node,uri,name);if(attributeNode){attributeValue=attributeNode.nodeValue;}}
-return attributeValue;},getChildValue:function(node,def){var value=def||"";if(node){for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 3:case 4:value+=child.nodeValue;}}}
-return value;},concatChildValues:function(node,def){var value="";var child=node.firstChild;var childValue;while(child){childValue=child.nodeValue;if(childValue){value+=childValue;}
-child=child.nextSibling;}
-if(value==""&&def!=undefined){value=def;}
-return value;},isSimpleContent:function(node){var simple=true;for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===1){simple=false;break;}}
-return simple;},contentType:function(node){var simple=false,complex=false;var type=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 1:complex=true;break;case 8:break;default:simple=true;}
-if(complex&&simple){break;}}
-if(complex&&simple){type=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;}else if(complex){return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;}else if(simple){return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE;}
-return type;},hasAttributeNS:function(node,uri,name){var found=false;if(node.hasAttributeNS){found=node.hasAttributeNS(uri,name);}else{found=!!this.getAttributeNodeNS(node,uri,name);}
-return found;},setAttributeNS:function(node,uri,name,value){if(node.setAttributeNS){node.setAttributeNS(uri,name,value);}else{if(this.xmldom){if(uri){var attribute=node.ownerDocument.createNode(2,name,uri);attribute.nodeValue=value;node.setAttributeNode(attribute);}else{node.setAttribute(name,value);}}else{throw"setAttributeNS not implemented";}}},createElementNSPlus:function(name,options){options=options||{};var uri=options.uri||this.namespaces[options.prefix];if(!uri){var 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);}
-var value=options.value;if(value!=null){node.appendChild(this.createTextNode(value));}
-return node;},setAttributes:function(node,obj){var value,uri;for(var name in obj){if(obj[name]!=null&&obj[name].toString){value=obj[name].toString();uri=this.namespaces[name.substring(0,name.indexOf(":"))]||null;this.setAttributeNS(node,uri,name,value);}}},readNode:function(node,obj){if(!obj){obj={};}
-var group=this.readers[node.namespaceURI?this.namespaceAlias[node.namespaceURI]:this.defaultPrefix];if(group){var local=node.localName||node.nodeName.split(":").pop();var reader=group[local]||group["*"];if(reader){reader.apply(this,[node,obj]);}}
-return obj;},readChildNodes:function(node,obj){if(!obj){obj={};}
-var children=node.childNodes;var child;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){this.readNode(child,obj);}}
-return obj;},writeNode:function(name,obj,parent){var prefix,local;var split=name.indexOf(":");if(split>0){prefix=name.substring(0,split);local=name.substring(split+1);}else{if(parent){prefix=this.namespaceAlias[parent.namespaceURI];}else{prefix=this.defaultPrefix;}
-local=name;}
-var child=this.writers[prefix][local].apply(this,[obj]);if(parent){parent.appendChild(child);}
-return child;},getChildEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.firstChild,name,uri);},getNextEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.nextSibling,name,uri);},getThisOrNextEl:function(node,name,uri){outer:for(var sibling=node;sibling;sibling=sibling.nextSibling){switch(sibling.nodeType){case 1:if((!name||name===(sibling.localName||sibling.nodeName.split(":").pop()))&&(!uri||uri===sibling.namespaceURI)){break outer;}
-sibling=null;break outer;case 3:if(/^\s*$/.test(sibling.nodeValue)){break;}
-case 4:case 6:case 12:case 10:case 11:sibling=null;break outer;}}
-return sibling||null;},lookupNamespaceURI:function(node,prefix){var uri=null;if(node){if(node.lookupNamespaceURI){uri=node.lookupNamespaceURI(prefix);}else{outer:switch(node.nodeType){case 1:if(node.namespaceURI!==null&&node.prefix===prefix){uri=node.namespaceURI;break outer;}
-var len=node.attributes.length;if(len){var attr;for(var i=0;i<len;++i){attr=node.attributes[i];if(attr.prefix==="xmlns"&&attr.name==="xmlns:"+prefix){uri=attr.value||null;break outer;}else if(attr.name==="xmlns"&&prefix===null){uri=attr.value||null;break outer;}}}
-uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;case 2:uri=this.lookupNamespaceURI(node.ownerElement,prefix);break outer;case 9:uri=this.lookupNamespaceURI(node.documentElement,prefix);break outer;case 6:case 12:case 10:case 11:break outer;default:uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;}}}
-return uri;},getXMLDoc:function(){if(!OpenLayers.Format.XML.document&&!this.xmldom){if(document.implementation&&document.implementation.createDocument){OpenLayers.Format.XML.document=document.implementation.createDocument("","",null);}else if(!this.xmldom&&window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");}}
-return OpenLayers.Format.XML.document||this.xmldom;},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},getArea:function(){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getArea());for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getArea());}}
-return area;},getGeodesicArea:function(projection){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getGeodesicArea(projection));for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getGeodesicArea(projection));}}
-return area;},containsPoint:function(point){var numRings=this.components.length;var contained=false;if(numRings>0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i<numRings;++i){hole=this.components[i].containsPoint(point);if(hole){if(hole===1){contained=1;}else{contained=false;}
-break;}}}}}
-return contained;},intersects:function(geometry){var intersect=false;var i,len;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"||geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){for(i=0,len=this.components.length;i<len;++i){intersect=geometry.intersects(this.components[i]);if(intersect){break;}}
-if(!intersect){for(i=0,len=geometry.components.length;i<len;++i){intersect=this.containsPoint(geometry.components[i]);if(intersect){break;}}}}else{for(i=0,len=geometry.components.length;i<len;++i){intersect=this.intersects(geometry.components[i]);if(intersect){break;}}}
-if(!intersect&&geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){var ring=this.components[0];for(i=0,len=ring.components.length;i<len;++i){intersect=geometry.containsPoint(ring.components[i]);if(intersect){break;}}}
-return intersect;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var result;if(!edge&&this.intersects(geometry)){result=0;}else{result=OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,[geometry,options]);}
-return result;},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(origin,radius,sides,rotation){var angle=Math.PI*((1/sides)-(1/2));if(rotation){angle+=(rotation/180)*Math.PI;}
-var rotatedAngle,x,y;var points=[];for(var i=0;i<sides;++i){rotatedAngle=angle+(i*2*Math.PI/sides);x=origin.x+(radius*Math.cos(rotatedAngle));y=origin.y+(radius*Math.sin(rotatedAngle));points.push(new OpenLayers.Geometry.Point(x,y));}
-var ring=new OpenLayers.Geometry.LinearRing(points);return new OpenLayers.Geometry.Polygon([ring]);};OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:true,user:undefined,password:undefined,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this,null,["complete","success","failure"]),issue:function(config){var defaultConfig=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});config=OpenLayers.Util.applyDefaults(config,defaultConfig);var request=new OpenLayers.Request.XMLHttpRequest();var url=OpenLayers.Util.urlAppend(config.url,OpenLayers.Util.getParameterString(config.params||{}));var sameOrigin=!(url.indexOf("http")==0);var urlParts=!sameOrigin&&url.match(this.URL_SPLIT_REGEX);if(urlParts){var location=window.location;sameOrigin=urlParts[1]==location.protocol&&urlParts[3]==location.hostname;var uPort=urlParts[4],lPort=location.port;if(uPort!=80&&uPort!=""||lPort!="80"&&lPort!=""){sameOrigin=sameOrigin&&uPort==lPort;}}
-if(!sameOrigin){if(config.proxy){if(typeof config.proxy=="function"){url=config.proxy(url);}else{url=config.proxy+encodeURIComponent(url);}}else{OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:url});}}
-request.open(config.method,url,config.async,config.user,config.password);for(var header in config.headers){request.setRequestHeader(header,config.headers[header]);}
-var events=this.events;var self=this;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){self.runCallbacks({request:request,config:config,requestUrl:url});}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){if(request.readyState!==0){request.send(config.data);}},0);}
-return request;},runCallbacks:function(options){var request=options.request;var config=options.config;var complete=(config.scope)?OpenLayers.Function.bind(config.callback,config.scope):config.callback;var success;if(config.success){success=(config.scope)?OpenLayers.Function.bind(config.success,config.scope):config.success;}
-var failure;if(config.failure){failure=(config.scope)?OpenLayers.Function.bind(config.failure,config.scope):config.failure;}
-if(OpenLayers.Util.createUrlObject(config.url).protocol=="file:"&&request.responseText){request.status=200;}
-complete(request);if(!request.status||(request.status>=200&&request.status<300)){this.events.triggerEvent("success",options);if(success){success(request);}}
-if(request.status&&(request.status<200||request.status>=300)){this.events.triggerEvent("failure",options);if(failure){failure(request);}}},GET:function(config){config=OpenLayers.Util.extend(config,{method:"GET"});return OpenLayers.Request.issue(config);},POST:function(config){config=OpenLayers.Util.extend(config,{method:"POST"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";}
-return OpenLayers.Request.issue(config);},PUT:function(config){config=OpenLayers.Util.extend(config,{method:"PUT"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";}
-return OpenLayers.Request.issue(config);},DELETE:function(config){config=OpenLayers.Util.extend(config,{method:"DELETE"});return OpenLayers.Request.issue(config);},HEAD:function(config){config=OpenLayers.Util.extend(config,{method:"HEAD"});return OpenLayers.Request.issue(config);},OPTIONS:function(config){config=OpenLayers.Util.extend(config,{method:"OPTIONS"});return OpenLayers.Request.issue(config);}};(function(){var oXMLHttpRequest=window.XMLHttpRequest;var bGecko=!!window.controllers,bIE=window.document.all&&!window.opera,bIE7=bIE&&window.navigator.userAgent.match(/MSIE 7.0/);function fXMLHttpRequest(){this._object=oXMLHttpRequest&&!bIE7?new oXMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[];};function cXMLHttpRequest(){return new fXMLHttpRequest;};cXMLHttpRequest.prototype=fXMLHttpRequest.prototype;if(bGecko&&oXMLHttpRequest.wrapped)
-cXMLHttpRequest.wrapped=oXMLHttpRequest.wrapped;cXMLHttpRequest.UNSENT=0;cXMLHttpRequest.OPENED=1;cXMLHttpRequest.HEADERS_RECEIVED=2;cXMLHttpRequest.LOADING=3;cXMLHttpRequest.DONE=4;cXMLHttpRequest.prototype.readyState=cXMLHttpRequest.UNSENT;cXMLHttpRequest.prototype.responseText='';cXMLHttpRequest.prototype.responseXML=null;cXMLHttpRequest.prototype.status=0;cXMLHttpRequest.prototype.statusText='';cXMLHttpRequest.prototype.priority="NORMAL";cXMLHttpRequest.prototype.onreadystatechange=null;cXMLHttpRequest.onreadystatechange=null;cXMLHttpRequest.onopen=null;cXMLHttpRequest.onsend=null;cXMLHttpRequest.onabort=null;cXMLHttpRequest.prototype.open=function(sMethod,sUrl,bAsync,sUser,sPassword){delete this._headers;if(arguments.length<3)
-bAsync=true;this._async=bAsync;var oRequest=this,nState=this.readyState,fOnUnload;if(bIE&&bAsync){fOnUnload=function(){if(nState!=cXMLHttpRequest.DONE){fCleanTransport(oRequest);oRequest.abort();}};window.attachEvent("onunload",fOnUnload);}
-if(cXMLHttpRequest.onopen)
-cXMLHttpRequest.onopen.apply(this,arguments);if(arguments.length>4)
-this._object.open(sMethod,sUrl,bAsync,sUser,sPassword);else
-if(arguments.length>3)
-this._object.open(sMethod,sUrl,bAsync,sUser);else
-this._object.open(sMethod,sUrl,bAsync);this.readyState=cXMLHttpRequest.OPENED;fReadyStateChange(this);this._object.onreadystatechange=function(){if(bGecko&&!bAsync)
-return;oRequest.readyState=oRequest._object.readyState;fSynchronizeValues(oRequest);if(oRequest._aborted){oRequest.readyState=cXMLHttpRequest.UNSENT;return;}
-if(oRequest.readyState==cXMLHttpRequest.DONE){delete oRequest._data;fCleanTransport(oRequest);if(bIE&&bAsync)
-window.detachEvent("onunload",fOnUnload);}
-if(nState!=oRequest.readyState)
-fReadyStateChange(oRequest);nState=oRequest.readyState;}};function fXMLHttpRequest_send(oRequest){oRequest._object.send(oRequest._data);if(bGecko&&!oRequest._async){oRequest.readyState=cXMLHttpRequest.OPENED;fSynchronizeValues(oRequest);while(oRequest.readyState<cXMLHttpRequest.DONE){oRequest.readyState++;fReadyStateChange(oRequest);if(oRequest._aborted)
-return;}}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend)
-cXMLHttpRequest.onsend.apply(this,arguments);if(!arguments.length)
-vData=null;if(vData&&vData.nodeType){vData=window.XMLSerializer?new window.XMLSerializer().serializeToString(vData):vData.xml;if(!oRequest._headers["Content-Type"])
-oRequest._object.setRequestHeader("Content-Type","application/xml");}
-this._data=vData;fXMLHttpRequest_send(this);};cXMLHttpRequest.prototype.abort=function(){if(cXMLHttpRequest.onabort)
-cXMLHttpRequest.onabort.apply(this,arguments);if(this.readyState>cXMLHttpRequest.UNSENT)
-this._aborted=true;this._object.abort();fCleanTransport(this);this.readyState=cXMLHttpRequest.UNSENT;delete this._data;};cXMLHttpRequest.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders();};cXMLHttpRequest.prototype.getResponseHeader=function(sName){return this._object.getResponseHeader(sName);};cXMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){if(!this._headers)
-this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.addEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++)
-if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture)
-return;this._listeners.push([sName,fHandler,bUseCapture]);};cXMLHttpRequest.prototype.removeEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++)
-if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture)
-break;if(oListener)
-this._listeners.splice(nIndex,1);};cXMLHttpRequest.prototype.dispatchEvent=function(oEvent){var oEventPseudo={'type':oEvent.type,'target':this,'currentTarget':this,'eventPhase':2,'bubbles':oEvent.bubbles,'cancelable':oEvent.cancelable,'timeStamp':oEvent.timeStamp,'stopPropagation':function(){},'preventDefault':function(){},'initEvent':function(){}};if(oEventPseudo.type=="readystatechange"&&this.onreadystatechange)
-(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[oEventPseudo]);for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++)
-if(oListener[0]==oEventPseudo.type&&!oListener[2])
-(oListener[1].handleEvent||oListener[1]).apply(this,[oEventPseudo]);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(cXMLHttpRequest.onreadystatechange)
-cXMLHttpRequest.onreadystatechange.apply(oRequest);oRequest.dispatchEvent({'type':"readystatechange",'bubbles':false,'cancelable':false,'timeStamp':new Date+0});};function fGetDocument(oRequest){var oDocument=oRequest.responseXML,sResponse=oRequest.responseText;if(bIE&&sResponse&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new window.ActiveXObject("Microsoft.XMLDOM");oDocument.async=false;oDocument.validateOnParse=false;oDocument.loadXML(sResponse);}
-if(oDocument)
-if((bIE&&oDocument.parseError!=0)||!oDocument.documentElement||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror"))
-return null;return oDocument;};function fSynchronizeValues(oRequest){try{oRequest.responseText=oRequest._object.responseText;}catch(e){}
-try{oRequest.responseXML=fGetDocument(oRequest._object);}catch(e){}
-try{oRequest.status=oRequest._object.status;}catch(e){}
-try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments)
-oArguments=[];oRequest.__func=this;oRequest.__func(oArguments[0],oArguments[1],oArguments[2],oArguments[3],oArguments[4]);delete oRequest.__func;};};OpenLayers.Request.XMLHttpRequest=cXMLHttpRequest;})();OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,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){var p=projection,equals=false;if(p){if(window.Proj4js&&this.proj.defData&&p.proj.defData){equals=this.proj.defData.replace(this.titleRegEx,"")==p.proj.defData.replace(this.titleRegEx,"");}else if(p.getCode){var source=this.getCode(),target=p.getCode();equals=source==target||!!OpenLayers.Projection.transforms[source]&&OpenLayers.Projection.transforms[source][target]===OpenLayers.Projection.nullTransform;}}
-return equals;},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.Projection.nullTransform=function(point){return point;};OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date(),extractAttributes:true,extractStyles:false,extractTracks:false,trackAttributes:null,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)};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){this.features=[];this.styles={};this.fetched={};var options={depth:0,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,len=types.length;i<len;++i){var type=types[i];var nodes=this.getElementsByTagNameNS(data,"*",type);if(nodes.length==0){continue;}
-switch(type.toLowerCase()){case"link":case"networklink":this.parseLinks(nodes,options);break;case"style":if(this.extractStyles){this.parseStyles(nodes,options);}
-break;case"stylemap":if(this.extractStyles){this.parseStyleMaps(nodes,options);}
-break;case"placemark":this.parseFeatures(nodes,options);break;}}
-return this.features;},parseLinks:function(nodes,options){if(options.depth>=this.maxDepth){return false;}
-var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0,len=nodes.length;i<len;i++){var href=this.parseProperty(nodes[i],"*","href");if(href&&!this.fetched[href]){this.fetched[href]=true;var data=this.fetchLink(href);if(data){this.parseData(data,newOptions);}}}},fetchLink:function(href){var request=OpenLayers.Request.GET({url:href,async:false});if(request){return request.responseText;}},parseStyles:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var style=this.parseStyle(nodes[i]);if(style){var styleName=(options.styleBaseUrl||"")+"#"+style.id;this.styles[styleName]=style;}}},parseKmlColor:function(kmlColor){var color=null;if(kmlColor){var matches=kmlColor.match(this.regExes.kmlColor);if(matches){color={color:'#'+matches[4]+matches[3]+matches[2],opacity:parseInt(matches[1],16)/255};}}
-return color;},parseStyle:function(node){var style={};var types=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"];var type,styleTypeNode,nodeList,geometry,parser;for(var i=0,len=types.length;i<len;++i){type=types[i];styleTypeNode=this.getElementsByTagNameNS(node,"*",type)[0];if(!styleTypeNode){continue;}
-switch(type.toLowerCase()){case"linestyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["strokeColor"]=color.color;style["strokeOpacity"]=color.opacity;}
-var width=this.parseProperty(styleTypeNode,"*","width");if(width){style["strokeWidth"]=width;}
-break;case"polystyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fillOpacity"]=color.opacity;style["fillColor"]=color.color;}
-var fill=this.parseProperty(styleTypeNode,"*","fill");if(fill=="0"){style["fillColor"]="none";}
-var outline=this.parseProperty(styleTypeNode,"*","outline");if(outline=="0"){style["strokeWidth"]="0";}
-break;case"iconstyle":var scale=parseFloat(this.parseProperty(styleTypeNode,"*","scale")||1);var width=32*scale;var height=32*scale;var iconNode=this.getElementsByTagNameNS(styleTypeNode,"*","Icon")[0];if(iconNode){var href=this.parseProperty(iconNode,"*","href");if(href){var w=this.parseProperty(iconNode,"*","w");var h=this.parseProperty(iconNode,"*","h");var google="http://maps.google.com/mapfiles/kml";if(OpenLayers.String.startsWith(href,google)&&!w&&!h){w=64;h=64;scale=scale/2;}
-w=w||h;h=h||w;if(w){width=parseInt(w)*scale;}
-if(h){height=parseInt(h)*scale;}
-var matches=href.match(this.regExes.kmlIconPalette);if(matches){var palette=matches[1];var file_extension=matches[2];var x=this.parseProperty(iconNode,"*","x");var y=this.parseProperty(iconNode,"*","y");var posX=x?x/32:0;var posY=y?(7-y/32):7;var pos=posY*8+posX;href="http://maps.google.com/mapfiles/kml/pal"
-+palette+"/icon"+pos+file_extension;}
-style["graphicOpacity"]=1;style["externalGraphic"]=href;}}
-var hotSpotNode=this.getElementsByTagNameNS(styleTypeNode,"*","hotSpot")[0];if(hotSpotNode){var x=parseFloat(hotSpotNode.getAttribute("x"));var y=parseFloat(hotSpotNode.getAttribute("y"));var xUnits=hotSpotNode.getAttribute("xunits");if(xUnits=="pixels"){style["graphicXOffset"]=-x*scale;}
-else if(xUnits=="insetPixels"){style["graphicXOffset"]=-width+(x*scale);}
-else if(xUnits=="fraction"){style["graphicXOffset"]=-width*x;}
-var yUnits=hotSpotNode.getAttribute("yunits");if(yUnits=="pixels"){style["graphicYOffset"]=-height+(y*scale)+1;}
-else if(yUnits=="insetPixels"){style["graphicYOffset"]=-(y*scale)+1;}
-else if(yUnits=="fraction"){style["graphicYOffset"]=-height*(1-y)+1;}}
-style["graphicWidth"]=width;style["graphicHeight"]=height;break;case"balloonstyle":var balloonStyle=OpenLayers.Util.getXmlNodeValue(styleTypeNode);if(balloonStyle){style["balloonStyle"]=balloonStyle.replace(this.regExes.straightBracket,"${$1}");}
-break;case"labelstyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fontColor"]=color.color;style["fontOpacity"]=color.opacity;}
-break;default:}}
-if(!style["strokeColor"]&&style["fillColor"]){style["strokeColor"]=style["fillColor"];}
-var id=node.getAttribute("id");if(id&&style){style.id=id;}
-return style;},parseStyleMaps:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];var pairs=this.getElementsByTagNameNS(node,"*","Pair");var id=node.getAttribute("id");for(var j=0,jlen=pairs.length;j<jlen;j++){var pair=pairs[j];var key=this.parseProperty(pair,"*","key");var styleUrl=this.parseProperty(pair,"*","styleUrl");if(styleUrl&&key=="normal"){this.styles[(options.styleBaseUrl||"")+"#"+id]=this.styles[(options.styleBaseUrl||"")+styleUrl];}
-if(styleUrl&&key=="highlight"){}}}},parseFeatures:function(nodes,options){var features=[];for(var i=0,len=nodes.length;i<len;i++){var featureNode=nodes[i];var feature=this.parseFeature.apply(this,[featureNode]);if(feature){if(this.extractStyles&&feature.attributes&&feature.attributes.styleUrl){feature.style=this.getStyle(feature.attributes.styleUrl,options);}
-if(this.extractStyles){var inlineStyleNode=this.getElementsByTagNameNS(featureNode,"*","Style")[0];if(inlineStyleNode){var inlineStyle=this.parseStyle(inlineStyleNode);if(inlineStyle){feature.style=OpenLayers.Util.extend(feature.style,inlineStyle);}}}
-if(this.extractTracks){var tracks=this.getElementsByTagNameNS(featureNode,this.namespaces.gx,"Track");if(tracks&&tracks.length>0){var track=tracks[0];var container={features:[],feature:feature};this.readNode(track,container);if(container.features.length>0){features.push.apply(features,container.features);}}}else{features.push(feature);}}else{throw"Bad Placemark: "+i;}}
-this.features=this.features.concat(features);},readers:{"kml":{"when":function(node,container){container.whens.push(OpenLayers.Date.parse(this.getChildValue(node)));},"_trackPointAttribute":function(node,container){var name=node.nodeName.split(":").pop();container.attributes[name].push(this.getChildValue(node));}},"gx":{"Track":function(node,container){var obj={whens:[],points:[],angles:[]};if(this.trackAttributes){var name;obj.attributes={};for(var i=0,ii=this.trackAttributes.length;i<ii;++i){name=this.trackAttributes[i];obj.attributes[name]=[];if(!(name in this.readers.kml)){this.readers.kml[name]=this.readers.kml._trackPointAttribute;}}}
-this.readChildNodes(node,obj);if(obj.whens.length!==obj.points.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:coord ("+obj.points.length+") elements.");}
-var hasAngles=obj.angles.length>0;if(hasAngles&&obj.whens.length!==obj.angles.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:angles ("+obj.angles.length+") elements.");}
-var feature,point,angles;for(var i=0,ii=obj.whens.length;i<ii;++i){feature=container.feature.clone();feature.fid=container.feature.fid||container.feature.id;point=obj.points[i];feature.geometry=point;if("z"in point){feature.attributes.altitude=point.z;}
-if(this.internalProjection&&this.externalProjection){feature.geometry.transform(this.externalProjection,this.internalProjection);}
-if(this.trackAttributes){for(var j=0,jj=this.trackAttributes.length;j<jj;++j){feature.attributes[name]=obj.attributes[this.trackAttributes[j]][i];}}
-feature.attributes.when=obj.whens[i];feature.attributes.trackId=container.feature.id;if(hasAngles){angles=obj.angles[i];feature.attributes.heading=parseFloat(angles[0]);feature.attributes.tilt=parseFloat(angles[1]);feature.attributes.roll=parseFloat(angles[2]);}
-container.features.push(feature);}},"coord":function(node,container){var str=this.getChildValue(node);var coords=str.replace(this.regExes.trimSpace,"").split(/\s+/);var point=new OpenLayers.Geometry.Point(coords[0],coords[1]);if(coords.length>2){point.z=parseFloat(coords[2]);}
-container.points.push(point);},"angles":function(node,container){var str=this.getChildValue(node);var parts=str.replace(this.regExes.trimSpace,"").split(/\s+/);container.angles.push(parts);}}},parseFeature:function(node){var order=["MultiGeometry","Polygon","LineString","Point"];var type,nodeList,geometry,parser;for(var i=0,len=order.length;i<len;++i){type=order[i];this.internalns=node.namespaceURI?node.namespaceURI:this.kmlns;nodeList=this.getElementsByTagNameNS(node,this.internalns,type);if(nodeList.length>0){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")||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=OpenLayers.Util.extend({},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=this.getChildValue(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;i<numPoints;++i){coords=pointList[i].split(",");numCoords=coords.length;if(numCoords>1){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,len=nodeList.length;i<len;++i){ring=this.parseGeometry.linestring.apply(this,[nodeList[i],true]);if(ring){components[i]=ring;}else{throw"Bad LinearRing geometry: "+i;}}}
-return new OpenLayers.Geometry.Polygon(components);},multigeometry:function(node){var child,parser;var parts=[];var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){var type=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var parser=this.parseGeometry[type.toLowerCase()];if(parser){parts.push(parser.apply(this,[child]));}}}
-return new OpenLayers.Geometry.Collection(parts);}},parseAttributes:function(node){var attributes={};var edNodes=node.getElementsByTagName("ExtendedData");if(edNodes.length){attributes=this.parseExtendedData(edNodes[0]);}
-var child,grandchildren,grandchild;var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){grandchildren=child.childNodes;if(grandchildren.length>=1&&grandchildren.length<=3){var grandchild;switch(grandchildren.length){case 1:grandchild=grandchildren[0];break;case 2:var c1=grandchildren[0];var c2=grandchildren[1];grandchild=(c1.nodeType==3||c1.nodeType==4)?c1:c2;break;case 3:default:grandchild=grandchildren[1];break;}
-if(grandchild.nodeType==3||grandchild.nodeType==4){var name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var value=OpenLayers.Util.getXmlNodeValue(grandchild);if(value){value=value.replace(this.regExes.trimSpace,"");attributes[name]=value;}}}}}
-return attributes;},parseExtendedData:function(node){var attributes={};var i,len,data,key;var dataNodes=node.getElementsByTagName("Data");for(i=0,len=dataNodes.length;i<len;i++){data=dataNodes[i];key=data.getAttribute("name");var ed={};var valueNode=data.getElementsByTagName("value");if(valueNode.length){ed['value']=this.getChildValue(valueNode[0]);}
-var nameNode=data.getElementsByTagName("displayName");if(nameNode.length){ed['displayName']=this.getChildValue(nameNode[0]);}
-attributes[key]=ed;}
-var simpleDataNodes=node.getElementsByTagName("SimpleData");for(i=0,len=simpleDataNodes.length;i<len;i++){var ed={};data=simpleDataNodes[i];key=data.getAttribute("name");ed['value']=this.getChildValue(data);ed['displayName']=key;attributes[key]=ed;}
-return attributes;},parseProperty:function(xmlNode,namespace,tagName){var value;var nodeList=this.getElementsByTagNameNS(xmlNode,namespace,tagName);try{value=OpenLayers.Util.getXmlNodeValue(nodeList[0]);}catch(e){value=null;}
-return value;},write:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
-var kml=this.createElementNS(this.kmlns,"kml");var folder=this.createFolderXML();for(var i=0,len=features.length;i<len;++i){folder.appendChild(this.createPlacemarkXML(features[i]));}
-kml.appendChild(folder);return OpenLayers.Format.XML.prototype.write.apply(this,[kml]);},createFolderXML:function(){var folder=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var folderName=this.createElementNS(this.kmlns,"name");var folderNameText=this.createTextNode(this.foldersName);folderName.appendChild(folderNameText);folder.appendChild(folderName);}
-if(this.foldersDesc){var folderDesc=this.createElementNS(this.kmlns,"description");var folderDescText=this.createTextNode(this.foldersDesc);folderDesc.appendChild(folderDescText);folder.appendChild(folderDesc);}
-return folder;},createPlacemarkXML:function(feature){var placemarkName=this.createElementNS(this.kmlns,"name");var name=feature.style&&feature.style.label?feature.style.label:feature.attributes.name||feature.id;placemarkName.appendChild(this.createTextNode(name));var placemarkDesc=this.createElementNS(this.kmlns,"description");var desc=feature.attributes.description||this.placemarksDesc;placemarkDesc.appendChild(this.createTextNode(desc));var placemarkNode=this.createElementNS(this.kmlns,"Placemark");if(feature.fid!=null){placemarkNode.setAttribute("id",feature.fid);}
-placemarkNode.appendChild(placemarkName);placemarkNode.appendChild(placemarkDesc);var geometryNode=this.buildGeometryNode(feature.geometry);placemarkNode.appendChild(geometryNode);return placemarkNode;},buildGeometryNode:function(geometry){var className=geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);var builder=this.buildGeometry[type.toLowerCase()];var node=null;if(builder){node=builder.apply(this,[geometry]);}
-return node;},buildGeometry:{point:function(geometry){var kml=this.createElementNS(this.kmlns,"Point");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multipoint:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linestring:function(geometry){var kml=this.createElementNS(this.kmlns,"LineString");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multilinestring:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linearring:function(geometry){var kml=this.createElementNS(this.kmlns,"LinearRing");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},polygon:function(geometry){var kml=this.createElementNS(this.kmlns,"Polygon");var rings=geometry.components;var ringMember,ringGeom,type;for(var i=0,len=rings.length;i<len;++i){type=(i==0)?"outerBoundaryIs":"innerBoundaryIs";ringMember=this.createElementNS(this.kmlns,type);ringGeom=this.buildGeometry.linearring.apply(this,[rings[i]]);ringMember.appendChild(ringGeom);kml.appendChild(ringMember);}
-return kml;},multipolygon:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},collection:function(geometry){var kml=this.createElementNS(this.kmlns,"MultiGeometry");var child;for(var i=0,len=geometry.components.length;i<len;++i){child=this.buildGeometryNode.apply(this,[geometry.components[i]]);if(child){kml.appendChild(child);}}
-return kml;}},buildCoordinatesNode:function(geometry){var coordinatesNode=this.createElementNS(this.kmlns,"coordinates");var path;var points=geometry.components;if(points){var point;var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i<numPoints;++i){point=points[i];parts[i]=this.buildCoordinates(point);}
-path=parts.join(" ");}else{path=this.buildCoordinates(geometry);}
-var txtNode=this.createTextNode(path);coordinatesNode.appendChild(txtNode);return coordinatesNode;},buildCoordinates:function(point){if(this.internalProjection&&this.externalProjection){point=point.clone();point.transform(this.internalProjection,this.externalProjection);}
-return point.x+","+point.y;},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:false,propertyStyles:null,initialize:function(style,options){OpenLayers.Util.extend(this,options);this.rules=[];if(options&&options.rules){this.addRules(options.rules);}
-this.setDefaultStyle(style||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i=0,len=this.rules.length;i<len;i++){this.rules[i].destroy();this.rules[i]=null;}
-this.rules=null;this.defaultStyle=null;},createSymbolizer:function(feature){var style=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),feature);var rules=this.rules;var rule,context;var elseRules=[];var appliedRules=false;for(var i=0,len=rules.length;i<len;i++){rule=rules[i];var applies=rule.evaluate(feature);if(applies){if(rule instanceof OpenLayers.Rule&&rule.elseFilter){elseRules.push(rule);}else{appliedRules=true;this.applySymbolizer(rule,style,feature);}}}
-if(appliedRules==false&&elseRules.length>0){appliedRules=true;for(var i=0,len=elseRules.length;i<len;i++){this.applySymbolizer(elseRules[i],style,feature);}}
-if(rules.length>0&&appliedRules==false){style.display="none";}
-if(style.label&&typeof style.label!=="string"){style.label=String(style.label);}
-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;if(this.defaultsPerSymbolizer===true){var defaults=this.defaultStyle;OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:defaults.pointRadius});if(symbolizer.stroke===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{strokeWidth:defaults.strokeWidth,strokeColor:defaults.strokeColor,strokeOpacity:defaults.strokeOpacity,strokeDashstyle:defaults.strokeDashstyle,strokeLinecap:defaults.strokeLinecap});}
-if(symbolizer.fill===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{fillColor:defaults.fillColor,fillOpacity:defaults.fillOpacity});}
-if(symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset});}}
-return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=OpenLayers.Util.extend({},feature.attributes||feature.data);OpenLayers.Util.extend(context,this.context);for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature,i);}
-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,len=rules.length;i<len;i++){symbolizer=rules[i].symbolizer;for(var key in symbolizer){value=symbolizer[key];if(typeof value=="object"){this.addPropertyStyles(propertyStyles,value);}else{this.addPropertyStyles(propertyStyles,symbolizer);break;}}}
-return propertyStyles;},addPropertyStyles:function(propertyStyles,symbolizer){var property;for(var key in symbolizer){property=symbolizer[key];if(typeof property=="string"&&property.match(/\$\{\w+\}/)){propertyStyles[key]=true;}}
-return propertyStyles;},addRules:function(rules){Array.prototype.push.apply(this.rules,rules);this.propertyStyles=this.findPropertyStyles();},setDefaultStyle:function(style){this.defaultStyle=style;this.propertyStyles=this.findPropertyStyles();},getSymbolizerPrefix:function(geometry){var prefixes=OpenLayers.Style.SYMBOLIZER_PREFIXES;for(var i=0,len=prefixes.length;i<len;i++){if(geometry.CLASS_NAME.indexOf(prefixes[i])!=-1){return prefixes[i];}}},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.rules){options.rules=[];for(var i=0,len=this.rules.length;i<len;++i){options.rules.push(this.rules[i].clone());}}
-options.context=this.context&&OpenLayers.Util.extend({},this.context);var defaultStyle=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(defaultStyle,options);},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(value,context,feature,property){if(typeof value=="string"&&value.indexOf("${")!=-1){value=OpenLayers.String.format(value,context,[feature,property]);value=(isNaN(value)||!value)?value:parseFloat(value);}
-return value;};OpenLayers.Style.SYMBOLIZER_PREFIXES=['Point','Line','Polygon','Text','Raster'];OpenLayers.Filter=OpenLayers.Class({initialize:function(options){OpenLayers.Util.extend(this,options);},destroy:function(){},evaluate:function(context){return true;},clone:function(){return null;},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){var intersect=false;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(feature.geometry){var geom=this.value;if(this.value.CLASS_NAME=="OpenLayers.Bounds"){geom=this.value.toGeometry();}
-if(feature.geometry.intersects(geom)){intersect=true;}}
-break;default:OpenLayers.Console.error(OpenLayers.i18n("filterEvaluateNotImplemented"));break;}
-return intersect;},clone:function(){var options=OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(options);},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"moveend":this.update,scope:this});this.layer.events.on({"refresh":this.update,scope:this});if(this.layer.visibility===true&&this.layer.inRange===true){this.update();}else{this.layer.events.on({"visibilitychanged":this.update,scope:this});}}
-return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"moveend":this.update,"refresh":this.update,"visibilitychanged":this.update,scope:this});}
-return deactivated;},update:function(options){var mapBounds=this.getMapBounds();if(mapBounds!==null&&((options&&options.force)||this.invalidBounds(mapBounds))){this.calculateBounds(mapBounds);this.resolution=this.layer.map.getResolution();this.triggerRead(options);}},getMapBounds:function(){if(this.layer.map===null){return null;}
-var bounds=this.layer.map.getExtent();if(bounds&&!this.layer.projection.equals(this.layer.map.getProjectionObject())){bounds=bounds.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection);}
-return bounds;},invalidBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();}
-var invalid=!this.bounds||!this.bounds.containsBounds(mapBounds);if(!invalid&&this.resFactor){var ratio=this.resolution/this.layer.map.getResolution();invalid=(ratio>=this.resFactor||ratio<=(1/this.resFactor));}
-return invalid;},calculateBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();}
-var center=mapBounds.getCenterLonLat();var dataWidth=mapBounds.getWidth()*this.ratio;var dataHeight=mapBounds.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(center.lon-(dataWidth/2),center.lat-(dataHeight/2),center.lon+(dataWidth/2),center.lat+(dataHeight/2));},triggerRead:function(options){if(this.response){this.layer.protocol.abort(this.response);this.layer.events.triggerEvent("loadend");}
-this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},options));},createFilter:function(){var filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});if(this.layer.filter){filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.layer.filter,filter]});}
-return filter;},merge:function(resp){this.layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(remote,local);}}}
-this.layer.addFeatures(features);}
-this.response=null;this.layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{'click':{'in':'click','out':'clickout'},'mousemove':{'in':'over','out':'out'},'dblclick':{'in':'dblclick','out':null},'mousedown':{'in':null,'out':null},'mouseup':{'in':null,'out':null},'touchstart':{'in':'click','out':'clickout'}},feature:null,lastFeature:null,down:null,up:null,touch:false,clickTolerance:4,geometryTypes:null,stopClick:true,stopDown:true,stopUp:false,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this});}
-return OpenLayers.Event.isMultiTouch(evt)?true:this.mousedown(evt);},touchmove:function(evt){OpenLayers.Event.stop(evt);},mousedown:function(evt){this.down=evt.xy;return this.handle(evt)?!this.stopDown:true;},mouseup:function(evt){this.up=evt.xy;return this.handle(evt)?!this.stopUp:true;},click:function(evt){return this.handle(evt)?!this.stopClick:true;},mousemove:function(evt){if(!this.callbacks['over']&&!this.callbacks['out']){return true;}
-this.handle(evt);return true;},dblclick:function(evt){return!this.handle(evt);},geometryTypeMatches:function(feature){return this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1;},handle:function(evt){if(this.feature&&!this.feature.layer){this.feature=null;}
-var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick"||type=="touchstart");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature&&!this.feature.layer){this.feature=null;}
-if(this.lastFeature&&!this.lastFeature.layer){this.lastFeature=null;}
-if(this.feature){if(type==="touchstart"){OpenLayers.Event.stop(evt);}
-var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){if(this.lastFeature){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(this.lastFeature&&(previouslyIn&&inNew||click)){this.triggerCallback(type,'out',[this.lastFeature]);}
-this.feature=null;}}else{if(this.lastFeature&&(previouslyIn||click)){this.triggerCallback(type,'out',[this.lastFeature]);}}
-return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&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.clickTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.moveLayerToTop();this.map.events.on({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});activated=true;}
-return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.moveLayerBack();this.feature=null;this.lastFeature=null;this.down=null;this.up=null;this.touch=false;this.map.events.un({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});deactivated=true;}
-return deactivated;},handleMapEvents:function(evt){if(evt.type=="removelayer"||evt.property=="order"){this.moveLayerToTop();}},moveLayerToTop:function(){var index=Math.max(this.map.Z_INDEX_BASE['Feature']-1,this.layer.getZIndex())+1;this.layer.setZIndex(index);},moveLayerBack:function(){var index=this.layer.getZIndex()-1;if(index>=this.map.Z_INDEX_BASE['Feature']){this.layer.setZIndex(index);}else{this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer));}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Tween=OpenLayers.Class({INTERVAL:10,easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,interval:null,playing:false,initialize:function(easing){this.easing=(easing)?easing:OpenLayers.Easing.Expo.easeOut;},start:function(begin,finish,duration,options){this.playing=true;this.begin=begin;this.finish=finish;this.duration=duration;this.callbacks=options.callbacks;this.time=0;if(this.interval){window.clearInterval(this.interval);this.interval=null;}
-if(this.callbacks&&this.callbacks.start){this.callbacks.start.call(this,this.begin);}
-this.interval=window.setInterval(OpenLayers.Function.bind(this.play,this),this.INTERVAL);},stop:function(){if(!this.playing){return;}
-if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);}
-window.clearInterval(this.interval);this.interval=null;this.playing=false;},play:function(){var value={};for(var i in this.begin){var b=this.begin[i];var f=this.finish[i];if(b==null||f==null||isNaN(b)||isNaN(f)){OpenLayers.Console.error('invalid value for Tween');}
-var c=f-b;value[i]=this.easing.apply(this,[this.time,b,c,this.duration]);}
-this.time++;if(this.callbacks&&this.callbacks.eachStep){this.callbacks.eachStep.call(this,value);}
-if(this.time>this.duration){this.stop();}},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.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1000},EVENT_TYPES:["preaddlayer","addlayer","preremovelayer","removelayer","changelayer","movestart","move","moveend","zoomend","popupopen","popupclose","addmarker","removemarker","clearmarkers","mouseover","mouseout","mousemove","dragstart","drag","dragend","changebaselayer"],id:null,fractionalZoom:false,events:null,allOverlays:false,div:null,dragging:false,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,viewRequestID:0,tileSize:null,projection:"EPSG:4326",units:'degrees',resolutions:null,maxResolution:1.40625,minResolution:null,maxScale:null,minScale:null,maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:true,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(div,options){if(arguments.length===1&&typeof div==="object"){options=div;div=options&&options.div;}
-this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+'theme/default/style.css';OpenLayers.Util.extend(this,options);this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(div);if(!this.div){this.div=document.createElement("div");this.div.style.height="1px";this.div.style.width="1px";}
-OpenLayers.Element.addClass(this.div,'olMap');var id=this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(id,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);var eventsDiv=document.createElement("div");eventsDiv.id=this.id+"_events";eventsDiv.style.position="absolute";eventsDiv.style.width="100%";eventsDiv.style.height="100%";eventsDiv.style.zIndex=this.Z_INDEX_BASE.Control-1;this.viewPortDiv.appendChild(eventsDiv);this.eventsDiv=eventsDiv;this.events=new OpenLayers.Events(this,this.eventsDiv,this.EVENT_TYPES,this.fallThrough,{includeXY:true});id=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(id);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;this.eventsDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}
-this.events.register("movestart",this,this.updateSize);if(OpenLayers.String.contains(navigator.appName,"Microsoft")){this.events.register("resize",this,this.updateSize);}else{this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this);OpenLayers.Event.observe(window,'resize',this.updateSizeDestroy);}
-if(this.theme){var addNode=true;var nodes=document.getElementsByTagName('link');for(var i=0,len=nodes.length;i<len;++i){if(OpenLayers.Util.isEquivalentUrl(nodes.item(i).href,this.theme)){addNode=false;break;}}
-if(addNode){var cssNode=document.createElement('link');cssNode.setAttribute('rel','stylesheet');cssNode.setAttribute('type','text/css');cssNode.setAttribute('href',this.theme);document.getElementsByTagName('head')[0].appendChild(cssNode);}}
-if(this.controls==null){if(OpenLayers.Control!=null){this.controls=[new OpenLayers.Control.Navigation(),new OpenLayers.Control.PanZoom(),new OpenLayers.Control.ArgParser(),new OpenLayers.Control.Attribution()];}else{this.controls=[];}}
-for(var i=0,len=this.controls.length;i<len;i++){this.addControlToMap(this.controls[i]);}
-this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,'unload',this.unloadDestroy);if(options&&options.layers){delete this.center;this.addLayers(options.layers);if(options.center){this.setCenter(options.center,options.zoom);}}},render:function(div){this.div=OpenLayers.Util.getElement(div);OpenLayers.Element.addClass(this.div,'olMap');this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize();},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy){return false;}
-if(this.panTween){this.panTween.stop();this.panTween=null;}
-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;if(this.eventListeners){this.events.un(this.eventListeners);this.eventListeners=null;}
-this.events.destroy();this.events=null;},setOptions:function(options){var updatePxExtent=this.minPx&&options.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,options);updatePxExtent&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:true});},getTileSize:function(){return this.tileSize;},getBy:function(array,property,match){var test=(typeof match.test=="function");var found=OpenLayers.Array.filter(this[array],function(item){return item[property]==match||(test&&match.test(item[property]));});return found;},getLayersBy:function(property,match){return this.getBy("layers",property,match);},getLayersByName:function(match){return this.getLayersBy("name",match);},getLayersByClass:function(match){return this.getLayersBy("CLASS_NAME",match);},getControlsBy:function(property,match){return this.getBy("controls",property,match);},getControlsByClass:function(match){return this.getControlsBy("CLASS_NAME",match);},getLayer:function(id){var foundLayer=null;for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];if(layer.id==id){foundLayer=layer;break;}}
-return foundLayer;},setLayerZIndex:function(layer,zIdx){layer.setZIndex(this.Z_INDEX_BASE[layer.isBaseLayer?'BaseLayer':'Overlay']
-+zIdx*5);},resetLayersZIndex:function(){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];this.setLayerZIndex(layer,i);}},addLayer:function(layer){for(var i=0,len=this.layers.length;i<len;i++){if(this.layers[i]==layer){var msg=OpenLayers.i18n('layerAlreadyAdded',{'layerName':layer.name});OpenLayers.Console.warn(msg);return false;}}
-if(this.events.triggerEvent("preaddlayer",{layer:layer})===false){return;}
-if(this.allOverlays){layer.isBaseLayer=false;}
-layer.div.className="olLayerDiv";layer.div.style.overflow="";this.setLayerZIndex(layer,this.layers.length);if(layer.isFixed){this.viewPortDiv.appendChild(layer.div);}else{this.layerContainerDiv.appendChild(layer.div);}
-this.layers.push(layer);layer.setMap(this);if(layer.isBaseLayer||(this.allOverlays&&!this.baseLayer)){if(this.baseLayer==null){this.setBaseLayer(layer);}else{layer.setVisibility(false);}}else{layer.redraw();}
-this.events.triggerEvent("addlayer",{layer:layer});layer.events.triggerEvent("added",{map:this,layer:layer});layer.afterAdd();},addLayers:function(layers){for(var i=0,len=layers.length;i<len;i++){this.addLayer(layers[i]);}},removeLayer:function(layer,setNewBaseLayer){if(this.events.triggerEvent("preremovelayer",{layer:layer})===false){return;}
-if(setNewBaseLayer==null){setNewBaseLayer=true;}
-if(layer.isFixed){this.viewPortDiv.removeChild(layer.div);}else{this.layerContainerDiv.removeChild(layer.div);}
-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,len=this.layers.length;i<len;i++){var iLayer=this.layers[i];if(iLayer.isBaseLayer||this.allOverlays){this.setBaseLayer(iLayer);break;}}}}
-this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:layer});layer.events.triggerEvent("removed",{map:this,layer:layer});},getNumLayers:function(){return this.layers.length;},getLayerIndex:function(layer){return OpenLayers.Util.indexOf(this.layers,layer);},setLayerIndex:function(layer,idx){var base=this.getLayerIndex(layer);if(idx<0){idx=0;}else if(idx>this.layers.length){idx=this.layers.length;}
-if(base!=idx){this.layers.splice(base,1);this.layers.splice(idx,0,layer);for(var i=0,len=this.layers.length;i<len;i++){this.setLayerZIndex(this.layers[i],i);}
-this.events.triggerEvent("changelayer",{layer:layer,property:"order"});if(this.allOverlays){if(idx===0){this.setBaseLayer(layer);}else if(this.baseLayer!==this.layers[0]){this.setBaseLayer(this.layers[0]);}}}},raiseLayer:function(layer,delta){var idx=this.getLayerIndex(layer)+delta;this.setLayerIndex(layer,idx);},setBaseLayer:function(newBaseLayer){if(newBaseLayer!=this.baseLayer){if(OpenLayers.Util.indexOf(this.layers,newBaseLayer)!=-1){var center=this.getCachedCenter();var newResolution=OpenLayers.Util.getResolutionFromScale(this.getScale(),newBaseLayer.units);if(this.baseLayer!=null&&!this.allOverlays){this.baseLayer.setVisibility(false);}
-this.baseLayer=newBaseLayer;this.viewRequestID++;if(!this.allOverlays||this.baseLayer.visibility){this.baseLayer.setVisibility(true);}
-if(center!=null){var newZoom=this.getZoomForResolution(newResolution||this.resolution,true);this.setCenter(center,newZoom,false,true);}
-this.events.triggerEvent("changebaselayer",{layer:this.baseLayer});}}},addControl:function(control,px){this.controls.push(control);this.addControlToMap(control,px);},addControls:function(controls,pixels){var pxs=(arguments.length===1)?[]:pixels;for(var i=0,len=controls.length;i<len;i++){var ctrl=controls[i];var px=(pxs[i])?pxs[i]:null;this.addControl(ctrl,px);}},addControlToMap:function(control,px){control.outsideViewport=(control.div!=null);if(this.displayProjection&&!control.displayProjection){control.displayProjection=this.displayProjection;}
-control.setMap(this);var div=control.draw(px);if(div){if(!control.outsideViewport){div.style.zIndex=this.Z_INDEX_BASE['Control']+
-this.controls.length;this.viewPortDiv.appendChild(div);}}
-if(control.autoActivate){control.activate();}},getControl:function(id){var returnControl=null;for(var i=0,len=this.controls.length;i<len;i++){var control=this.controls[i];if(control.id==id){returnControl=control;break;}}
-return returnControl;},removeControl:function(control){if((control)&&(control==this.getControl(control.id))){if(control.div&&(control.div.parentNode==this.viewPortDiv)){this.viewPortDiv.removeChild(control.div);}
-OpenLayers.Util.removeItem(this.controls,control);}},addPopup:function(popup,exclusive){if(exclusive){for(var i=this.popups.length-1;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(){var newSize=this.getCurrentSize();if(newSize&&!isNaN(newSize.h)&&!isNaN(newSize.w)){this.events.clearMouseCache();var oldSize=this.getSize();if(oldSize==null){this.size=oldSize=newSize;}
-if(!newSize.equals(oldSize)){this.size=newSize;for(var i=0,len=this.layers.length;i<len;i++){this.layers[i].onMapResize();}
-var center=this.getCachedCenter();if(this.baseLayer!=null&&center!=null){var zoom=this.getZoom();this.zoom=null;this.setCenter(center,zoom);}}}},getCurrentSize:function(){var size=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(size.w==0&&size.h==0||isNaN(size.w)&&isNaN(size.h)){size.w=this.div.offsetWidth;size.h=this.div.offsetHeight;}
-if(size.w==0&&size.h==0||isNaN(size.w)&&isNaN(size.h)){size.w=parseInt(this.div.style.width);size.h=parseInt(this.div.style.height);}
-return size;},calculateBounds:function(center,resolution){var extent=null;if(center==null){center=this.getCachedCenter();}
-if(resolution==null){resolution=this.getResolution();}
-if((center!=null)&&(resolution!=null)){var size=this.getSize();var w_deg=size.w*resolution;var h_deg=size.h*resolution;extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);}
-return extent;},getCenter:function(){var center=null;var cachedCenter=this.getCachedCenter();if(cachedCenter){center=cachedCenter.clone();}
-return center;},getCachedCenter:function(){if(!this.center&&this.size){this.center=this.getLonLatFromViewPortPx(new OpenLayers.Pixel(this.size.w/2,this.size.h/2));}
-return this.center;},getZoom:function(){return this.zoom;},pan:function(dx,dy,options){options=OpenLayers.Util.applyDefaults(options,{animate:true,dragging:false});if(options.dragging){if(dx!=0||dy!=0){this.moveByPx(dx,dy);}}else{var centerPx=this.getViewPortPxFromLonLat(this.getCachedCenter());var newCenterPx=centerPx.add(dx,dy);if(this.dragging||!newCenterPx.equals(centerPx)){var newCenterLonLat=this.getLonLatFromViewPortPx(newCenterPx);if(options.animate){this.panTo(newCenterLonLat);}else{this.moveTo(newCenterLonLat);this.dragging=false;this.events.triggerEvent("moveend");}}}},panTo:function(lonlat){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(lonlat)){if(!this.panTween){this.panTween=new OpenLayers.Tween(this.panMethod);}
-var center=this.getCachedCenter();if(lonlat.equals(center)){return;}
-var from=this.getPixelFromLonLat(center);var to=this.getPixelFromLonLat(lonlat);var vector={x:to.x-from.x,y:to.y-from.y};var last={x:0,y:0};this.panTween.start({x:0,y:0},vector,this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(px){var x=px.x-last.x,y=px.y-last.y;this.moveByPx(x,y);last.x=Math.round(px.x);last.y=Math.round(px.y);},this),done:OpenLayers.Function.bind(function(px){this.moveTo(lonlat);this.dragging=false;this.events.triggerEvent("moveend");},this)}});}else{this.setCenter(lonlat);}},setCenter:function(lonlat,zoom,dragging,forceZoomChange){this.panTween&&this.panTween.stop();this.moveTo(lonlat,zoom,{'dragging':dragging,'forceZoomChange':forceZoomChange});},moveByPx:function(dx,dy){var hw=this.size.w/2;var hh=this.size.h/2;var x=hw+dx;var y=hh+dy;var wrapDateLine=this.baseLayer.wrapDateLine;var xRestriction=0;var yRestriction=0;if(this.restrictedExtent){xRestriction=hw;yRestriction=hh;wrapDateLine=false;}
-dx=wrapDateLine||x<=this.maxPx.x-xRestriction&&x>=this.minPx.x+xRestriction?Math.round(dx):0;dy=y<=this.maxPx.y-yRestriction&&y>=this.minPx.y+yRestriction?Math.round(dy):0;var minX=this.minPx.x,maxX=this.maxPx.x;if(dx||dy){if(!this.dragging){this.dragging=true;this.events.triggerEvent("movestart");}
-this.center=null;if(dx){this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-dx+"px";this.minPx.x-=dx;this.maxPx.x-=dx;if(wrapDateLine){if(this.maxPx.x>maxX){this.maxPx.x-=(maxX-minX);}
-if(this.minPx.x<minX){this.minPx.x+=(maxX-minX);}}}
-if(dy){this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-dy+"px";this.minPx.y-=dy;this.maxPx.y-=dy;}
-var layer,i,len;for(i=0,len=this.layers.length;i<len;++i){layer=this.layers[i];if(layer.visibility&&(layer===this.baseLayer||layer.inRange)){layer.moveByPx(dx,dy);layer.events.triggerEvent("move");}}
-this.events.triggerEvent("move");}},moveTo:function(lonlat,zoom,options){if(!options){options={};}
-if(zoom!=null){zoom=parseFloat(zoom);if(!this.fractionalZoom){zoom=Math.round(zoom);}}
-var dragging=options.dragging||this.dragging;var forceZoomChange=options.forceZoomChange;if(!this.getCachedCenter()&&!this.isValidLonLat(lonlat)){lonlat=this.maxExtent.getCenterLonLat();this.center=lonlat.clone();}
-if(this.restrictedExtent!=null){if(lonlat==null){lonlat=this.center;}
-if(zoom==null){zoom=this.getZoom();}
-var resolution=this.getResolutionForZoom(zoom);var extent=this.calculateBounds(lonlat,resolution);if(!this.restrictedExtent.containsBounds(extent)){var maxCenter=this.restrictedExtent.getCenterLonLat();if(extent.getWidth()>this.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.left<this.restrictedExtent.left){lonlat=lonlat.add(this.restrictedExtent.left-
-extent.left,0);}else if(extent.right>this.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.bottom<this.restrictedExtent.bottom){lonlat=lonlat.add(0,this.restrictedExtent.bottom-
-extent.bottom);}
-else if(extent.top>this.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){dragging||this.events.triggerEvent("movestart");if(centerChanged){if(!zoomChanged&&this.center){this.centerLayerContainer(lonlat);}
-this.center=lonlat.clone();}
-var res=zoomChanged?this.getResolutionForZoom(zoom):this.getResolution();if(zoomChanged||this.layerContainerOrigin==null){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var maxExtent=this.getMaxExtent({restricted:true});var maxExtentCenter=maxExtent.getCenterLonLat();var lonDelta=this.center.lon-maxExtentCenter.lon;var latDelta=maxExtentCenter.lat-this.center.lat;var extentWidth=Math.round(maxExtent.getWidth()/res);var extentHeight=Math.round(maxExtent.getHeight()/res);var left=(this.size.w-extentWidth)/2-lonDelta/res;var top=(this.size.h-extentHeight)/2-latDelta/res;this.minPx=new OpenLayers.Pixel(left,top);this.maxPx=new OpenLayers.Pixel(left+extentWidth,top+extentHeight);}
-if(zoomChanged){this.zoom=zoom;this.resolution=res;this.viewRequestID++;}
-var bounds=this.getExtent();if(this.baseLayer.visibility){this.baseLayer.moveTo(bounds,zoomChanged,options.dragging);options.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:zoomChanged});}
-bounds=this.baseLayer.getExtent();for(var i=this.layers.length-1;i>=0;--i){var layer=this.layers[i];if(layer!==this.baseLayer&&!layer.isBaseLayer){var inRange=layer.calculateInRange();if(layer.inRange!=inRange){layer.inRange=inRange;if(!inRange){layer.display(false);}
-this.events.triggerEvent("changelayer",{layer:layer,property:"visibility"});}
-if(inRange&&layer.visibility){layer.moveTo(bounds,zoomChanged,options.dragging);options.dragging||layer.events.triggerEvent("moveend",{zoomChanged:zoomChanged});}}}
-this.events.triggerEvent("move");dragging||this.events.triggerEvent("moveend");if(zoomChanged){for(var i=0,len=this.popups.length;i<len;i++){this.popups[i].updatePosition();}
-this.events.triggerEvent("zoomend");}}},centerLayerContainer:function(lonlat){var originPx=this.getViewPortPxFromLonLat(this.layerContainerOrigin);var newPx=this.getViewPortPxFromLonLat(lonlat);if((originPx!=null)&&(newPx!=null)){var oldLeft=parseInt(this.layerContainerDiv.style.left);var oldTop=parseInt(this.layerContainerDiv.style.top);var newLeft=Math.round(originPx.x-newPx.x);var newTop=Math.round(originPx.y-newPx.y);this.layerContainerDiv.style.left=newLeft+"px";this.layerContainerDiv.style.top=newTop+"px";var dx=oldLeft-newLeft;var dy=oldTop-newTop;this.minPx.x-=dx;this.maxPx.x-=dx;this.minPx.y-=dy;this.maxPx.y-=dy;}},isValidZoomLevel:function(zoomLevel){return((zoomLevel!=null)&&(zoomLevel>=0)&&(zoomLevel<this.getNumZoomLevels()));},isValidLonLat:function(lonlat){var valid=false;if(lonlat!=null){var maxExtent=this.getMaxExtent();valid=maxExtent.containsLonLat(lonlat);}
-return valid;},getProjection:function(){var projection=this.getProjectionObject();return projection?projection.getCode():null;},getProjectionObject:function(){var projection=null;if(this.baseLayer!=null){projection=this.baseLayer.projection;}
-return projection;},getMaxResolution:function(){var maxResolution=null;if(this.baseLayer!=null){maxResolution=this.baseLayer.maxResolution;}
-return maxResolution;},getMaxExtent:function(options){var maxExtent=null;if(options&&options.restricted&&this.restrictedExtent){maxExtent=this.restrictedExtent;}else if(this.baseLayer!=null){maxExtent=this.baseLayer.maxExtent;}
-return maxExtent;},getNumZoomLevels:function(){var numZoomLevels=null;if(this.baseLayer!=null){numZoomLevels=this.baseLayer.numZoomLevels;}
-return numZoomLevels;},getExtent:function(){var extent=null;if(this.baseLayer!=null){extent=this.baseLayer.getExtent();}
-return extent;},getResolution:function(){var resolution=null;if(this.baseLayer!=null){resolution=this.baseLayer.getResolution();}else if(this.allOverlays===true&&this.layers.length>0){resolution=this.layers[0].getResolution();}
-return resolution;},getUnits:function(){var units=null;if(this.baseLayer!=null){units=this.baseLayer.units;}
-return units;},getScale:function(){var scale=null;if(this.baseLayer!=null){var res=this.getResolution();var units=this.baseLayer.units;scale=OpenLayers.Util.getScaleFromResolution(res,units);}
-return scale;},getZoomForExtent:function(bounds,closest){var zoom=null;if(this.baseLayer!=null){zoom=this.baseLayer.getZoomForExtent(bounds,closest);}
-return zoom;},getResolutionForZoom:function(zoom){var resolution=null;if(this.baseLayer){resolution=this.baseLayer.getResolutionForZoom(zoom);}
-return resolution;},getZoomForResolution:function(resolution,closest){var zoom=null;if(this.baseLayer!=null){zoom=this.baseLayer.getZoomForResolution(resolution,closest);}
-return zoom;},zoomTo:function(zoom){if(this.isValidZoomLevel(zoom)){this.setCenter(null,zoom);}},zoomIn:function(){this.zoomTo(this.getZoom()+1);},zoomOut:function(){this.zoomTo(this.getZoom()-1);},zoomToExtent:function(bounds,closest){var center=bounds.getCenterLonLat();if(this.baseLayer.wrapDateLine){var maxExtent=this.getMaxExtent();bounds=bounds.clone();while(bounds.right<bounds.left){bounds.right+=maxExtent.getWidth();}
-center=bounds.getCenterLonLat().wrapDateLine(maxExtent);}
-this.setCenter(center,this.getZoomForExtent(bounds,closest));},zoomToMaxExtent:function(options){var restricted=(options)?options.restricted:true;var maxExtent=this.getMaxExtent({'restricted':restricted});this.zoomToExtent(maxExtent);},zoomToScale:function(scale,closest){var res=OpenLayers.Util.getResolutionFromScale(scale,this.baseLayer.units);var size=this.getSize();var w_deg=size.w*res;var h_deg=size.h*res;var center=this.getCachedCenter();var extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);this.zoomToExtent(extent,closest);},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;if(this.baseLayer!=null){lonlat=this.baseLayer.getLonLatFromViewPortPx(viewPortPx);}
-return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(this.baseLayer!=null){px=this.baseLayer.getViewPortPxFromLonLat(lonlat);}
-return px;},getLonLatFromPixel:function(px){return this.getLonLatFromViewPortPx(px);},getPixelFromLonLat:function(lonlat){var px=this.getViewPortPxFromLonLat(lonlat);px.x=Math.round(px.x);px.y=Math.round(px.y);return px;},getGeodesicPixelSize:function(px){var lonlat=px?this.getLonLatFromPixel(px):(this.getCachedCenter()||new OpenLayers.LonLat(0,0));var res=this.getResolution();var left=lonlat.add(-res/2,0);var right=lonlat.add(res/2,0);var bottom=lonlat.add(0,-res/2);var top=lonlat.add(0,res/2);var dest=new OpenLayers.Projection("EPSG:4326");var source=this.getProjectionObject()||dest;if(!source.equals(dest)){left.transform(source,dest);right.transform(source,dest);bottom.transform(source,dest);top.transform(source,dest);}
-return new OpenLayers.Size(OpenLayers.Util.distVincenty(left,right),OpenLayers.Util.distVincenty(bottom,top));},getViewPortPxFromLayerPx:function(layerPx){var viewPortPx=null;if(layerPx!=null){var dX=parseInt(this.layerContainerDiv.style.left);var dY=parseInt(this.layerContainerDiv.style.top);viewPortPx=layerPx.add(dX,dY);}
-return viewPortPx;},getLayerPxFromViewPortPx:function(viewPortPx){var layerPx=null;if(viewPortPx!=null){var dX=-parseInt(this.layerContainerDiv.style.left);var dY=-parseInt(this.layerContainerDiv.style.top);layerPx=viewPortPx.add(dX,dY);if(isNaN(layerPx.x)||isNaN(layerPx.y)){layerPx=null;}}
-return layerPx;},getLonLatFromLayerPx:function(px){px=this.getViewPortPxFromLayerPx(px);return this.getLonLatFromViewPortPx(px);},getLayerPxFromLonLat:function(lonlat){var px=this.getPixelFromLonLat(lonlat);return this.getLayerPxFromViewPortPx(px);},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend","added","removed"],RESOLUTION_PROPERTIES:['scales','resolutions','maxScale','minScale','maxResolution','minResolution','numZoomLevels','maxZoomLevel'],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],metadata:{},initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}}
-if(this.wrapDateLine){this.displayOutsideMaxExtent=true;}},destroy:function(setNewBaseLayer){if(setNewBaseLayer==null){setNewBaseLayer=true;}
-if(this.map!=null){this.map.removeLayer(this,setNewBaseLayer);}
-this.projection=null;this.map=null;this.name=null;this.div=null;this.options=null;if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);}
-this.events.destroy();}
-this.eventListeners=null;this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer(this.name,this.getOptions());}
-OpenLayers.Util.applyDefaults(obj,this);obj.map=null;return obj;},getOptions:function(){var options={};for(var o in this.options){options[o]=this[o];}
-return options;},setName:function(newName){if(newName!=this.name){this.name=newName;if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"name"});}}},addOptions:function(newOptions,reinitialize){if(this.options==null){this.options={};}
-OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);}
-if(this.projection&&this.projection.getUnits()){this.units=this.projection.getUnits();}
-if(this.map){var resolution=this.map.getResolution();var properties=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]);for(var o in newOptions){if(newOptions.hasOwnProperty(o)&&OpenLayers.Util.indexOf(properties,o)>=0){this.initResolutions();if(reinitialize&&this.map.baseLayer===this){this.map.setCenter(this.map.getCenter(),this.map.getZoomForResolution(resolution),false,true);this.map.events.triggerEvent("changebaselayer",{layer:this});}
-break;}}}},onMapResize:function(){},redraw:function(){var redrawn=false;if(this.map){this.inRange=this.calculateInRange();var extent=this.getExtent();if(extent&&this.inRange&&this.visibility){var zoomChanged=true;this.moveTo(extent,zoomChanged,false);this.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});redrawn=true;}}
-return redrawn;},moveTo:function(bounds,zoomChanged,dragging){var display=this.visibility;if(!this.isBaseLayer){display=display&&this.inRange;}
-this.display(display);},moveByPx:function(dx,dy){},setMap:function(map){if(this.map==null){this.map=map;this.maxExtent=this.maxExtent||this.map.maxExtent;this.minExtent=this.minExtent||this.map.minExtent;this.projection=this.projection||this.map.projection;if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);}
-this.units=this.projection.getUnits()||this.units||this.map.units;this.initResolutions();if(!this.isBaseLayer){this.inRange=this.calculateInRange();var show=((this.visibility)&&(this.inRange));this.div.style.display=show?"":"none";}
-this.setTileSize();}},afterAdd:function(){},removeMap:function(map){},getImageSize:function(bounds){return(this.imageSize||this.tileSize);},setTileSize:function(size){var tileSize=(size)?size:((this.tileSize)?this.tileSize:this.map.getTileSize());this.tileSize=tileSize;if(this.gutter){this.imageOffset=new OpenLayers.Pixel(-this.gutter,-this.gutter);this.imageSize=new OpenLayers.Size(tileSize.w+(2*this.gutter),tileSize.h+(2*this.gutter));}},getVisibility:function(){return this.visibility;},setVisibility:function(visibility){if(visibility!=this.visibility){this.visibility=visibility;this.display(visibility);this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"});}
-this.events.triggerEvent("visibilitychanged");}},display:function(display){if(display!=(this.div.style.display!="none")){this.div.style.display=(display&&this.calculateInRange())?"block":"none";}},calculateInRange:function(){var inRange=false;if(this.alwaysInRange){inRange=true;}else{if(this.map){var resolution=this.map.getResolution();inRange=((resolution>=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 i,len,p;var props={},alwaysInRange=true;for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){p=this.RESOLUTION_PROPERTIES[i];props[p]=this.options[p];if(alwaysInRange&&this.options[p]){alwaysInRange=false;}}
-if(this.alwaysInRange==null){this.alwaysInRange=alwaysInRange;}
-if(props.resolutions==null){props.resolutions=this.resolutionsFromScales(props.scales);}
-if(props.resolutions==null){props.resolutions=this.calculateResolutions(props);}
-if(props.resolutions==null){for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){p=this.RESOLUTION_PROPERTIES[i];props[p]=this.options[p]!=null?this.options[p]:this.map[p];}
-if(props.resolutions==null){props.resolutions=this.resolutionsFromScales(props.scales);}
-if(props.resolutions==null){props.resolutions=this.calculateResolutions(props);}}
-var maxResolution;if(this.options.maxResolution&&this.options.maxResolution!=="auto"){maxResolution=this.options.maxResolution;}
-if(this.options.minScale){maxResolution=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units);}
-var minResolution;if(this.options.minResolution&&this.options.minResolution!=="auto"){minResolution=this.options.minResolution;}
-if(this.options.maxScale){minResolution=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units);}
-if(props.resolutions){props.resolutions.sort(function(a,b){return(b-a);});if(!maxResolution){maxResolution=props.resolutions[0];}
-if(!minResolution){var lastIdx=props.resolutions.length-1;minResolution=props.resolutions[lastIdx];}}
-this.resolutions=props.resolutions;if(this.resolutions){len=this.resolutions.length;this.scales=new Array(len);for(i=0;i<len;i++){this.scales[i]=OpenLayers.Util.getScaleFromResolution(this.resolutions[i],this.units);}
-this.numZoomLevels=len;}
-this.minResolution=minResolution;if(minResolution){this.maxScale=OpenLayers.Util.getScaleFromResolution(minResolution,this.units);}
-this.maxResolution=maxResolution;if(maxResolution){this.minScale=OpenLayers.Util.getScaleFromResolution(maxResolution,this.units);}},resolutionsFromScales:function(scales){if(scales==null){return;}
-var resolutions,i,len;len=scales.length;resolutions=new Array(len);for(i=0;i<len;i++){resolutions[i]=OpenLayers.Util.getResolutionFromScale(scales[i],this.units);}
-return resolutions;},calculateResolutions:function(props){var viewSize,wRes,hRes;var maxResolution=props.maxResolution;if(props.minScale!=null){maxResolution=OpenLayers.Util.getResolutionFromScale(props.minScale,this.units);}else if(maxResolution=="auto"&&this.maxExtent!=null){viewSize=this.map.getSize();wRes=this.maxExtent.getWidth()/viewSize.w;hRes=this.maxExtent.getHeight()/viewSize.h;maxResolution=Math.max(wRes,hRes);}
-var minResolution=props.minResolution;if(props.maxScale!=null){minResolution=OpenLayers.Util.getResolutionFromScale(props.maxScale,this.units);}else if(props.minResolution=="auto"&&this.minExtent!=null){viewSize=this.map.getSize();wRes=this.minExtent.getWidth()/viewSize.w;hRes=this.minExtent.getHeight()/viewSize.h;minResolution=Math.max(wRes,hRes);}
-var maxZoomLevel=props.maxZoomLevel;var numZoomLevels=props.numZoomLevels;if(typeof minResolution==="number"&&typeof maxResolution==="number"&&numZoomLevels===undefined){var ratio=maxResolution/minResolution;numZoomLevels=Math.floor(Math.log(ratio)/Math.log(2))+1;}else if(numZoomLevels===undefined&&maxZoomLevel!=null){numZoomLevels=maxZoomLevel+1;}
-if(typeof numZoomLevels!=="number"||numZoomLevels<=0||(typeof maxResolution!=="number"&&typeof minResolution!=="number")){return;}
-var resolutions=new Array(numZoomLevels);var base=2;if(typeof minResolution=="number"&&typeof maxResolution=="number"){base=Math.pow((maxResolution/minResolution),(1/(numZoomLevels-1)));}
-var i;if(typeof maxResolution==="number"){for(i=0;i<numZoomLevels;i++){resolutions[i]=maxResolution/Math.pow(base,i);}}else{for(i=0;i<numZoomLevels;i++){resolutions[numZoomLevels-1-i]=minResolution*Math.pow(base,i);}}
-return resolutions;},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[low]-
-((zoom-low)*(this.resolutions[low]-this.resolutions[high]));}else{resolution=this.resolutions[Math.round(zoom)];}
-return resolution;},getZoomForResolution:function(resolution,closest){var zoom,i,len;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(i=0,len=this.resolutions.length;i<len;++i){res=this.resolutions[i];if(res>=resolution){highRes=res;lowZoom=i;}
-if(res<=resolution){lowRes=res;highZoom=i;break;}}
-var dRes=highRes-lowRes;if(dRes>0){zoom=lowZoom+((highRes-resolution)/dRes);}else{zoom=lowZoom;}}else{var diff;var minDiff=Number.POSITIVE_INFINITY;for(i=0,len=this.resolutions.length;i<len;i++){if(closest){diff=Math.abs(this.resolutions[i]-resolution);if(diff>minDiff){break;}
-minDiff=diff;}else{if(this.resolutions[i]<resolution){break;}}}
-zoom=Math.max(0,i-1);}
-return zoom;},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;var map=this.map;if(viewPortPx!=null&&map.minPx){var res=map.getResolution();var maxExtent=map.getMaxExtent({restricted:true});var lon=(viewPortPx.x-map.minPx.x)*res+maxExtent.left;var lat=(map.minPx.y-viewPortPx.y)*res+maxExtent.top;lonlat=new OpenLayers.LonLat(lon,lat);if(this.wrapDateLine){lonlat=lonlat.wrapDateLine(this.maxExtent);}}
-return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(lonlat!=null){var resolution=this.map.getResolution();var extent=this.map.getExtent();px=new OpenLayers.Pixel((1/resolution*(lonlat.lon-extent.left)),(1/resolution*(extent.top-lonlat.lat)));}
-return px;},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.div.childNodes.length;i<len;++i){var element=this.div.childNodes[i].firstChild;OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);}
-if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"});}}},getZIndex:function(){return this.div.style.zIndex;},setZIndex:function(zIndex){this.div.style.zIndex=zIndex;},adjustBounds:function(bounds){if(this.gutter){var mapGutter=this.gutter*this.map.getResolution();bounds=new OpenLayers.Bounds(bounds.left-mapGutter,bounds.bottom-mapGutter,bounds.right+mapGutter,bounds.top+mapGutter);}
-if(this.wrapDateLine){var wrappingOptions={'rightTolerance':this.getResolution(),'leftTolerance':this.getResolution()};bounds=bounds.wrapDateLine(this.maxExtent,wrappingOptions);}
-return bounds;},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:true,initialize:function(style,options){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),"select":new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),"temporary":new OpenLayers.Style(OpenLayers.Feature.Vector.style["temporary"]),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(style instanceof OpenLayers.Style){this.styles["default"]=style;this.styles["select"]=style;this.styles["temporary"]=style;this.styles["delete"]=style;}else if(typeof style=="object"){for(var key in style){if(style[key]instanceof OpenLayers.Style){this.styles[key]=style[key];}else if(typeof style[key]=="object"){this.styles[key]=new OpenLayers.Style(style[key]);}else{this.styles["default"]=new OpenLayers.Style(style);this.styles["select"]=new OpenLayers.Style(style);this.styles["temporary"]=new OpenLayers.Style(style);this.styles["delete"]=new OpenLayers.Style(style);break;}}}
-OpenLayers.Util.extend(this,options);},destroy:function(){for(var key in this.styles){this.styles[key].destroy();}
-this.styles=null;},createSymbolizer:function(feature,intent){if(!feature){feature=new OpenLayers.Feature.Vector();}
-if(!this.styles[intent]){intent="default";}
-feature.renderIntent=intent;var defaultSymbolizer={};if(this.extendDefault&&intent!="default"){defaultSymbolizer=this.styles["default"].createSymbolizer(feature);}
-return OpenLayers.Util.extend(defaultSymbolizer,this.styles[intent].createSymbolizer(feature));},addUniqueValueRules:function(renderIntent,property,symbolizers,context){var rules=[];for(var value in symbolizers){rules.push(new OpenLayers.Rule({symbolizer:symbolizers[value],context:context,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:property,value:value})}));}
-this.styles[renderIntent].addRules(rules);},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{EVENT_TYPES:["beforefeatureadded","beforefeaturesadded","featureadded","featuresadded","beforefeatureremoved","beforefeaturesremoved","featureremoved","featuresremoved","beforefeatureselected","featureselected","featureunselected","beforefeaturemodified","featuremodified","afterfeaturemodified","vertexmodified","vertexremoved","sketchstarted","sketchmodified","sketchcomplete","refresh"],isBaseLayer:false,isFixed:false,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:true,style:null,styleMap:null,strategies:null,protocol:null,renderers:['SVG','VML','Canvas'],renderer:null,rendererOptions:null,geometryType:null,drawn:false,initialize:function(name,options){this.EVENT_TYPES=OpenLayers.Layer.Vector.prototype.EVENT_TYPES.concat(OpenLayers.Layer.prototype.EVENT_TYPES);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();}
-if(!this.styleMap){this.styleMap=new OpenLayers.StyleMap();}
-this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies){for(var i=0,len=this.strategies.length;i<len;i++){this.strategies[i].setLayer(this);}}},destroy:function(){if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoDestroy){strategy.destroy();}}
-this.strategies=null;}
-if(this.protocol){if(this.protocol.autoDestroy){this.protocol.destroy();}
-this.protocol=null;}
-this.destroyFeatures();this.features=null;this.selectedFeatures=null;this.unrenderedFeatures=null;if(this.renderer){this.renderer.destroy();}
-this.renderer=null;this.geometryType=null;this.drawn=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Vector(this.name,this.getOptions());}
-obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);var features=this.features;var len=features.length;var clonedFeatures=new Array(len);for(var i=0;i<len;++i){clonedFeatures[i]=features[i].clone();}
-obj.features=clonedFeatures;return obj;},refresh:function(obj){if(this.calculateInRange()&&this.visibility){this.events.triggerEvent("refresh",obj);}},assignRenderer:function(){for(var i=0,len=this.renderers.length;i<len;i++){var rendererClass=this.renderers[i];var renderer=(typeof rendererClass=="function")?rendererClass:OpenLayers.Renderer[rendererClass];if(renderer&&renderer.prototype.supported()){this.renderer=new renderer(this.div,this.rendererOptions);break;}}},displayError:function(){if(this.reportError){OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{'renderers':this.renderers.join("\n")}));}},setMap:function(map){OpenLayers.Layer.prototype.setMap.apply(this,arguments);if(!this.renderer){this.map.removeLayer(this);}else{this.renderer.map=this.map;this.renderer.setSize(this.map.getSize());}},afterAdd:function(){if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoActivate){strategy.activate();}}}},removeMap:function(map){this.drawn=false;if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoActivate){strategy.deactivate();}}}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,arguments);this.renderer.setSize(this.map.getSize());},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var ng=(OpenLayers.Renderer.NG&&this.renderer instanceof OpenLayers.Renderer.NG);if(ng){dragging||this.renderer.updateDimensions(zoomChanged);}else{var coordSysUnchanged=true;if(!dragging){this.renderer.root.style.visibility="hidden";this.div.style.left=-parseInt(this.map.layerContainerDiv.style.left)+"px";this.div.style.top=-parseInt(this.map.layerContainerDiv.style.top)+"px";var extent=this.map.getExtent();coordSysUnchanged=this.renderer.setExtent(extent,zoomChanged);this.renderer.root.style.visibility="visible";if(OpenLayers.IS_GECKO===true){this.div.scrollLeft=this.div.scrollLeft;}
-if(!zoomChanged&&coordSysUnchanged){for(var i in this.unrenderedFeatures){var feature=this.unrenderedFeatures[i];this.drawFeature(feature);}}}}
-if(!this.drawn||(!ng&&(zoomChanged||!coordSysUnchanged))){this.drawn=true;var feature;for(var i=0,len=this.features.length;i<len;i++){this.renderer.locked=(i!==(len-1));feature=this.features[i];this.drawFeature(feature);}}},redraw:function(){if(OpenLayers.Renderer.NG&&this.renderer instanceof OpenLayers.Renderer.NG){this.drawn=false;}
-return OpenLayers.Layer.prototype.redraw.apply(this,arguments);},display:function(display){OpenLayers.Layer.prototype.display.apply(this,arguments);var currentDisplay=this.div.style.display;if(currentDisplay!=this.renderer.root.style.display){this.renderer.root.style.display=currentDisplay;}},addFeatures:function(features,options){if(!(OpenLayers.Util.isArray(features))){features=[features];}
-var notify=!options||!options.silent;if(notify){var event={features:features};var ret=this.events.triggerEvent("beforefeaturesadded",event);if(ret===false){return;}
-features=event.features;}
-var featuresAdded=[];for(var i=0,len=features.length;i<len;i++){if(i!=(features.length-1)){this.renderer.locked=true;}else{this.renderer.locked=false;}
-var feature=features[i];if(this.geometryType&&!(feature.geometry instanceof this.geometryType)){var throwStr=OpenLayers.i18n('componentShouldBe',{'geomType':this.geometryType.prototype.CLASS_NAME});throw throwStr;}
-feature.layer=this;if(!feature.style&&this.style){feature.style=OpenLayers.Util.extend({},this.style);}
-if(notify){if(this.events.triggerEvent("beforefeatureadded",{feature:feature})===false){continue;}
-this.preFeatureInsert(feature);}
-featuresAdded.push(feature);this.features.push(feature);this.drawFeature(feature);if(notify){this.events.triggerEvent("featureadded",{feature:feature});this.onFeatureInsert(feature);}}
-if(notify){this.events.triggerEvent("featuresadded",{features:featuresAdded});}},removeFeatures:function(features,options){if(!features||features.length===0){return;}
-if(features===this.features){return this.removeAllFeatures(options);}
-if(!(OpenLayers.Util.isArray(features))){features=[features];}
-if(features===this.selectedFeatures){features=features.slice();}
-var notify=!options||!options.silent;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});}
-for(var i=features.length-1;i>=0;i--){if(i!=0&&features[i-1].geometry){this.renderer.locked=true;}else{this.renderer.locked=false;}
-var feature=features[i];delete this.unrenderedFeatures[feature.id];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});}
-this.features=OpenLayers.Util.removeItem(this.features,feature);feature.layer=null;if(feature.geometry){this.renderer.eraseFeatures(feature);}
-if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}
-if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}}
-if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},removeAllFeatures:function(options){var notify=!options||!options.silent;var features=this.features;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});}
-var feature;for(var i=features.length-1;i>=0;i--){feature=features[i];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});}
-feature.layer=null;if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}}
-this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},destroyFeatures:function(features,options){var all=(features==undefined);if(all){features=this.features;}
-if(features){this.removeFeatures(features,options);for(var i=features.length-1;i>=0;i--){features[i].destroy();}}},drawFeature:function(feature,style){if(!this.drawn){return;}
-if(typeof style!="object"){if(!style&&feature.state===OpenLayers.State.DELETE){style="delete";}
-var renderIntent=style||feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}}
-var drawn=this.renderer.drawFeature(feature,style);if(drawn===false||drawn===null){this.unrenderedFeatures[feature.id]=feature;}else{delete this.unrenderedFeatures[feature.id];}},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;}
-var feature=null;var featureId=this.renderer.getFeatureIdFromEvent(evt);if(featureId){if(typeof featureId==="string"){feature=this.getFeatureById(featureId);}else{feature=featureId;}}
-return feature;},getFeatureBy:function(property,value){var feature=null;for(var i=0,len=this.features.length;i<len;++i){if(this.features[i][property]==value){feature=this.features[i];break;}}
-return feature;},getFeatureById:function(featureId){return this.getFeatureBy('id',featureId);},getFeatureByFid:function(featureFid){return this.getFeatureBy('fid',featureFid);},getFeaturesByAttribute:function(attrName,attrValue){var i,feature,len=this.features.length,foundFeatures=[];for(i=0;i<len;i++){feature=this.features[i];if(feature&&feature.attributes){if(feature.attributes[attrName]===attrValue){foundFeatures.push(feature);}}}
-return foundFeatures;},onFeatureInsert:function(feature){},preFeatureInsert:function(feature){},getDataExtent:function(){var maxExtent=null;var features=this.features;if(features&&(features.length>0)){var geometry=null;for(var i=0,len=features.length;i<len;i++){geometry=features[i].geometry;if(geometry){if(maxExtent===null){maxExtent=new OpenLayers.Bounds();}
-maxExtent.extend(geometry.getBounds());}}}
-return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:false,layers:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},display:function(){},getFeatureFromEvent:function(evt){var layers=this.layers;var feature;for(var i=0;i<layers.length;i++){feature=layers[i].getFeatureFromEvent(evt);if(feature){return feature;}}},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();map.events.register("changelayer",this,this.handleChangeLayer);},removeMap:function(map){map.events.unregister("changelayer",this,this.handleChangeLayer);this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments);},collectRoots:function(){var layer;for(var i=0;i<this.map.layers.length;++i){layer=this.map.layers[i];if(OpenLayers.Util.indexOf(this.layers,layer)!=-1){layer.renderer.moveRoot(this.renderer);}}},resetRoots:function(){var layer;for(var i=0;i<this.layers.length;++i){layer=this.layers[i];if(this.renderer&&layer.renderer.getRenderLayerId()==this.id){this.renderer.moveRoot(layer.renderer);}}},handleChangeLayer:function(evt){var layer=evt.layer;if(evt.property=="order"&&OpenLayers.Util.indexOf(this.layers,layer)!=-1){this.resetRoots();this.collectRoots();}},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforefeaturehighlighted","featurehighlighted","featureunhighlighted"],multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,highlightOnly:false,box:false,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(layers,options){this.EVENT_TYPES=OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.scope===null){this.scope=this;}
-this.initLayer(layers);var callbacks={click:this.clickFeature,clickout:this.clickoutFeature};if(this.hover){callbacks.over=this.overFeature;callbacks.out=this.outFeature;}
-this.callbacks=OpenLayers.Util.extend(callbacks,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"});}},initLayer:function(layers){if(OpenLayers.Util.isArray(layers)){this.layers=layers;this.layer=new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:layers});}else{this.layer=layers;}},destroy:function(){if(this.active&&this.layers){this.map.removeLayer(this.layer);}
-OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.layers){this.layer.destroy();}},activate:function(){if(!this.active){if(this.layers){this.map.addLayer(this.layer);}
-this.handlers.feature.activate();if(this.box&&this.handlers.box){this.handlers.box.activate();}}
-return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){this.handlers.feature.deactivate();if(this.handlers.box){this.handlers.box.deactivate();}
-if(this.layers){this.map.removeLayer(this.layer);}}
-return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},unselectAll:function(options){var layers=this.layers||[this.layer];var layer,feature;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=layer.selectedFeatures.length-1;i>=0;--i){feature=layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(feature.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.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]);},toggleSelect:function(){return this.toggle||(this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]);},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){var layer=feature.layer;if(this.hover){if(this.highlightOnly){this.highlight(feature);}else if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}},outFeature:function(feature){if(this.hover){if(this.highlightOnly){if(feature._lastHighlighter==this.id){if(feature._prevHighlighter&&feature._prevHighlighter!=this.id){delete feature._lastHighlighter;var control=this.map.getControl(feature._prevHighlighter);if(control){control.highlight(feature);}}else{this.unhighlight(feature);}}}else{this.unselect(feature);}}},highlight:function(feature){var layer=feature.layer;var cont=this.events.triggerEvent("beforefeaturehighlighted",{feature:feature});if(cont!==false){feature._prevHighlighter=feature._lastHighlighter;feature._lastHighlighter=this.id;var style=this.selectStyle||this.renderIntent;layer.drawFeature(feature,style);this.events.triggerEvent("featurehighlighted",{feature:feature});}},unhighlight:function(feature){var layer=feature.layer;if(feature._prevHighlighter==undefined){delete feature._lastHighlighter;}else if(feature._prevHighlighter==this.id){delete feature._prevHighlighter;}else{feature._lastHighlighter=feature._prevHighlighter;delete feature._prevHighlighter;}
-layer.drawFeature(feature,feature.style||feature.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:feature});},select:function(feature){var cont=this.onBeforeSelect.call(this.scope,feature);var layer=feature.layer;if(cont!==false){cont=layer.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){layer.selectedFeatures.push(feature);this.highlight(feature);if(!this.handlers.feature.lastFeature){this.handlers.feature.lastFeature=layer.selectedFeatures[0];}
-layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect.call(this.scope,feature);}}},unselect:function(feature){var layer=feature.layer;this.unhighlight(feature);OpenLayers.Util.removeItem(layer.selectedFeatures,feature);layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect.call(this.scope,feature);},selectBox: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);if(!this.multipleSelect()){this.unselectAll();}
-var prevMultiple=this.multiple;this.multiple=true;var layers=this.layers||[this.layer];var layer;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=0,len=layer.features.length;i<len;++i){var feature=layer.features[i];if(!feature.getVisibility()){continue;}
-if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1){if(bounds.toGeometry().intersects(feature.geometry)){if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}}}}
-this.multiple=prevMultiple;}},setMap:function(map){this.handlers.feature.setMap(map);if(this.box){this.handlers.box.setMap(map);}
-OpenLayers.Control.prototype.setMap.apply(this,arguments);},setLayer:function(layers){var isActive=this.active;this.unselectAll();this.deactivate();if(this.layers){this.layer.destroy();this.layers=null;}
-this.initLayer(layers);this.handlers.feature.layer=this.layer;if(isActive){this.activate();}},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",destroy:function(){this.map.events.un({"removelayer":this.updateAttribution,"addlayer":this.updateAttribution,"changelayer":this.updateAttribution,"changebaselayer":this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({'changebaselayer':this.updateAttribution,'changelayer':this.updateAttribution,'addlayer':this.updateAttribution,'removelayer':this.updateAttribution,scope:this});this.updateAttribution();return this.div;},updateAttribution:function(){var attributions=[];if(this.map&&this.map.layers){for(var i=0,len=this.map.layers.length;i<len;i++){var layer=this.map.layers[i];if(layer.attribution&&layer.getVisibility()){if(OpenLayers.Util.indexOf(attributions,layer.attribution)===-1){attributions.push(layer.attribution);}}}
-this.div.innerHTML=attributions.join(this.separator);}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(options){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this);},evaluate:function(context){var i,len;switch(this.type){case OpenLayers.Filter.Logical.AND:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==false){return false;}}
-return true;case OpenLayers.Filter.Logical.OR:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==true){return true;}}
-return false;case OpenLayers.Filter.Logical.NOT:return(!this.filters[0].evaluate(context));}
-return undefined;},clone:function(){var filters=[];for(var i=0,len=this.filters.length;i<len;++i){filters.push(this.filters[i].clone());}
-return new OpenLayers.Filter.Logical({type:this.type,filters:filters});},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,touch:false,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(this.documentDrag===true){var me=this;this._docMove=function(evt){me.mousemove({xy:{x:evt.clientX,y:evt.clientY},element:document});};this._docUp=function(evt){me.mouseup({xy:{x:evt.clientX,y:evt.clientY}});};}},dragstart:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&(OpenLayers.Event.isLeftClick(evt)||OpenLayers.Event.isSingleTouch(evt))){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True;}
-document.onselectstart=OpenLayers.Function.False;propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;}
-return propagate;},dragmove:function(evt){this.lastMoveEvt=evt;if(this.started&&!this.timeoutId&&(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y)){if(this.documentDrag===true&&this.documentEvents){if(evt.element===document){this.adjustXY(evt);this.setEvent(evt);}else{this.removeDocumentEvents();}}
-if(this.interval>0){this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval);}
-this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=OpenLayers.Function.False;}
-this.last=evt.xy;}
-return true;},dragend:function(evt){if(this.started){if(this.documentDrag===true&&this.documentEvents){this.adjustXY(evt);this.removeDocumentEvents();}
-var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);}
-document.onselectstart=this.oldOnselectstart;}
-return true;},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){return this.dragstart(evt);},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this});}
-return this.dragstart(evt);},mousemove:function(evt){return this.dragmove(evt);},touchmove:function(evt){return this.dragmove(evt);},removeTimeout:function(){this.timeoutId=null;if(this.dragging){this.mousemove(this.lastMoveEvt);}},mouseup:function(evt){return this.dragend(evt);},touchend:function(evt){evt.xy=this.last;return this.dragend(evt);},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){if(this.documentDrag===true){this.addDocumentEvents();}else{var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");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.touch=false;this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");}
-return deactivated;},adjustXY:function(evt){var pos=OpenLayers.Util.pagePosition(this.map.viewPortDiv);evt.xy.x-=pos[0];evt.xy.y-=pos[1];},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=true;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp);},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=false;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp);},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxOffsets:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask});},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);if(this.dragHandler){this.dragHandler.destroy();this.dragHandler=null;}},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv('zoomBox',new OpenLayers.Pixel(-9999,-9999));this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.eventsDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.eventsDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);var offset=this.getBoxOffsets();this.zoomBox.style.width=(deltaX+offset.width+1)+"px";this.zoomBox.style.height=(deltaY+offset.height+1)+"px";this.zoomBox.style.left=(xy.x<startX?startX-deltaX-offset.left:startX-offset.left)+"px";this.zoomBox.style.top=(xy.y<startY?startY-deltaY-offset.top:startY-offset.top)+"px";},endBox:function(end){var result;if(Math.abs(this.dragHandler.start.x-end.x)>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.callback("done",[result]);},removeBox:function(){this.map.eventsDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxOffsets=null;OpenLayers.Element.removeClass(this.map.eventsDiv,"olDrawBox");},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)){if(this.dragHandler.deactivate()){if(this.zoomBox){this.removeBox();}}
-return true;}else{return false;}},getBoxOffsets:function(){if(!this.boxOffsets){var testDiv=document.createElement("div");testDiv.style.position="absolute";testDiv.style.border="1px solid black";testDiv.style.width="3px";document.body.appendChild(testDiv);var w3cBoxModel=testDiv.clientWidth==3;document.body.removeChild(testDiv);var left=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"));var right=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"));var top=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"));var bottom=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:left,right:right,top:top,bottom:bottom,width:w3cBoxModel===false?left+right:0,height:w3cBoxModel===false?top+bottom:0};}
-return this.boxOffsets;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,alwaysZoom:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){var 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));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;bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);}
-var lastZoom=this.map.getZoom();this.map.zoomToExtent(bounds);if(lastZoom==this.map.getZoom()&&this.alwaysZoom==true){this.map.zoomTo(lastZoom+(this.out?-1:1));}}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.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:1,documentDrag:false,kinetic:null,enableKinetic:false,kineticInterval:10,draw:function(){if(this.enableKinetic){var config={interval:this.kineticInterval};if(typeof this.enableKinetic==="object"){config=OpenLayers.Util.extend(config,this.enableKinetic);}
-this.kinetic=new OpenLayers.Kinetic(config);}
-this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone,"down":this.panMapStart},{interval:this.interval,documentDrag:this.documentDrag});},panMapStart:function(){if(this.kinetic){this.kinetic.begin();}},panMap:function(xy){if(this.kinetic){this.kinetic.update(xy);}
-this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:true,animate:false});},panMapDone:function(xy){if(this.panned){var res=null;if(this.kinetic){res=this.kinetic.end(xy);}
-this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:!!res,animate:false});if(res){var self=this;this.kinetic.move(res,function(x,y,end){self.map.pan(x,y,{dragging:!end,animate:false});});}
-this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:true,'double':false,pixelTolerance:0,dblclickTolerance:13,stopSingle:false,stopDouble:false,timerId:null,touch:false,down:null,last:null,first:null,rightclickTimerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){if(!this.touch){this.unregisterMouseListeners();this.touch=true;}
-this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},touchmove:function(evt){this.last=this.getEventInfo(evt);return true;},touchend:function(evt){if(this.down){evt.xy=this.last.xy;evt.lastTouches=this.last.touches;this.handleSingle(evt);this.down=null;}
-return true;},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this});},mousedown:function(evt){this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},mouseup:function(evt){var propagate=true;if(this.checkModifiers(evt)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(evt)){propagate=this.rightclick(evt);}
-return propagate;},rightclick:function(evt){if(this.passesTolerance(evt)){if(this.rightclickTimerId!=null){this.clearTimer();this.callback('dblrightclick',[evt]);return!this.stopDouble;}else{var clickEvent=this['double']?OpenLayers.Util.extend({},evt):this.callback('rightclick',[evt]);var delayedRightCall=OpenLayers.Function.bind(this.delayedRightCall,this,clickEvent);this.rightclickTimerId=window.setTimeout(delayedRightCall,this.delay);}}
-return!this.stopSingle;},delayedRightCall:function(evt){this.rightclickTimerId=null;if(evt){this.callback('rightclick',[evt]);}},click:function(evt){if(!this.last){this.last=this.getEventInfo(evt);}
-this.handleSingle(evt);return!this.stopSingle;},dblclick:function(evt){this.handleDouble(evt);return!this.stopDouble;},handleDouble:function(evt){if(this["double"]&&this.passesDblclickTolerance(evt)){this.callback("dblclick",[evt]);}},handleSingle:function(evt){if(this.passesTolerance(evt)){if(this.timerId!=null){if(this.last.touches&&this.last.touches.length===1){if(this["double"]){OpenLayers.Event.stop(evt);}
-this.handleDouble(evt);}
-if(!this.last.touches||this.last.touches.length!==2){this.clearTimer();}}else{this.first=this.getEventInfo(evt);var clickEvent=this.single?OpenLayers.Util.extend({},evt):null;this.queuePotentialClick(clickEvent);}}},queuePotentialClick:function(evt){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);},passesTolerance:function(evt){var passes=true;if(this.pixelTolerance!=null&&this.down&&this.down.xy){passes=this.pixelTolerance>=this.down.xy.distanceTo(evt.xy);if(passes&&this.touch&&this.down.touches.length===this.last.touches.length){for(var i=0,ii=this.down.touches.length;i<ii;++i){if(this.getTouchDistance(this.down.touches[i],this.last.touches[i])>this.pixelTolerance){passes=false;break;}}}}
-return passes;},getTouchDistance:function(from,to){return Math.sqrt(Math.pow(from.clientX-to.clientX,2)+
-Math.pow(from.clientY-to.clientY,2));},passesDblclickTolerance:function(evt){var passes=true;if(this.down&&this.first){passes=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance;}
-return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}
-if(this.rightclickTimerId!=null){window.clearTimeout(this.rightclickTimerId);this.rightclickTimerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback("click",[evt]);}},getEventInfo:function(evt){var touches;if(evt.touches){var len=evt.touches.length;touches=new Array(len);var touch;for(var i=0;i<len;i++){touch=evt.touches[i];touches[i]={clientX:touch.clientX,clientY:touch.clientY};}}
-return{xy:evt.xy,touches:touches};},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;this.first=null;this.last=null;this.touch=false;deactivated=true;}
-return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:false,zoomBox:null,zoomBoxEnabled:true,zoomWheelEnabled:true,mouseWheelOptions:null,handleRightClicks:false,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:true,initialize:function(options){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.deactivate();if(this.dragPan){this.dragPan.destroy();}
-this.dragPan=null;if(this.zoomBox){this.zoomBox.destroy();}
-this.zoomBox=null;if(this.pinchZoom){this.pinchZoom.destroy();}
-this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){this.dragPan.activate();if(this.zoomWheelEnabled){this.handlers.wheel.activate();}
-this.handlers.click.activate();if(this.zoomBoxEnabled){this.zoomBox.activate();}
-if(this.pinchZoom){this.pinchZoom.activate();}
-return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.pinchZoom){this.pinchZoom.deactivate();}
-this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},draw:function(){if(this.handleRightClicks){this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False;}
-var clickCallbacks={'click':this.defaultClick,'dblclick':this.defaultDblClick,'dblrightclick':this.defaultDblRightClick};var clickOptions={'double':true,'stopDouble':true};this.handlers.click=new OpenLayers.Handler.Click(this,clickCallbacks,clickOptions);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{"up":this.wheelUp,"down":this.wheelDown},this.mouseWheelOptions);if(OpenLayers.Control.PinchZoom){this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions));}},defaultClick:function(evt){if(evt.lastTouches&&evt.lastTouches.length==2){this.map.zoomOut();}},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);},defaultDblRightClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom-1);},wheelChange:function(evt,deltaZ){var currentZoom=this.map.getZoom();var newZoom=this.map.getZoom()+Math.round(deltaZ);newZoom=Math.max(newZoom,0);newZoom=Math.min(newZoom,this.map.getNumZoomLevels());if(newZoom===currentZoom){return;}
-var size=this.map.getSize();var deltaX=size.w/2-evt.xy.x;var deltaY=evt.xy.y-size.h/2;var newRes=this.map.baseLayer.getResolutionForZoom(newZoom);var zoomPoint=this.map.getLonLatFromPixel(evt.xy);var newCenter=new OpenLayers.LonLat(zoomPoint.lon+deltaX*newRes,zoomPoint.lat+deltaY*newRes);this.map.setCenter(newCenter,newZoom);},wheelUp:function(evt,delta){this.wheelChange(evt,delta||1);},wheelDown:function(evt,delta){this.wheelChange(evt,delta||-1);},disableZoomBox:function(){this.zoomBoxEnabled=false;this.zoomBox.deactivate();},enableZoomBox:function(){this.zoomBoxEnabled=true;if(this.active){this.zoomBox.activate();}},disableZoomWheel:function(){this.zoomWheelEnabled=false;this.handlers.wheel.deactivate();},enableZoomWheel:function(){this.zoomWheelEnabled=true;if(this.active){this.handlers.wheel.activate();}},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:false,initialize:function(name,url,params,options){OpenLayers.Layer.prototype.initialize.apply(this,[name,options]);this.url=url;this.params=OpenLayers.Util.extend({},params);},destroy:function(){this.url=null;this.params=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions());}
-obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setUrl:function(newUrl){this.url=newUrl;},mergeNewParams:function(newParams){this.params=OpenLayers.Util.extend(this.params,newParams);var ret=this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});}
-return ret;},redraw:function(force){if(force){return this.mergeNewParams({"_olSalt":Math.random()});}else{return OpenLayers.Layer.prototype.redraw.apply(this,[]);}},selectUrl:function(paramString,urls){var product=1;for(var i=0,len=paramString.length;i<len;i++){product*=paramString.charCodeAt(i)*this.URL_HASH_FACTOR;product-=Math.floor(product);}
-return urls[Math.floor(product*urls.length)];},getFullRequestString:function(newParams,altUrl){var url=altUrl||this.url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(OpenLayers.Util.isArray(url)){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);return OpenLayers.Util.urlAppend(url,paramsString);},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,grid:null,singleTile:false,ratio:1.5,buffer:0,numLoadingTiles:0,tileLoadingDelay:100,timerId:null,initialize:function(name,url,params,options){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.events.addEventType("tileloaded");this.grid=[];this._moveGriddedTiles=OpenLayers.Function.bind(this.moveGriddedTiles,this);},removeMap:function(map){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},destroy:function(){this.clearGrid();this.grid=null;this.tileSize=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments);},clearGrid:function(){if(this.grid){for(var iRow=0,len=this.grid.length;iRow<len;iRow++){var row=this.grid[iRow];for(var iCol=0,clen=row.length;iCol<clen;iCol++){var tile=row[iCol];this.removeTileMonitoringHooks(tile);tile.destroy();}}
-this.grid=[];}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions());}
-obj=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();}
-obj.grid=[];return obj;},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);bounds=bounds||this.map.getExtent();if(bounds!=null){var forceReTile=!this.grid.length||zoomChanged;var tilesBounds=this.getTilesBounds();if(this.singleTile){if(forceReTile||(!dragging&&!tilesBounds.containsBounds(bounds))){this.initSingleTile(bounds);}}else{if(forceReTile||!tilesBounds.containsBounds(bounds,true)){this.initGriddedTiles(bounds);}else{this.scheduleMoveGriddedTiles();}}}},moveByPx:function(dx,dy){if(!this.singleTile){this.scheduleMoveGriddedTiles();}},scheduleMoveGriddedTiles:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);}
-this.timerId=window.setTimeout(this._moveGriddedTiles,this.tileLoadingDelay);},setTileSize:function(size){if(this.singleTile){size=this.map.getSize();size.h=parseInt(size.h*this.ratio);size.w=parseInt(size.w*this.ratio);}
-OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[size]);},getGridBounds:function(){var msg="The getGridBounds() function is deprecated. It will be "+"removed in 3.0. Please use getTilesBounds() instead.";OpenLayers.Console.warn(msg);return this.getTilesBounds();},getTilesBounds:function(){var bounds=null;if(this.grid.length){var bottom=this.grid.length-1;var bottomLeftTile=this.grid[bottom][0];var right=this.grid[0].length-1;var topRightTile=this.grid[0][right];bounds=new OpenLayers.Bounds(bottomLeftTile.bounds.left,bottomLeftTile.bounds.bottom,topRightTile.bounds.right,topRightTile.bounds.top);}
-return bounds;},initSingleTile:function(bounds){var center=bounds.getCenterLonLat();var tileWidth=bounds.getWidth()*this.ratio;var tileHeight=bounds.getHeight()*this.ratio;var tileBounds=new OpenLayers.Bounds(center.lon-(tileWidth/2),center.lat-(tileHeight/2),center.lon+(tileWidth/2),center.lat+(tileHeight/2));var ul=new OpenLayers.LonLat(tileBounds.left,tileBounds.top);var px=this.map.getLayerPxFromLonLat(ul);if(!this.grid.length){this.grid[0]=[];}
-var tile=this.grid[0][0];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);tile.draw();this.grid[0][0]=tile;}else{tile.moveTo(tileBounds,px);}
-this.removeExcessTiles(1,1);},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-origin.lon;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=origin.lon+tilecol*tilelon;var offsetlat=bounds.top-(origin.lat+tilelat);var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-tilerowremain*this.tileSize.h;var tileoffsetlat=origin.lat+tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},getTileOrigin:function(){var origin=this.tileOrigin;if(!origin){var extent=this.getMaxExtent();var edges=({"tl":["left","top"],"tr":["right","top"],"bl":["left","bottom"],"br":["right","bottom"]})[this.tileOriginCorner];origin=new OpenLayers.LonLat(extent[edges[0]],extent[edges[1]]);}
-return origin;},initGriddedTiles:function(bounds){var viewSize=this.map.getSize();var minRows=Math.ceil(viewSize.h/this.tileSize.h)+
-Math.max(1,2*this.buffer);var minCols=Math.ceil(viewSize.w/this.tileSize.w)+
-Math.max(1,2*this.buffer);var origin=this.getTileOrigin();var resolution=this.map.getResolution();var tileLayout=this.calculateGridLayout(bounds,origin,resolution);var tileoffsetx=Math.round(tileLayout.tileoffsetx);var tileoffsety=Math.round(tileLayout.tileoffsety);var tileoffsetlon=tileLayout.tileoffsetlon;var tileoffsetlat=tileLayout.tileoffsetlat;var tilelon=tileLayout.tilelon;var tilelat=tileLayout.tilelat;this.origin=new OpenLayers.Pixel(tileoffsetx,tileoffsety);var startX=tileoffsetx;var startLon=tileoffsetlon;var rowidx=0;var layerContainerDivLeft=parseInt(this.map.layerContainerDiv.style.left);var layerContainerDivTop=parseInt(this.map.layerContainerDiv.style.top);do{var row=this.grid[rowidx++];if(!row){row=[];this.grid.push(row);}
-tileoffsetlon=startLon;tileoffsetx=startX;var colidx=0;do{var tileBounds=new OpenLayers.Bounds(tileoffsetlon,tileoffsetlat,tileoffsetlon+tilelon,tileoffsetlat+tilelat);var x=tileoffsetx;x-=layerContainerDivLeft;var y=tileoffsety;y-=layerContainerDivTop;var px=new OpenLayers.Pixel(x,y);var tile=row[colidx++];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);row.push(tile);}else{tile.moveTo(tileBounds,px,false);}
-tileoffsetlon+=tilelon;tileoffsetx+=this.tileSize.w;}while((tileoffsetlon<=bounds.right+tilelon*this.buffer)||colidx<minCols);tileoffsetlat-=tilelat;tileoffsety+=this.tileSize.h;}while((tileoffsetlat>=bounds.bottom-tilelat*this.buffer)||rowidx<minRows);this.removeExcessTiles(rowidx,colidx);this.spiralTileLoad();},getMaxExtent:function(){return this.maxExtent;},spiralTileLoad:function(){var tileQueue=[];var directions=["right","down","left","up"];var iRow=0;var iCell=-1;var direction=OpenLayers.Util.indexOf(directions,"right");var directionsTried=0;while(directionsTried<directions.length){var testRow=iRow;var testCell=iCell;switch(directions[direction]){case"right":testCell++;break;case"down":testRow++;break;case"left":testCell--;break;case"up":testRow--;break;}
-var tile=null;if((testRow<this.grid.length)&&(testRow>=0)&&(testCell<this.grid[0].length)&&(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,len=tileQueue.length;i<len;i++){var tile=tileQueue[i];tile.draw();tile.queued=false;}},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize,this.tileOptions);},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){if(this.numLoadingTiles==0){this.events.triggerEvent("loadstart");}
-this.numLoadingTiles++;};tile.events.register("loadstart",this,tile.onLoadStart);tile.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded");if(this.numLoadingTiles==0){this.events.triggerEvent("loadend");}};tile.events.register("loadend",this,tile.onLoadEnd);tile.events.register("unload",this,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:this});},moveGriddedTiles:function(){var shifted=true;var buffer=this.buffer||1;var tlLayer=this.grid[0][0].position;var offsetX=parseInt(this.map.layerContainerDiv.style.left);var offsetY=parseInt(this.map.layerContainerDiv.style.top);var tlViewPort=tlLayer.add(offsetX,offsetY);if(tlViewPort.x>-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{shifted=false;}
-if(shifted){this.timerId=window.setTimeout(this._moveGriddedTiles,0);}},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,len=modelRow.length;i<len;i++){var modelTile=modelRow[i];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.bottom=bounds.bottom+deltaLat;bounds.top=bounds.top+deltaLat;position.y=position.y+deltaY;row[i].moveTo(bounds,position);}
-if(prepend){grid.unshift(row);}else{grid.push(row);}},shiftColumn:function(prepend){var deltaX=(prepend)?-this.tileSize.w:this.tileSize.w;var resolution=this.map.getResolution();var deltaLon=resolution*deltaX;for(var i=0,len=this.grid.length;i<len;i++){var row=this.grid[i];var modelTileIndex=(prepend)?0:(row.length-1);var modelTile=row[modelTileIndex];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.left=bounds.left+deltaLon;bounds.right=bounds.right+deltaLon;position.x=position.x+deltaX;var tile=prepend?this.grid[i].pop():this.grid[i].shift();tile.moveTo(bounds,position);if(prepend){row.unshift(tile);}else{row.push(tile);}}},removeExcessTiles:function(rows,columns){while(this.grid.length>rows){var row=this.grid.pop();for(var i=0,l=row.length;i<l;i++){var tile=row[i];this.removeTileMonitoringHooks(tile);tile.destroy();}}
-while(this.grid[0].length>columns){for(var i=0,l=this.grid.length;i<l;i++){var row=this.grid[i];var tile=row.pop();this.removeTileMonitoringHooks(tile);tile.destroy();}}},onMapResize:function(){if(this.singleTile){this.clearGrid();this.setTileSize();}},getTileBounds:function(viewPortPx){var maxExtent=this.maxExtent;var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=maxExtent.left+(tileMapWidth*Math.floor((mapPoint.lon-
-maxExtent.left)/tileMapWidth));var tileBottom=maxExtent.bottom+(tileMapHeight*Math.floor((mapPoint.lat-
-maxExtent.bottom)/tileMapHeight));return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,zoomOffset:0,serverResolutions:null,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.03390625,-128*156543.03390625,128*156543.03390625,128*156543.03390625),maxResolution:156543.03390625,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);}
-url=url||this.url;name=name||this.name;var newArguments=[name,url,{},options];OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions());}
-obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var xyz=this.getXYZ(bounds);var url=this.url;if(OpenLayers.Util.isArray(url)){var s=''+xyz.x+xyz.y+xyz.z;url=this.selectUrl(s,url);}
-return OpenLayers.String.format(url,xyz);},getXYZ:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom()+this.zoomOffset;var limit=Math.pow(2,z);if(this.wrapDateLine)
-{x=((x%limit)+limit)%limit;}
-return{'x':x,'y':y,'z':z};},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",attribution:"Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions());}
-obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},wrapDateLine:true,CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15000,translationParameters:null,symbolMetrics:null,initialize:function(containerID){if(!this.supported()){return;}
-OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);this.translationParameters={x:0,y:0};this.symbolMetrics={};},supported:function(){var svgFeature="http://www.w3.org/TR/SVG11/feature#";return(document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature(svgFeature+"SVG","1.1")||document.implementation.hasFeature(svgFeature+"BasicStructure","1.1")));},inValidRange:function(x,y,xyOnly){var left=x+(xyOnly?0:this.translationParameters.x);var top=y+(xyOnly?0:this.translationParameters.y);return(left>=-this.MAX_PIXEL&&left<=this.MAX_PIXEL&&top>=-this.MAX_PIXEL&&top<=this.MAX_PIXEL);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=-extent.left/resolution;var top=extent.top/resolution;if(resolutionChanged){this.left=left;this.top=top;var extentString="0 0 "+this.size.w+" "+this.size.h;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);this.translate(0,0);return true;}else{var inRange=this.translate(left-this.left,top-this.top);if(!inRange){this.setExtent(extent,true);}
-return inRange;}},translate:function(x,y){if(!this.inValidRange(x,y,true)){return false;}else{var transformString="";if(x||y){transformString="translate("+x+","+y+")";}
-this.root.setAttributeNS(null,"transform",transformString);this.translationParameters={x:x,y:y};return true;}},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":if(style.externalGraphic){nodeType="image";}else if(this.isComplexSymbol(style.graphicName)){nodeType="svg";}else{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;var r=parseFloat(node.getAttributeNS(null,"r"));var widthFactor=1;var pos;if(node._geometryClass=="OpenLayers.Geometry.Point"&&r){node.style.visibility="";if(style.graphic===false){node.style.visibility="hidden";}else if(style.externalGraphic){pos=this.getPosition(node);if(style.graphicTitle){node.setAttributeNS(null,"title",style.graphicTitle);var label=this.nodeFactory(null,"title");label.textContent=style.graphicTitle;node.appendChild(label);}
-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",(pos.x+xOffset).toFixed());node.setAttributeNS(null,"y",(pos.y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS(this.xlinkns,"href",style.externalGraphic);node.setAttributeNS(null,"style","opacity: "+opacity);node.onclick=OpenLayers.Renderer.SVG.preventDefault;}else if(this.isComplexSymbol(style.graphicName)){var offset=style.pointRadius*3;var size=offset*2;var src=this.importSymbol(style.graphicName);pos=this.getPosition(node);widthFactor=this.symbolMetrics[src.id][0]*3/size;var parent=node.parentNode;var nextSibling=node.nextSibling;if(parent){parent.removeChild(node);}
-node.firstChild&&node.removeChild(node.firstChild);node.appendChild(src.firstChild.cloneNode(true));node.setAttributeNS(null,"viewBox",src.getAttributeNS(null,"viewBox"));node.setAttributeNS(null,"width",size);node.setAttributeNS(null,"height",size);node.setAttributeNS(null,"x",pos.x-offset);node.setAttributeNS(null,"y",pos.y-offset);if(nextSibling){parent.insertBefore(node,nextSibling);}else if(parent){parent.appendChild(node);}}else{node.setAttributeNS(null,"r",style.pointRadius);}
-var rotation=style.rotation;if((rotation!==undefined||node._rotation!==undefined)&&pos){node._rotation=rotation;rotation|=0;if(node.nodeName!=="svg"){node.setAttributeNS(null,"transform","rotate("+rotation+" "+pos.x+" "+
-pos.y+")");}else{var metrics=this.symbolMetrics[src.id];node.firstChild.setAttributeNS(null,"transform","rotate("
-+rotation+" "
-+metrics[1]+" "
-+metrics[2]+")");}}}
-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*widthFactor);node.setAttributeNS(null,"stroke-linecap",style.strokeLinecap||"round");node.setAttributeNS(null,"stroke-linejoin","round");style.strokeDashstyle&&node.setAttributeNS(null,"stroke-dasharray",this.dashStyle(style,widthFactor));}else{node.setAttributeNS(null,"stroke","none");}
-if(style.pointerEvents){node.setAttributeNS(null,"pointer-events",style.pointerEvents);}
-if(style.cursor!=null){node.setAttributeNS(null,"cursor",style.cursor);}
-return node;},dashStyle:function(style,widthFactor){var w=style.strokeWidth*widthFactor;var str=style.strokeDashstyle;switch(str){case'solid':return'none';case'dot':return[1,4*w].join();case'dash':return[4*w,4*w].join();case'dashdot':return[4*w,4*w,1,4*w].join();case'longdash':return[8*w,4*w].join();case'longdashdot':return[8*w,4*w,1,4*w].join();default:return OpenLayers.String.trim(str).replace(/\s+/g,",");}},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(){return this.nodeFactory(this.container.id+"_svgRoot","svg");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"g");},createDefs:function(){var defs=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(defs);return defs;},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(this.top-geometry.y/resolution);if(this.inValidRange(x,y)){node.setAttributeNS(null,"cx",x);node.setAttributeNS(null,"cy",y);node.setAttributeNS(null,"r",radius);return node;}else{return false;}},drawLineString:function(node,geometry){var componentsResult=this.getComponentsString(geometry.components);if(componentsResult.path){node.setAttributeNS(null,"points",componentsResult.path);return(componentsResult.complete?node:null);}else{return false;}},drawLinearRing:function(node,geometry){var componentsResult=this.getComponentsString(geometry.components);if(componentsResult.path){node.setAttributeNS(null,"points",componentsResult.path);return(componentsResult.complete?node:null);}else{return false;}},drawPolygon:function(node,geometry){var d="";var draw=true;var complete=true;var linearRingResult,path;for(var j=0,len=geometry.components.length;j<len;j++){d+=" M";linearRingResult=this.getComponentsString(geometry.components[j].components," ");path=linearRingResult.path;if(path){d+=" "+path;complete=linearRingResult.complete&&complete;}else{draw=false;}}
-d+=" z";if(draw){node.setAttributeNS(null,"d",d);node.setAttributeNS(null,"fill-rule","evenodd");return complete?node:null;}else{return false;}},drawRectangle:function(node,geometry){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(this.top-geometry.y/resolution);if(this.inValidRange(x,y)){node.setAttributeNS(null,"x",x);node.setAttributeNS(null,"y",y);node.setAttributeNS(null,"width",geometry.width/resolution);node.setAttributeNS(null,"height",geometry.height/resolution);return node;}else{return false;}},drawSurface:function(node,geometry){var d=null;var draw=true;for(var i=0,len=geometry.components.length;i<len;i++){if((i%3)==0&&(i/3)==0){var component=this.getShortString(geometry.components[i]);if(!component){draw=false;}
-d="M "+component;}else if((i%3)==1){var component=this.getShortString(geometry.components[i]);if(!component){draw=false;}
-d+=" C "+component;}else{var component=this.getShortString(geometry.components[i]);if(!component){draw=false;}
-d+=" "+component;}}
-d+=" Z";if(draw){node.setAttributeNS(null,"d",d);return node;}else{return false;}},drawText:function(featureId,style,location){var resolution=this.getResolution();var x=(location.x/resolution+this.left);var y=(location.y/resolution-this.top);var label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,"text");label.setAttributeNS(null,"x",x);label.setAttributeNS(null,"y",-y);if(style.fontColor){label.setAttributeNS(null,"fill",style.fontColor);}
-if(style.fontOpacity){label.setAttributeNS(null,"opacity",style.fontOpacity);}
-if(style.fontFamily){label.setAttributeNS(null,"font-family",style.fontFamily);}
-if(style.fontSize){label.setAttributeNS(null,"font-size",style.fontSize);}
-if(style.fontWeight){label.setAttributeNS(null,"font-weight",style.fontWeight);}
-if(style.fontStyle){label.setAttributeNS(null,"font-style",style.fontStyle);}
-if(style.labelSelect===true){label.setAttributeNS(null,"pointer-events","visible");label._featureId=featureId;}else{label.setAttributeNS(null,"pointer-events","none");}
-var align=style.labelAlign||"cm";label.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[align[0]]||"middle");if(OpenLayers.IS_GECKO===true){label.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[align[1]]||"central");}
-var labelRows=style.label.split('\n');var numRows=labelRows.length;while(label.childNodes.length>numRows){label.removeChild(label.lastChild);}
-for(var i=0;i<numRows;i++){var tspan=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_tspan_"+i,"tspan");if(style.labelSelect===true){tspan._featureId=featureId;tspan._geometry=location;tspan._geometryClass=location.CLASS_NAME;}
-if(OpenLayers.IS_GECKO===false){tspan.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[align[1]]||"-35%");}
-tspan.setAttribute("x",x);if(i==0){var vfactor=OpenLayers.Renderer.SVG.LABEL_VFACTOR[align[1]];if(vfactor==null){vfactor=-.5;}
-tspan.setAttribute("dy",(vfactor*(numRows-1))+"em");}else{tspan.setAttribute("dy","1em");}
-tspan.textContent=(labelRows[i]==='')?' ':labelRows[i];if(!tspan.parentNode){label.appendChild(tspan);}}
-if(!label.parentNode){this.textRoot.appendChild(label);}},getComponentsString:function(components,separator){var renderCmp=[];var complete=true;var len=components.length;var strings=[];var str,component;for(var i=0;i<len;i++){component=components[i];renderCmp.push(component);str=this.getShortString(component);if(str){strings.push(str);}else{if(i>0){if(this.getShortString(components[i-1])){strings.push(this.clipLine(components[i],components[i-1]));}}
-if(i<len-1){if(this.getShortString(components[i+1])){strings.push(this.clipLine(components[i],components[i+1]));}}
-complete=false;}}
-return{path:strings.join(separator||","),complete:complete};},clipLine:function(badComponent,goodComponent){if(goodComponent.equals(badComponent)){return"";}
-var resolution=this.getResolution();var maxX=this.MAX_PIXEL-this.translationParameters.x;var maxY=this.MAX_PIXEL-this.translationParameters.y;var x1=goodComponent.x/resolution+this.left;var y1=this.top-goodComponent.y/resolution;var x2=badComponent.x/resolution+this.left;var y2=this.top-badComponent.y/resolution;var k;if(x2<-maxX||x2>maxX){k=(y2-y1)/(x2-x1);x2=x2<0?-maxX:maxX;y2=y1+(x2-x1)*k;}
-if(y2<-maxY||y2>maxY){k=(x2-x1)/(y2-y1);y2=y2<0?-maxY:maxY;x2=x1+(y2-y1)*k;}
-return x2+","+y2;},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;}},getPosition:function(node){return({x:parseFloat(node.getAttributeNS(null,"cx")),y:parseFloat(node.getAttributeNS(null,"cy"))});},importSymbol:function(graphicName){if(!this.defs){this.defs=this.createDefs();}
-var id=this.container.id+"-"+graphicName;var existing=document.getElementById(id)
-if(existing!=null){return existing;}
-var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');}
-var symbolNode=this.nodeFactory(id,"symbol");var node=this.nodeFactory(null,"polygon");symbolNode.appendChild(node);var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var points=[];var x,y;for(var i=0;i<symbol.length;i=i+2){x=symbol[i];y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);points.push(x,",",y);}
-node.setAttributeNS(null,"points",points.join(" "));var width=symbolExtent.getWidth();var height=symbolExtent.getHeight();var viewBox=[symbolExtent.left-width,symbolExtent.bottom-height,width*3,height*3];symbolNode.setAttributeNS(null,"viewBox",viewBox.join(" "));this.symbolMetrics[id]=[Math.max(width,height),symbolExtent.getCenterLonLat().lon,symbolExtent.getCenterLonLat().lat];this.defs.appendChild(symbolNode);return symbolNode;},getFeatureIdFromEvent:function(evt){var featureId=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);if(!featureId){var target=evt.target;featureId=target.parentNode&&target!=this.rendererRoot&&target.parentNode._featureId;}
-return featureId;},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={"l":"start","r":"end","b":"bottom","t":"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={"t":"-70%","b":"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={"t":0,"b":-1};OpenLayers.Renderer.SVG.preventDefault=function(e){e.preventDefault&&e.preventDefault();};OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,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(){this.removeButtons();this.buttons=null;this.position=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},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(this.id+"_"+id,xy,sz,imgLocation,"absolute");btn.style.cursor="pointer";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;if(!this.slideRatio){var slideFactorPixels=this.slideFactor;var getSlideFactor=function(){return slideFactorPixels;};}else{var slideRatio=this.slideRatio;var getSlideFactor=function(dim){return this.map.getSize()[dim]*slideRatio;};}
-btn.getSlideFactor=getSlideFactor;this.buttons.push(btn);return btn;},_removeButton:function(btn){OpenLayers.Event.stopObservingElement(btn);btn.map=null;btn.getSlideFactor=null;this.div.removeChild(btn);OpenLayers.Util.removeItem(this.buttons,btn);},removeButtons:function(){for(var i=this.buttons.length-1;i>=0;--i){this._removeButton(this.buttons[i]);}},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.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;}
-OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:false,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:false,fixPadding:function(){if(typeof this.padding=="number"){this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding);}},panMapIfOutOfView:false,keepInMap:false,closeOnMove:false,map:null,initialize:function(id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback){if(id==null){id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}
-this.id=id;this.lonlat=lonlat;this.contentSize=(contentSize!=null)?contentSize:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);if(contentHTML!=null){this.contentHTML=contentHTML;}
-this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;var groupDivId=this.id+"_GroupDiv";this.groupDiv=OpenLayers.Util.createDiv(groupDivId,null,null,null,"relative",null,"hidden");var id=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(id,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);if(closeBox){this.addCloseBox(closeBoxCallback);}
-this.registerEvents();},destroy:function(){this.id=null;this.lonlat=null;this.size=null;this.contentHTML=null;this.backgroundColor=null;this.opacity=null;this.border=null;if(this.closeOnMove&&this.map){this.map.events.unregister("movestart",this,this.hide);}
-this.events.destroy();this.events=null;if(this.closeDiv){OpenLayers.Event.stopObservingElement(this.closeDiv);this.groupDiv.removeChild(this.closeDiv);}
-this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;if(this.map!=null){this.map.removePopup(this);}
-this.map=null;this.div=null;this.autoSize=null;this.minSize=null;this.maxSize=null;this.padding=null;this.panMapIfOutOfView=null;},draw:function(px){if(px==null){if((this.lonlat!=null)&&(this.map!=null)){px=this.map.getLayerPxFromLonLat(this.lonlat);}}
-if(this.closeOnMove){this.map.events.register("movestart",this,this.hide);}
-if(!this.disableFirefoxOverflowHack&&OpenLayers.BROWSER_NAME=='firefox'){this.map.events.register("movestart",this,function(){var style=document.defaultView.getComputedStyle(this.contentDiv,null);var currentOverflow=style.getPropertyValue("overflow");if(currentOverflow!="hidden"){this.contentDiv._oldOverflow=currentOverflow;this.contentDiv.style.overflow="hidden";}});this.map.events.register("moveend",this,function(){var oldOverflow=this.contentDiv._oldOverflow;if(oldOverflow){this.contentDiv.style.overflow=oldOverflow;this.contentDiv._oldOverflow=null;}});}
-this.moveTo(px);if(!this.autoSize&&!this.size){this.setSize(this.contentSize);}
-this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();if(this.panMapIfOutOfView){this.panIntoView();}
-return this.div;},updatePosition:function(){if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);if(px){this.moveTo(px);}}},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},visible:function(){return OpenLayers.Element.visible(this.div);},toggle:function(){if(this.visible()){this.hide();}else{this.show();}},show:function(){this.div.style.display='';if(this.panMapIfOutOfView){this.panIntoView();}},hide:function(){this.div.style.display='none';},setSize:function(contentSize){this.size=contentSize.clone();var contentDivPadding=this.getContentDivPadding();var wPadding=contentDivPadding.left+contentDivPadding.right;var hPadding=contentDivPadding.top+contentDivPadding.bottom;this.fixPadding();wPadding+=this.padding.left+this.padding.right;hPadding+=this.padding.top+this.padding.bottom;if(this.closeDiv){var closeDivWidth=parseInt(this.closeDiv.style.width);wPadding+=closeDivWidth+contentDivPadding.right;}
-this.size.w+=wPadding;this.size.h+=hPadding;if(OpenLayers.BROWSER_NAME=="msie"){this.contentSize.w+=contentDivPadding.left+contentDivPadding.right;this.contentSize.h+=contentDivPadding.bottom+contentDivPadding.top;}
-if(this.div!=null){this.div.style.width=this.size.w+"px";this.div.style.height=this.size.h+"px";}
-if(this.contentDiv!=null){this.contentDiv.style.width=contentSize.w+"px";this.contentDiv.style.height=contentSize.h+"px";}},updateSize:function(){var preparedHTML="<div class='"+this.contentDisplayClass+"'>"+
-this.contentDiv.innerHTML+"</div>";var containerElement=(this.map)?this.map.layerContainerDiv:document.body;var realSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,null,{displayClass:this.displayClass,containerElement:containerElement});var safeSize=this.getSafeContentSize(realSize);var newSize=null;if(safeSize.equals(realSize)){newSize=realSize;}else{var fixedSize=new OpenLayers.Size();fixedSize.w=(safeSize.w<realSize.w)?safeSize.w:null;fixedSize.h=(safeSize.h<realSize.h)?safeSize.h:null;if(fixedSize.w&&fixedSize.h){newSize=safeSize;}else{var clippedSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,fixedSize,{displayClass:this.contentDisplayClass,containerElement:containerElement});var currentOverflow=OpenLayers.Element.getStyle(this.contentDiv,"overflow");if((currentOverflow!="hidden")&&(clippedSize.equals(safeSize))){var scrollBar=OpenLayers.Util.getScrollbarWidth();if(fixedSize.w){clippedSize.h+=scrollBar;}else{clippedSize.w+=scrollBar;}}
-newSize=this.getSafeContentSize(clippedSize);}}
-this.setSize(newSize);},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;}
-if(this.div!=null){this.div.style.backgroundColor=this.backgroundColor;}},setOpacity:function(opacity){if(opacity!=undefined){this.opacity=opacity;}
-if(this.div!=null){this.div.style.opacity=this.opacity;this.div.style.filter='alpha(opacity='+this.opacity*100+')';}},setBorder:function(border){if(border!=undefined){this.border=border;}
-if(this.div!=null){this.div.style.border=this.border;}},setContentHTML:function(contentHTML){if(contentHTML!=null){this.contentHTML=contentHTML;}
-if((this.contentDiv!=null)&&(this.contentHTML!=null)&&(this.contentHTML!=this.contentDiv.innerHTML)){this.contentDiv.innerHTML=this.contentHTML;if(this.autoSize){this.registerImageListeners();this.updateSize();}}},registerImageListeners:function(){var onImgLoad=function(){this.popup.updateSize();if(this.popup.visible()&&this.popup.panMapIfOutOfView){this.popup.panIntoView();}
-OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad);};var images=this.contentDiv.getElementsByTagName("img");for(var i=0,len=images.length;i<len;i++){var img=images[i];if(img.width==0||img.height==0){var context={'popup':this,'img':img};img._onImgLoad=OpenLayers.Function.bind(onImgLoad,context);OpenLayers.Event.observe(img,'load',img._onImgLoad);}}},getSafeContentSize:function(size){var safeContentSize=size.clone();var contentDivPadding=this.getContentDivPadding();var wPadding=contentDivPadding.left+contentDivPadding.right;var hPadding=contentDivPadding.top+contentDivPadding.bottom;this.fixPadding();wPadding+=this.padding.left+this.padding.right;hPadding+=this.padding.top+this.padding.bottom;if(this.closeDiv){var closeDivWidth=parseInt(this.closeDiv.style.width);wPadding+=closeDivWidth+contentDivPadding.right;}
-if(this.minSize){safeContentSize.w=Math.max(safeContentSize.w,(this.minSize.w-wPadding));safeContentSize.h=Math.max(safeContentSize.h,(this.minSize.h-hPadding));}
-if(this.maxSize){safeContentSize.w=Math.min(safeContentSize.w,(this.maxSize.w-wPadding));safeContentSize.h=Math.min(safeContentSize.h,(this.maxSize.h-hPadding));}
-if(this.map&&this.map.size){var extraX=0,extraY=0;if(this.keepInMap&&!this.panMapIfOutOfView){var px=this.map.getPixelFromLonLat(this.lonlat);switch(this.relativePosition){case"tr":extraX=px.x;extraY=this.map.size.h-px.y;break;case"tl":extraX=this.map.size.w-px.x;extraY=this.map.size.h-px.y;break;case"bl":extraX=this.map.size.w-px.x;extraY=px.y;break;case"br":extraX=px.x;extraY=px.y;break;default:extraX=px.x;extraY=this.map.size.h-px.y;break;}}
-var maxY=this.map.size.h-
-this.map.paddingForPopups.top-
-this.map.paddingForPopups.bottom-
-hPadding-extraY;var maxX=this.map.size.w-
-this.map.paddingForPopups.left-
-this.map.paddingForPopups.right-
-wPadding-extraX;safeContentSize.w=Math.min(safeContentSize.w,maxX);safeContentSize.h=Math.min(safeContentSize.h,maxY);}
-return safeContentSize;},getContentDivPadding:function(){var contentDivPadding=this._contentDivPadding;if(!contentDivPadding){if(this.div.parentNode==null){this.div.style.display="none";document.body.appendChild(this.div);}
-contentDivPadding=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,"padding-top"));this._contentDivPadding=contentDivPadding;if(this.div.parentNode==document.body){document.body.removeChild(this.div);this.div.style.display="";}}
-return contentDivPadding;},addCloseBox:function(callback){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,new OpenLayers.Size(17,17));this.closeDiv.className="olPopupCloseBox";var contentDivPadding=this.getContentDivPadding();this.closeDiv.style.right=contentDivPadding.right+"px";this.closeDiv.style.top=contentDivPadding.top+"px";this.groupDiv.appendChild(this.closeDiv);var closePopup=callback||function(e){this.hide();OpenLayers.Event.stop(e);};OpenLayers.Event.observe(this.closeDiv,"touchend",OpenLayers.Function.bindAsEventListener(closePopup,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(closePopup,this));},panIntoView:function(){var mapSize=this.map.getSize();var origTL=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top)));var newTL=origTL.clone();if(origTL.x<this.map.paddingForPopups.left){newTL.x=this.map.paddingForPopups.left;}else
-if((origTL.x+this.size.w)>(mapSize.w-this.map.paddingForPopups.right)){newTL.x=mapSize.w-this.map.paddingForPopups.right-this.size.w;}
-if(origTL.y<this.map.paddingForPopups.top){newTL.y=this.map.paddingForPopups.top;}else
-if((origTL.y+this.size.h)>(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);function onTouchstart(evt){OpenLayers.Event.stop(evt,true);}
-this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,"touchstart":onTouchstart,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.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:true,anchor:null,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=[id,lonlat,contentSize,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(contentSize){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 size=this.size||this.contentSize;var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:false,positionBlocks:null,blocks:null,fixedRelativePosition:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);if(this.fixedRelativePosition){this.updateRelativePosition();this.calculateRelativePosition=function(px){return this.relativePosition;};}
-this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;if(closeBox){this.closeDiv.style.zIndex=1;}
-this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%";},destroy:function(){this.imageSrc=null;this.imageSize=null;this.isAlphaImage=null;this.fixedRelativePosition=false;this.positionBlocks=null;for(var i=0;i<this.blocks.length;i++){var block=this.blocks[i];if(block.image){block.div.removeChild(block.image);}
-block.image=null;if(block.div){this.groupDiv.removeChild(block.div);}
-block.div=null;}
-this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,arguments);},setBackgroundColor:function(color){},setBorder:function(){},setOpacity:function(opacity){},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks();},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var contentDivPadding=this.getContentDivPadding();this.closeDiv.style.right=contentDivPadding.right+
-this.padding.right+"px";this.closeDiv.style.top=contentDivPadding.top+
-this.padding.top+"px";}
-this.updateBlocks();},calculateNewPx:function(px){var newPx=OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);newPx=newPx.offset(this.positionBlocks[this.relativePosition].offset);return newPx;},createBlocks:function(){this.blocks=[];var firstPosition=null;for(var key in this.positionBlocks){firstPosition=key;break;}
-var position=this.positionBlocks[firstPosition];for(var i=0;i<position.blocks.length;i++){var block={};this.blocks.push(block);var divId=this.id+'_FrameDecorationDiv_'+i;block.div=OpenLayers.Util.createDiv(divId,null,null,null,"absolute",null,"hidden",null);var imgId=this.id+'_FrameDecorationImg_'+i;var imageCreator=(this.isAlphaImage)?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage;block.image=imageCreator(imgId,null,this.imageSize,this.imageSrc,"absolute",null,null,null);block.div.appendChild(block.image);this.groupDiv.appendChild(block.div);}},updateBlocks:function(){if(!this.blocks){this.createBlocks();}
-if(this.size&&this.relativePosition){var position=this.positionBlocks[this.relativePosition];for(var i=0;i<position.blocks.length;i++){var positionBlock=position.blocks[i];var block=this.blocks[i];var l=positionBlock.anchor.left;var b=positionBlock.anchor.bottom;var r=positionBlock.anchor.right;var t=positionBlock.anchor.top;var w=(isNaN(positionBlock.size.w))?this.size.w-(r+l):positionBlock.size.w;var h=(isNaN(positionBlock.size.h))?this.size.h-(b+t):positionBlock.size.h;block.div.style.width=(w<0?0:w)+'px';block.div.style.height=(h<0?0:h)+'px';block.div.style.left=(l!=null)?l+'px':'';block.div.style.bottom=(b!=null)?b+'px':'';block.div.style.right=(r!=null)?r+'px':'';block.div.style.top=(t!=null)?t+'px':'';block.image.style.left=positionBlock.position.x+'px';block.image.style.top=positionBlock.position.y+'px';}
-this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px";}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var extent=null;if(this.sphericalMercator){extent=this.map.calculateBounds();}else{extent=OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this);}
-return extent;},getLonLatFromViewPortPx:function(viewPortPx){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments);},getViewPortPxFromLonLat:function(lonlat){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments);},initMercatorParameters:function(){this.RESOLUTIONS=[];var maxResolution=156543.03390625;for(var zoom=0;zoom<=this.MAX_ZOOM_LEVEL;++zoom){this.RESOLUTIONS[zoom]=maxResolution/Math.pow(2,zoom);}
-this.units="m";this.projection=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;}};(function(){var codes=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"];var add=OpenLayers.Projection.addTransform;var merc=OpenLayers.Layer.SphericalMercator;var same=OpenLayers.Projection.nullTransform;var i,len,code,other,j;for(i=0,len=codes.length;i<len;++i){code=codes[i];add("EPSG:4326",code,merc.projectForward);add(code,"EPSG:4326",merc.projectInverse);for(j=i+1;j<len;++j){other=codes[j];add(code,other,same);add(other,code,same);}}})();OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:true,panMapIfOutOfView:true,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:false,fixedRelativePosition:false,positionBlocks:{"tl":{'offset':new OpenLayers.Pixel(44,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},"tr":{'offset':new OpenLayers.Pixel(-45,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},"bl":{'offset':new OpenLayers.Pixel(45,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},"br":{'offset':new OpenLayers.Pixel(-44,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.imageSrc=OpenLayers.Util.getImagesLocation()+'cloud-popup-relative.png';OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass;},destroy:function(){OpenLayers.Popup.Framed.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:false,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(options){this.symbolizer={};OpenLayers.Util.extend(this,options);if(this.symbolizers){delete this.symbolizer;}
-this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i in this.symbolizer){this.symbolizer[i]=null;}
-this.symbolizer=null;delete this.symbolizers;},evaluate:function(feature){var context=this.getContext(feature);var applies=true;if(this.minScaleDenominator||this.maxScaleDenominator){var scale=feature.layer.map.getScale();}
-if(this.minScaleDenominator){applies=scale>=OpenLayers.Style.createLiteral(this.minScaleDenominator,context);}
-if(applies&&this.maxScaleDenominator){applies=scale<OpenLayers.Style.createLiteral(this.maxScaleDenominator,context);}
-if(applies&&this.filter){if(this.filter.CLASS_NAME=="OpenLayers.Filter.FeatureId"){applies=this.filter.evaluate(feature);}else{applies=this.filter.evaluate(context);}}
-return applies;},getContext:function(feature){var context=this.context;if(!context){context=feature.attributes||feature.data;}
-if(typeof this.context=="function"){context=this.context(feature);}
-return context;},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.symbolizers){var len=this.symbolizers.length;options.symbolizers=new Array(len);for(var i=0;i<len;++i){options.symbolizers[i]=this.symbolizers[i].clone();}}else{options.symbolizer={};var value,type;for(var key in this.symbolizer){value=this.symbolizer[key];type=typeof value;if(type==="object"){options.symbolizer[key]=OpenLayers.Util.extend({},value);}else if(type==="string"){options.symbolizer[key]=value;}}}
-options.filter=this.filter&&this.filter.clone();options.context=this.context&&OpenLayers.Util.extend({},this.context);return new OpenLayers.Rule(options);},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:false,pinching:false,last:null,start:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){var propagate=true;this.pinching=false;if(OpenLayers.Event.isMultiTouch(evt)){this.started=true;this.last=this.start={distance:this.getDistance(evt.touches),delta:0,scale:1};this.callback("start",[evt,this.start]);propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;}
-OpenLayers.Event.stop(evt);return propagate;},touchmove:function(evt){if(this.started&&OpenLayers.Event.isMultiTouch(evt)){this.pinching=true;var current=this.getPinchData(evt);this.callback("move",[evt,current]);this.last=current;OpenLayers.Event.stop(evt);}
-return true;},touchend:function(evt){if(this.started){this.started=false;this.pinching=false;this.callback("done",[evt,this.start,this.last]);this.start=null;this.last=null;}
-return true;},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.pinching=false;activated=true;}
-return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.pinching=false;this.start=null;this.last=null;deactivated=true;}
-return deactivated;},getDistance:function(touches){var t0=touches[0];var t1=touches[1];return Math.sqrt(Math.pow(t0.clientX-t1.clientX,2)+
-Math.pow(t0.clientY-t1.clientY,2));},getPinchData:function(evt){var distance=this.getDistance(evt.touches);var scale=distance/this.start.distance;return{distance:distance,delta:this.last.distance-distance,scale:scale};},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:true,lowerBoundary:null,upperBoundary:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);if(this.type===OpenLayers.Filter.Comparison.LIKE&&options.matchCase===undefined){this.matchCase=null;}},evaluate:function(context){if(context instanceof OpenLayers.Feature.Vector){context=context.attributes;}
-var result=false;var got=context[this.property];var exp;switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:exp=this.value;if(!this.matchCase&&typeof got=="string"&&typeof exp=="string"){result=(got.toUpperCase()==exp.toUpperCase());}else{result=(got==exp);}
-break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:exp=this.value;if(!this.matchCase&&typeof got=="string"&&typeof exp=="string"){result=(got.toUpperCase()!=exp.toUpperCase());}else{result=(got!=exp);}
-break;case OpenLayers.Filter.Comparison.LESS_THAN:result=got<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:result=got>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:result=got<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:result=got>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:result=(got>=this.lowerBoundary)&&(got<=this.upperBoundary);break;case OpenLayers.Filter.Comparison.LIKE:var regexp=new RegExp(this.value,"gi");result=regexp.test(got);break;}
-return result;},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"),"\\$1");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;},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison(),this);},CLASS_NAME:"OpenLayers.Filter.Comparison"});OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Format.QueryStringFilter=(function(){var cmpToStr={};cmpToStr[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";cmpToStr[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";cmpToStr[OpenLayers.Filter.Comparison.LESS_THAN]="lt";cmpToStr[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";cmpToStr[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";cmpToStr[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";cmpToStr[OpenLayers.Filter.Comparison.LIKE]="ilike";function regex2value(value){value=value.replace(/%/g,"\\%");value=value.replace(/\\\\\.(\*)?/g,function($0,$1){return $1?$0:"\\\\_";});value=value.replace(/\\\\\.\*/g,"\\\\%");value=value.replace(/(\\)?\.(\*)?/g,function($0,$1,$2){return $1||$2?$0:"_";});value=value.replace(/(\\)?\.\*/g,function($0,$1){return $1?$0:"%";});value=value.replace(/\\\./g,".");value=value.replace(/(\\)?\\\*/g,function($0,$1){return $1?$0:"*";});return value;}
-return OpenLayers.Class(OpenLayers.Format,{wildcarded:false,srsInBBOX:false,write:function(filter,params){params=params||{};var className=filter.CLASS_NAME;var filterType=className.substring(className.lastIndexOf(".")+1);switch(filterType){case"Spatial":switch(filter.type){case OpenLayers.Filter.Spatial.BBOX:params.bbox=filter.value.toArray();if(this.srsInBBOX&&filter.projection){params.bbox.push(filter.projection.getCode());}
-break;case OpenLayers.Filter.Spatial.DWITHIN:params.tolerance=filter.distance;case OpenLayers.Filter.Spatial.WITHIN:params.lon=filter.value.x;params.lat=filter.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+filter.type);}
-break;case"Comparison":var op=cmpToStr[filter.type];if(op!==undefined){var value=filter.value;if(filter.type==OpenLayers.Filter.Comparison.LIKE){value=regex2value(value);if(this.wildcarded){value="%"+value+"%";}}
-params[filter.property+"__"+op]=value;params.queryable=params.queryable||[];params.queryable.push(filter.property);}else{OpenLayers.Console.warn("Unknown comparison filter type "+filter.type);}
-break;case"Logical":if(filter.type===OpenLayers.Filter.Logical.AND){for(var i=0,len=filter.filters.length;i<len;i++){params=this.write(filter.filters[i],params);}}else{OpenLayers.Console.warn("Unsupported logical filter type "+filter.type);}
-break;default:OpenLayers.Console.warn("Unknown filter type "+filterType);}
-return params;},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"});})();OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(containerID){if(!this.supported()){return;}
-if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);var style=document.createStyleSheet();var shapes=['shape','rect','oval','fill','stroke','imagedata','group','textbox'];for(var i=0,len=shapes.length;i<len;i++){style.addRule('olv\\:'+shapes[i],"behavior: url(#default#VML); "+"position: absolute; display: inline-block;");}}
-OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},supported:function(){return!!(document.namespaces);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=(extent.left/resolution)|0;var top=(extent.top/resolution-this.size.h)|0;if(resolutionChanged||!this.offset){this.offset={x:left,y:top};left=0;top=0;}else{left=left-this.offset.x;top=top-this.offset.y;}
-var org=left+" "+top;this.root.coordorigin=org;var roots=[this.root,this.vectorRoot,this.textRoot];var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];var size=this.size.w+" "+this.size.h;root.coordsize=size;}
-this.root.style.flip="y";return true;},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);var roots=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot];var w=this.size.w+"px";var h=this.size.h+"px";var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];root.style.width=w;root.style.height=h;}},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="olv:rect";}else if(this.isComplexSymbol(style.graphicName)){nodeType="olv:shape";}else{nodeType="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;var fillColor=style.fillColor;if(node._geometryClass==="OpenLayers.Geometry.Point"){if(style.externalGraphic){options.isFilled=true;if(style.graphicTitle){node.title=style.graphicTitle;}
-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-this.offset.x)+xOffset)|0)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)-(yOffset+height))|0)+"px";node.style.width=width+"px";node.style.height=height+"px";node.style.flip="y";fillColor="none";options.isStroked=false;}else if(this.isComplexSymbol(style.graphicName)){var cache=this.importSymbol(style.graphicName);node.path=cache.path;node.coordorigin=cache.left+","+cache.bottom;var size=cache.size;node.coordsize=size+","+size;this.drawCircle(node,geometry,style.pointRadius);node.style.flip="y";}else{this.drawCircle(node,geometry,style.pointRadius);}}
-if(options.isFilled){node.fillcolor=fillColor;}else{node.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.opacity=style.fillOpacity;if(node._geometryClass==="OpenLayers.Geometry.Point"&&style.externalGraphic){if(style.graphicOpacity){fill.opacity=style.graphicOpacity;}
-fill.src=style.externalGraphic;fill.type="frame";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";}}
-if(fill.parentNode!=node){node.appendChild(fill);}}
-var rotation=style.rotation;if((rotation!==undefined||node._rotation!==undefined)){node._rotation=rotation;if(style.externalGraphic){this.graphicRotate(node,xOffset,yOffset,style);fill.opacity=0;}else if(node._geometryClass==="OpenLayers.Geometry.Point"){node.style.rotation=rotation||0;}}
-var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){node.stroked=false;if(stroke){stroke.on=false;}}else{if(!stroke){stroke=this.createNode('olv:stroke',node.id+"_stroke");node.appendChild(stroke);}
-stroke.on=true;stroke.color=style.strokeColor;stroke.weight=style.strokeWidth+"px";stroke.opacity=style.strokeOpacity;stroke.endcap=style.strokeLinecap=='butt'?'flat':(style.strokeLinecap||'round');if(style.strokeDashstyle){stroke.dashstyle=this.dashStyle(style);}}
-if(style.cursor!="inherit"&&style.cursor!=null){node.style.cursor=style.cursor;}
-return node;},graphicRotate:function(node,xOffset,yOffset,style){var style=style||node._style;var rotation=style.rotation||0;var aspectRatio,size;if(!(style.graphicWidth&&style.graphicHeight)){var img=new Image();img.onreadystatechange=OpenLayers.Function.bind(function(){if(img.readyState=="complete"||img.readyState=="interactive"){aspectRatio=img.width/img.height;size=Math.max(style.pointRadius*2,style.graphicWidth||0,style.graphicHeight||0);xOffset=xOffset*aspectRatio;style.graphicWidth=size*aspectRatio;style.graphicHeight=size;this.graphicRotate(node,xOffset,yOffset,style);}},this);img.src=style.externalGraphic;return;}else{size=Math.max(style.graphicWidth,style.graphicHeight);aspectRatio=style.graphicWidth/style.graphicHeight;}
-var width=Math.round(style.graphicWidth||size*aspectRatio);var height=Math.round(style.graphicHeight||size);node.style.width=width+"px";node.style.height=height+"px";var image=document.getElementById(node.id+"_image");if(!image){image=this.createNode("olv:imagedata",node.id+"_image");node.appendChild(image);}
-image.style.width=width+"px";image.style.height=height+"px";image.src=style.externalGraphic;image.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader("+"src='', sizingMethod='scale')";var rot=rotation*Math.PI/180;var sintheta=Math.sin(rot);var costheta=Math.cos(rot);var filter="progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')\n";var opacity=style.graphicOpacity||style.fillOpacity;if(opacity&&opacity!=1){filter+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+
-opacity+")\n";}
-node.style.filter=filter;var centerPoint=new OpenLayers.Geometry.Point(-xOffset,-yOffset);var imgBox=new OpenLayers.Bounds(0,0,width,height).toGeometry();imgBox.rotate(style.rotation,centerPoint);var imgBounds=imgBox.getBounds();node.style.left=Math.round(parseInt(node.style.left)+imgBounds.left)+"px";node.style.top=Math.round(parseInt(node.style.top)-imgBounds.bottom)+"px";},postDraw:function(node){node.style.visibility="visible";var fillColor=node._style.fillColor;var strokeColor=node._style.strokeColor;if(fillColor=="none"&&node.fillcolor!=fillColor){node.fillcolor=fillColor;}
-if(strokeColor=="none"&&node.strokecolor!=strokeColor){node.strokecolor=strokeColor;}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution-this.offset.x)|0,(bbox.bottom/resolution-this.offset.y)|0,(bbox.right/resolution-this.offset.x)|0,(bbox.top/resolution-this.offset.y)|0);node.style.left=scaledBox.left+"px";node.style.top=scaledBox.top+"px";node.style.width=scaledBox.getWidth()+"px";node.style.height=scaledBox.getHeight()+"px";node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},dashStyle:function(style){var dash=style.strokeDashstyle;switch(dash){case'solid':case'dot':case'dash':case'dashdot':case'longdash':case'longdashdot':return dash;default:var parts=dash.split(/[ ,]/);if(parts.length==2){if(1*parts[0]>=2*parts[1]){return"longdash";}
-return(parts[0]==1||parts[1]==1)?"dot":"dash";}else if(parts.length==4){return(1*parts[0]>=2*parts[1])?"longdashdot":"dashdot";}
-return"solid";}},createNode:function(type,id){var node=document.createElement(type);if(id){node.id=id;}
-node.unselectable='on';node.onselectstart=OpenLayers.Function.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(){return this.nodeFactory(this.container.id+"_vmlRoot","div");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"olv:group");},drawPoint:function(node,geometry){return 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-this.offset.x)|0)-radius)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)|0)-radius)+"px";var diameter=radius*2;node.style.width=diameter+"px";node.style.height=diameter+"px";return node;}
-return false;},drawLineString:function(node,geometry){return this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){return this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var numComponents=geometry.components.length;var parts=new Array(numComponents);var comp,x,y;for(var i=0;i<numComponents;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;parts[i]=" "+x+","+y+" l ";}
-var end=(closeLine)?" x e":" e";node.path="m"+parts.join("")+end;return node;},drawPolygon:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var j,jj,points,area,first,second,i,ii,comp,pathComp,x,y;for(j=0,jj=geometry.components.length;j<jj;j++){path.push("m");points=geometry.components[j].components;area=(j===0);first=null;second=null;for(i=0,ii=points.length;i<ii;i++){comp=points[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;pathComp=" "+x+","+y;path.push(pathComp);if(i==0){path.push(" l");}
-if(!area){if(!first){first=pathComp;}else if(first!=pathComp){if(!second){second=pathComp;}else if(second!=pathComp){area=true;}}}}
-path.push(area?" x ":" ");}
-path.push("e");node.path=path.join("");return node;},drawRectangle:function(node,geometry){var resolution=this.getResolution();node.style.left=((geometry.x/resolution-this.offset.x)|0)+"px";node.style.top=((geometry.y/resolution-this.offset.y)|0)+"px";node.style.width=((geometry.width/resolution)|0)+"px";node.style.height=((geometry.height/resolution)|0)+"px";return node;},drawText:function(featureId,style,location){var label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,"olv:rect");var textbox=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox");var resolution=this.getResolution();label.style.left=((location.x/resolution-this.offset.x)|0)+"px";label.style.top=((location.y/resolution-this.offset.y)|0)+"px";label.style.flip="y";textbox.innerText=style.label;if(style.cursor!="inherit"&&style.cursor!=null){textbox.style.cursor=style.cursor;}
-if(style.fontColor){textbox.style.color=style.fontColor;}
-if(style.fontOpacity){textbox.style.filter='alpha(opacity='+(style.fontOpacity*100)+')';}
-if(style.fontFamily){textbox.style.fontFamily=style.fontFamily;}
-if(style.fontSize){textbox.style.fontSize=style.fontSize;}
-if(style.fontWeight){textbox.style.fontWeight=style.fontWeight;}
-if(style.fontStyle){textbox.style.fontStyle=style.fontStyle;}
-if(style.labelSelect===true){label._featureId=featureId;textbox._featureId=featureId;textbox._geometry=location;textbox._geometryClass=location.CLASS_NAME;}
-textbox.style.whiteSpace="nowrap";textbox.inset="1px,0px,0px,0px";if(!label.parentNode){label.appendChild(textbox);this.textRoot.appendChild(label);}
-var align=style.labelAlign||"cm";if(align.length==1){align+="m";}
-var xshift=textbox.clientWidth*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(0,1)]);var yshift=textbox.clientHeight*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(1,1)]);label.style.left=parseInt(label.style.left)-xshift-1+"px";label.style.top=parseInt(label.style.top)+yshift+"px";},drawSurface:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var comp,x,y;for(var i=0,len=geometry.components.length;i<len;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;if((i%3)==0&&(i/3)==0){path.push("m");}else if((i%3)==1){path.push(" c");}
-path.push(" "+x+","+y);}
-path.push(" x e");node.path=path.join("");return node;},moveRoot:function(renderer){var layer=this.map.getLayer(renderer.container.id);if(layer instanceof OpenLayers.Layer.Vector.RootContainer){layer=this.map.getLayer(this.container.id);}
-layer&&layer.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);layer&&layer.redraw();},importSymbol:function(graphicName){var id=this.container.id+"-"+graphicName;var cache=this.symbolCache[id];if(cache){return cache;}
-var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');}
-var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var pathitems=["m"];for(var i=0;i<symbol.length;i=i+2){var x=symbol[i];var y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);pathitems.push(x);pathitems.push(y);if(i==0){pathitems.push("l");}}
-pathitems.push("x e");var path=pathitems.join(" ");var diff=(symbolExtent.getWidth()-symbolExtent.getHeight())/2;if(diff>0){symbolExtent.bottom=symbolExtent.bottom-diff;symbolExtent.top=symbolExtent.top+diff;}else{symbolExtent.left=symbolExtent.left+diff;symbolExtent.right=symbolExtent.right-diff;}
-cache={path:path,size:symbolExtent.getWidth(),left:symbolExtent.left,bottom:symbolExtent.bottom};this.symbolCache[id]=cache;return cache;},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={"l":0,"c":.5,"r":1,"t":0,"m":.5,"b":1};OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:true,defaultFilter:null,initialize:function(options){options=options||{};OpenLayers.Util.extend(this,options);this.options=options;},mergeWithDefaultFilter:function(filter){var merged;if(filter&&this.defaultFilter){merged=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,filter]});}else{merged=filter||this.defaultFilter||undefined;}
-return merged;},destroy:function(){this.options=null;this.format=null;},read:function(options){options=options||{};options.filter=this.mergeWithDefaultFilter(options.filter);},create:function(){},update:function(){},"delete":function(){},commit:function(){},abort:function(response){},createCallback:function(method,response,options){return OpenLayers.Function.bind(function(){method.apply(this,[response,options]);},this);},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:true,features:null,reqFeatures:null,priv:null,error:null,initialize:function(options){OpenLayers.Util.extend(this,options);},success:function(){return this.code>0;},CLASS_NAME:"OpenLayers.Protocol.Response"});OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:false,wildcarded:false,srsInBBOX:false,initialize:function(options){options=options||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var format=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=function(filter,params){return format.write(filter,params);}}},destroy:function(){this.params=null;this.headers=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=options||{};options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);options=OpenLayers.Util.applyDefaults(options,this.options);if(options.filter&&this.filterToParams){options.params=this.filterToParams(options.filter,options.params);}
-var readWithPOST=(options.readWithPOST!==undefined)?options.readWithPOST:this.readWithPOST;var resp=new OpenLayers.Protocol.Response({requestType:"read"});if(readWithPOST){resp.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,resp,options),data:OpenLayers.Util.getParameterString(options.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}});}else{resp.priv=OpenLayers.Request.GET({url:options.url,callback:this.createCallback(this.handleRead,resp,options),params:options.params,headers:options.headers});}
-return resp;},handleRead:function(resp,options){this.handleResponse(resp,options);},create:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:features,requestType:"create"});resp.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleCreate,resp,options),headers:options.headers,data:this.format.write(features)});return resp;},handleCreate:function(resp,options){this.handleResponse(resp,options);},update:function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+"/"+feature.fid;options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:feature,requestType:"update"});resp.priv=OpenLayers.Request.PUT({url:url,callback:this.createCallback(this.handleUpdate,resp,options),headers:options.headers,data:this.format.write(feature)});return resp;},handleUpdate:function(resp,options){this.handleResponse(resp,options);},"delete":function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+"/"+feature.fid;options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:feature,requestType:"delete"});resp.priv=OpenLayers.Request.DELETE({url:url,callback:this.createCallback(this.handleDelete,resp,options),headers:options.headers});return resp;},handleDelete:function(resp,options){this.handleResponse(resp,options);},handleResponse:function(resp,options){var request=resp.priv;if(options.callback){if(request.status>=200&&request.status<300){if(resp.requestType!="delete"){resp.features=this.parseFeatures(request);}
-resp.code=OpenLayers.Protocol.Response.SUCCESS;}else{resp.code=OpenLayers.Protocol.Response.FAILURE;}
-options.callback.call(options.scope,resp);}},parseFeatures:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
-if(!doc||doc.length<=0){return null;}
-return this.format.read(doc);},commit:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=[],nResponses=0;var types={};types[OpenLayers.State.INSERT]=[];types[OpenLayers.State.UPDATE]=[];types[OpenLayers.State.DELETE]=[];var feature,list,requestFeatures=[];for(var i=0,len=features.length;i<len;++i){feature=features[i];list=types[feature.state];if(list){list.push(feature);requestFeatures.push(feature);}}
-var nRequests=(types[OpenLayers.State.INSERT].length>0?1:0)+
-types[OpenLayers.State.UPDATE].length+
-types[OpenLayers.State.DELETE].length;var success=true;var finalResponse=new OpenLayers.Protocol.Response({reqFeatures:requestFeatures});function insertCallback(response){var len=response.features?response.features.length:0;var fids=new Array(len);for(var i=0;i<len;++i){fids[i]=response.features[i].fid;}
-finalResponse.insertIds=fids;callback.apply(this,[response]);}
-function callback(response){this.callUserCallback(response,options);success=success&&response.success();nResponses++;if(nResponses>=nRequests){if(options.callback){finalResponse.code=success?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE;options.callback.apply(options.scope,[finalResponse]);}}}
-var queue=types[OpenLayers.State.INSERT];if(queue.length>0){resp.push(this.create(queue,OpenLayers.Util.applyDefaults({callback:insertCallback,scope:this},options.create)));}
-queue=types[OpenLayers.State.UPDATE];for(var i=queue.length-1;i>=0;--i){resp.push(this.update(queue[i],OpenLayers.Util.applyDefaults({callback:callback,scope:this},options.update)));}
-queue=types[OpenLayers.State.DELETE];for(var i=queue.length-1;i>=0;--i){resp.push(this["delete"](queue[i],OpenLayers.Util.applyDefaults({callback:callback,scope:this},options["delete"])));}
-return resp;},abort:function(response){if(response){response.priv.abort();}},callUserCallback:function(resp,options){var opt=options[resp.requestType];if(opt&&opt.callback){opt.callback.call(opt.scope,resp);}},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:false,nativeJSON:(function(){return!!(window.JSON&&typeof JSON.parse=="function"&&typeof JSON.stringify=="function");})(),read:function(json,filter){var object;if(this.nativeJSON){object=JSON.parse(json,filter);}else try{if(/^[\],:{}\s]*$/.test(json.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){object=eval('('+json+')');if(typeof filter==='function'){function walk(k,v){if(v&&typeof v==='object'){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}}
-return filter(k,v);}
-object=walk('',object);}}}catch(e){}
-if(this.keepData){this.data=object;}
-return object;},write:function(value,pretty){this.pretty=!!pretty;var json=null;var type=typeof value;if(this.serialize[type]){try{json=(!this.pretty&&this.nativeJSON)?JSON.stringify(value):this.serialize[type].apply(this,[value]);}catch(err){OpenLayers.Console.error("Trouble serializing: "+err);}}
-return json;},writeIndent:function(){var pieces=[];if(this.pretty){for(var i=0;i<this.level;++i){pieces.push(this.indent);}}
-return pieces.join('');},writeNewline:function(){return(this.pretty)?this.newline:'';},writeSpace:function(){return(this.pretty)?this.space:'';},serialize:{'object':function(object){if(object==null){return"null";}
-if(object.constructor==Date){return this.serialize.date.apply(this,[object]);}
-if(object.constructor==Array){return this.serialize.array.apply(this,[object]);}
-var pieces=['{'];this.level+=1;var key,keyJSON,valueJSON;var addComma=false;for(key in object){if(object.hasOwnProperty(key)){keyJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[key,this.pretty]);valueJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[object[key],this.pretty]);if(keyJSON!=null&&valueJSON!=null){if(addComma){pieces.push(',');}
-pieces.push(this.writeNewline(),this.writeIndent(),keyJSON,':',this.writeSpace(),valueJSON);addComma=true;}}}
-this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),'}');return pieces.join('');},'array':function(array){var json;var pieces=['['];this.level+=1;for(var i=0,len=array.length;i<len;++i){json=OpenLayers.Format.JSON.prototype.write.apply(this,[array[i],this.pretty]);if(json!=null){if(i>0){pieces.push(',');}
-pieces.push(this.writeNewline(),this.writeIndent(),json);}}
-this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),']');return pieces.join('');},'string':function(string){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};if(/["\\\x00-\x1f]/.test(string)){return'"'+string.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;}
-c=b.charCodeAt();return'\\u00'+
-Math.floor(c/16).toString(16)+
-(c%16).toString(16);})+'"';}
-return'"'+string+'"';},'number':function(number){return isFinite(number)?String(number):"null";},'boolean':function(bool){return String(bool);},'date':function(date){function format(number){return(number<10)?'0'+number:number;}
-return'"'+date.getFullYear()+'-'+
-format(date.getMonth()+1)+'-'+
-format(date.getDate())+'T'+
-format(date.getHours())+':'+
-format(date.getMinutes())+':'+
-format(date.getSeconds())+'"';}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(feature,pixel){},onDrag:function(feature,pixel){},onComplete:function(feature,pixel){},onEnter:function(feature){},onLeave:function(feature){},documentDrag:false,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})};},clickFeature:function(feature){if(this.handlers.feature.touch&&!this.over&&this.overFeature(feature)){this.handlers.drag.dragstart(this.handlers.feature.evt);this.handlers.drag.stopDown=false;}},clickoutFeature:function(feature){if(this.handlers.feature.touch&&this.over){this.outFeature(feature);this.handlers.drag.stopDown=true;}},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return(this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=false;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},overFeature:function(feature){var activated=false;if(!this.handlers.drag.dragging){this.feature=feature;this.handlers.drag.activate();activated=true;this.over=true;OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over");this.onEnter(feature);}else{if(this.feature.id==feature.id){this.over=true;}else{this.over=false;}}
-return activated;},downFeature:function(pixel){this.lastPixel=pixel;this.onStart(this.feature,pixel);},moveFeature:function(pixel){var res=this.map.getResolution();this.feature.geometry.move(res*(pixel.x-this.lastPixel.x),res*(this.lastPixel.y-pixel.y));this.layer.drawFeature(this.feature);this.lastPixel=pixel;this.onDrag(this.feature,pixel);},upFeature:function(pixel){if(!this.over){this.handlers.drag.deactivate();}},doneDragging:function(pixel){this.onComplete(this.feature,pixel);},outFeature:function(feature){if(!this.handlers.drag.dragging){this.over=false;this.handlers.drag.deactivate();OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");this.onLeave(feature);this.feature=null;}else{if(this.feature.id==feature.id){this.over=false;}}},cancel:function(){this.handlers.drag.deactivate();this.over=false;},setMap:function(map){this.handlers.drag.setMap(map);this.handlers.feature.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerOrigin:null,pinchOrigin:null,currentCenter:null,autoActivate:true,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions);},activate:function(){var activated=OpenLayers.Control.prototype.activate.apply(this,arguments);if(activated){this.map.events.on({moveend:this.updateContainerOrigin,scope:this});this.updateContainerOrigin();}
-return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.apply(this,arguments);if(this.map&&this.map.events){this.map.events.un({moveend:this.updateContainerOrigin,scope:this});}
-return deactivated;},updateContainerOrigin:function(){var container=this.map.layerContainerDiv;this.containerOrigin={x:parseInt(container.style.left,10),y:parseInt(container.style.top,10)};},pinchStart:function(evt,pinchData){this.pinchOrigin=evt.xy;this.currentCenter=evt.xy;},pinchMove:function(evt,pinchData){var scale=pinchData.scale;var containerOrigin=this.containerOrigin;var pinchOrigin=this.pinchOrigin;var current=evt.xy;var dx=Math.round((current.x-pinchOrigin.x)+(scale-1)*(containerOrigin.x-pinchOrigin.x));var dy=Math.round((current.y-pinchOrigin.y)+(scale-1)*(containerOrigin.y-pinchOrigin.y));this.applyTransform("translate("+dx+"px, "+dy+"px) scale("+scale+")");this.currentCenter=current;},applyTransform:function(transform){var style=this.map.layerContainerDiv.style;style['-webkit-transform']=transform;style['-moz-transform']=transform;},pinchDone:function(evt,start,last){this.applyTransform("");var zoom=this.map.getZoomForResolution(this.map.getResolution()/last.scale,true);if(zoom!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var resolution=this.map.getResolutionForZoom(zoom);var location=this.map.getLonLatFromPixel(this.pinchOrigin);var zoomPixel=this.currentCenter;var size=this.map.getSize();location.lon+=resolution*((size.w/2)-zoomPixel.x);location.lat-=resolution*((size.h/2)-zoomPixel.y);this.map.setCenter(location,zoom);}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});
+var OpenLayers={VERSION_NUMBER:"Release 2.13.1",singleFile:!0,_getScriptLocation:function(){return "/js/OpenLayers-2.13.1/"},ImgPath:""};OpenLayers.Class=function(){var a=arguments.length,b=arguments[0],c=arguments[a-1],d="function"==typeof c.initialize?c.initialize:function(){b.prototype.initialize.apply(this,arguments)};1<a?(a=[d,b].concat(Array.prototype.slice.call(arguments).slice(1,a-1),c),OpenLayers.inherit.apply(null,a)):d.prototype=c;return d};
+OpenLayers.inherit=function(a,b){var c=function(){};c.prototype=b.prototype;a.prototype=new c;var d,e,c=2;for(d=arguments.length;c<d;c++)e=arguments[c],"function"===typeof e&&(e=e.prototype),OpenLayers.Util.extend(a.prototype,e)};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(a,b){a=a||{};if(b){for(var c in b){var d=b[c];void 0!==d&&(a[c]=d)}"function"==typeof window.Event&&b instanceof window.Event||!b.hasOwnProperty||!b.hasOwnProperty("toString")||(a.toString=b.toString)}return a};OpenLayers.String={startsWith:function(a,b){return 0==a.indexOf(b)},contains:function(a,b){return-1!=a.indexOf(b)},trim:function(a){return a.replace(/^\s\s*/,"").replace(/\s\s*$/,"")},camelize:function(a){a=a.split("-");for(var b=a[0],c=1,d=a.length;c<d;c++)var e=a[c],b=b+(e.charAt(0).toUpperCase()+e.substring(1));return b},format:function(a,b,c){b||(b=window);return a.replace(OpenLayers.String.tokenRegEx,function(a,e){for(var f,g=e.split(/\.+/),h=0;h<g.length;h++){0==h&&(f=b);if(void 0===f)break;
+f=f[g[h]]}"function"==typeof f&&(f=c?f.apply(null,c):f());return"undefined"==typeof f?"undefined":f})},tokenRegEx:/\$\{([\w.]+?)\}/g,numberRegEx:/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,isNumeric:function(a){return OpenLayers.String.numberRegEx.test(a)},numericIf:function(a,b){var c=a;!0===b&&null!=a&&a.replace&&(a=a.replace(/^\s*|\s*$/g,""));return OpenLayers.String.isNumeric(a)?parseFloat(a):c}};
+OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,b){var c=0;0<b&&(c=parseFloat(a.toPrecision(b)));return c},format:function(a,b,c,d){b="undefined"!=typeof b?b:0;c="undefined"!=typeof c?c:OpenLayers.Number.thousandsSeparator;d="undefined"!=typeof d?d:OpenLayers.Number.decimalSeparator;null!=b&&(a=parseFloat(a.toFixed(b)));var e=a.toString().split(".");1==e.length&&null==b&&(b=0);a=e[0];if(c)for(var f=/(-?[0-9]+)([0-9]{3})/;f.test(a);)a=a.replace(f,"$1"+c+"$2");
+0==b?b=a:(c=1<e.length?e[1]:"0",null!=b&&(c+=Array(b-c.length+1).join("0")),b=a+d+c);return b},zeroPad:function(a,b,c){for(a=a.toString(c||10);a.length<b;)a="0"+a;return a}};
+OpenLayers.Function={bind:function(a,b){var c=Array.prototype.slice.apply(arguments,[2]);return function(){var d=c.concat(Array.prototype.slice.apply(arguments,[0]));return a.apply(b,d)}},bindAsEventListener:function(a,b){return function(c){return a.call(b,c||window.event)}},False:function(){return!1},True:function(){return!0},Void:function(){}};
+OpenLayers.Array={filter:function(a,b,c){var d=[];if(Array.prototype.filter)d=a.filter(b,c);else{var e=a.length;if("function"!=typeof b)throw new TypeError;for(var f=0;f<e;f++)if(f in a){var g=a[f];b.call(c,g,f,a)&&d.push(g)}}return d}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(a,b,c,d){OpenLayers.Util.isArray(a)&&(d=a[3],c=a[2],b=a[1],a=a[0]);null!=a&&(this.left=OpenLayers.Util.toFloat(a));null!=b&&(this.bottom=OpenLayers.Util.toFloat(b));null!=c&&(this.right=OpenLayers.Util.toFloat(c));null!=d&&(this.top=OpenLayers.Util.toFloat(d))},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(a){var b=!1;null!=
+a&&(b=this.left==a.left&&this.right==a.right&&this.top==a.top&&this.bottom==a.bottom);return b},toString:function(){return[this.left,this.bottom,this.right,this.top].join()},toArray:function(a){return!0===a?[this.bottom,this.left,this.top,this.right]:[this.left,this.bottom,this.right,this.top]},toBBOX:function(a,b){null==a&&(a=6);var c=Math.pow(10,a),d=Math.round(this.left*c)/c,e=Math.round(this.bottom*c)/c,f=Math.round(this.right*c)/c,c=Math.round(this.top*c)/c;return!0===b?e+","+d+","+c+","+f:d+
+","+e+","+f+","+c},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])])},getWidth:function(){return this.right-this.left},getHeight:function(){return this.top-this.bottom},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight())},
+getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){this.centerLonLat||(this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2));return this.centerLonLat},scale:function(a,b){null==b&&(b=this.getCenterLonLat());var c,d;"OpenLayers.LonLat"==b.CLASS_NAME?(c=b.lon,d=b.lat):(c=b.x,d=b.y);return new OpenLayers.Bounds((this.left-c)*a+c,(this.bottom-d)*a+d,(this.right-c)*a+c,(this.top-d)*a+
+d)},add:function(a,b){if(null==a||null==b)throw new TypeError("Bounds.add cannot receive null values");return new OpenLayers.Bounds(this.left+a,this.bottom+b,this.right+a,this.top+b)},extend:function(a){if(a)switch(a.CLASS_NAME){case "OpenLayers.LonLat":this.extendXY(a.lon,a.lat);break;case "OpenLayers.Geometry.Point":this.extendXY(a.x,a.y);break;case "OpenLayers.Bounds":this.centerLonLat=null;if(null==this.left||a.left<this.left)this.left=a.left;if(null==this.bottom||a.bottom<this.bottom)this.bottom=
+a.bottom;if(null==this.right||a.right>this.right)this.right=a.right;if(null==this.top||a.top>this.top)this.top=a.top}},extendXY:function(a,b){this.centerLonLat=null;if(null==this.left||a<this.left)this.left=a;if(null==this.bottom||b<this.bottom)this.bottom=b;if(null==this.right||a>this.right)this.right=a;if(null==this.top||b>this.top)this.top=b},containsLonLat:function(a,b){"boolean"===typeof b&&(b={inclusive:b});b=b||{};var c=this.contains(a.lon,a.lat,b.inclusive),d=b.worldBounds;d&&!c&&(c=d.getWidth(),
+d=Math.round((a.lon-(d.left+d.right)/2)/c),c=this.containsLonLat({lon:a.lon-d*c,lat:a.lat},{inclusive:b.inclusive}));return c},containsPixel:function(a,b){return this.contains(a.x,a.y,b)},contains:function(a,b,c){null==c&&(c=!0);if(null==a||null==b)return!1;a=OpenLayers.Util.toFloat(a);b=OpenLayers.Util.toFloat(b);var d=!1;return d=c?a>=this.left&&a<=this.right&&b>=this.bottom&&b<=this.top:a>this.left&&a<this.right&&b>this.bottom&&b<this.top},intersectsBounds:function(a,b){"boolean"===typeof b&&(b=
+{inclusive:b});b=b||{};if(b.worldBounds){var c=this.wrapDateLine(b.worldBounds);a=a.wrapDateLine(b.worldBounds)}else c=this;null==b.inclusive&&(b.inclusive=!0);var d=!1,e=c.left==a.right||c.right==a.left||c.top==a.bottom||c.bottom==a.top;if(b.inclusive||!e)var d=a.top>=c.bottom&&a.top<=c.top||c.top>a.bottom&&c.top<a.top,e=a.left>=c.left&&a.left<=c.right||c.left>=a.left&&c.left<=a.right,f=a.right>=c.left&&a.right<=c.right||c.right>=a.left&&c.right<=a.right,d=(a.bottom>=c.bottom&&a.bottom<=c.top||c.bottom>=
+a.bottom&&c.bottom<=a.top||d)&&(e||f);if(b.worldBounds&&!d){var g=b.worldBounds,e=g.getWidth(),f=!g.containsBounds(c),g=!g.containsBounds(a);f&&!g?(a=a.add(-e,0),d=c.intersectsBounds(a,{inclusive:b.inclusive})):g&&!f&&(c=c.add(-e,0),d=a.intersectsBounds(c,{inclusive:b.inclusive}))}return d},containsBounds:function(a,b,c){null==b&&(b=!1);null==c&&(c=!0);var d=this.contains(a.left,a.bottom,c),e=this.contains(a.right,a.bottom,c),f=this.contains(a.left,a.top,c);a=this.contains(a.right,a.top,c);return b?
+d||e||f||a:d&&e&&f&&a},determineQuadrant:function(a){var b="",c=this.getCenterLonLat(),b=b+(a.lat<c.lat?"b":"t");return b+=a.lon<c.lon?"l":"r"},transform:function(a,b){this.centerLonLat=null;var c=OpenLayers.Projection.transform({x:this.left,y:this.bottom},a,b),d=OpenLayers.Projection.transform({x:this.right,y:this.bottom},a,b),e=OpenLayers.Projection.transform({x:this.left,y:this.top},a,b),f=OpenLayers.Projection.transform({x:this.right,y:this.top},a,b);this.left=Math.min(c.x,e.x);this.bottom=Math.min(c.y,
+d.y);this.right=Math.max(d.x,f.x);this.top=Math.max(e.y,f.y);return this},wrapDateLine:function(a,b){b=b||{};var c=b.leftTolerance||0,d=b.rightTolerance||0,e=this.clone();if(a){for(var f=a.getWidth();e.left<a.left&&e.right-d<=a.left;)e=e.add(f,0);for(;e.left+c>=a.right&&e.right>a.right;)e=e.add(-f,0);c=e.left+c;c<a.right&&c>a.left&&e.right-d>a.right&&(e=e.add(-f,0))}return e},CLASS_NAME:"OpenLayers.Bounds"});
+OpenLayers.Bounds.fromString=function(a,b){var c=a.split(",");return OpenLayers.Bounds.fromArray(c,b)};OpenLayers.Bounds.fromArray=function(a,b){return!0===b?new OpenLayers.Bounds(a[1],a[0],a[3],a[2]):new OpenLayers.Bounds(a[0],a[1],a[2],a[3])};OpenLayers.Bounds.fromSize=function(a){return new OpenLayers.Bounds(0,a.h,a.w,0)};OpenLayers.Bounds.oppositeQuadrant=function(a){var b;b=""+("t"==a.charAt(0)?"b":"t");return b+="l"==a.charAt(1)?"r":"l"};OpenLayers.Element={visible:function(a){return"none"!=OpenLayers.Util.getElement(a).style.display},toggle:function(){for(var a=0,b=arguments.length;a<b;a++){var c=OpenLayers.Util.getElement(arguments[a]),d=OpenLayers.Element.visible(c)?"none":"";c.style.display=d}},remove:function(a){a=OpenLayers.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=OpenLayers.Util.getElement(a);return a.offsetHeight},hasClass:function(a,b){var c=a.className;return!!c&&RegExp("(^|\\s)"+b+"(\\s|$)").test(c)},
+addClass:function(a,b){OpenLayers.Element.hasClass(a,b)||(a.className+=(a.className?" ":"")+b);return a},removeClass:function(a,b){var c=a.className;c&&(a.className=OpenLayers.String.trim(c.replace(RegExp("(^|\\s+)"+b+"(\\s+|$)")," ")));return a},toggleClass:function(a,b){OpenLayers.Element.hasClass(a,b)?OpenLayers.Element.removeClass(a,b):OpenLayers.Element.addClass(a,b);return a},getStyle:function(a,b){a=OpenLayers.Util.getElement(a);var c=null;if(a&&a.style){c=a.style[OpenLayers.String.camelize(b)];
+c||(document.defaultView&&document.defaultView.getComputedStyle?c=(c=document.defaultView.getComputedStyle(a,null))?c.getPropertyValue(b):null:a.currentStyle&&(c=a.currentStyle[OpenLayers.String.camelize(b)]));var d=["left","top","right","bottom"];window.opera&&-1!=OpenLayers.Util.indexOf(d,b)&&"static"==OpenLayers.Element.getStyle(a,"position")&&(c="auto")}return"auto"==c?null:c}};OpenLayers.LonLat=OpenLayers.Class({lon:0,lat:0,initialize:function(a,b){OpenLayers.Util.isArray(a)&&(b=a[1],a=a[0]);this.lon=OpenLayers.Util.toFloat(a);this.lat=OpenLayers.Util.toFloat(b)},toString:function(){return"lon="+this.lon+",lat="+this.lat},toShortString:function(){return this.lon+", "+this.lat},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat)},add:function(a,b){if(null==a||null==b)throw new TypeError("LonLat.add cannot receive null values");return new OpenLayers.LonLat(this.lon+
+OpenLayers.Util.toFloat(a),this.lat+OpenLayers.Util.toFloat(b))},equals:function(a){var b=!1;null!=a&&(b=this.lon==a.lon&&this.lat==a.lat||isNaN(this.lon)&&isNaN(this.lat)&&isNaN(a.lon)&&isNaN(a.lat));return b},transform:function(a,b){var c=OpenLayers.Projection.transform({x:this.lon,y:this.lat},a,b);this.lon=c.x;this.lat=c.y;return this},wrapDateLine:function(a){var b=this.clone();if(a){for(;b.lon<a.left;)b.lon+=a.getWidth();for(;b.lon>a.right;)b.lon-=a.getWidth()}return b},CLASS_NAME:"OpenLayers.LonLat"});
+OpenLayers.LonLat.fromString=function(a){a=a.split(",");return new OpenLayers.LonLat(a[0],a[1])};OpenLayers.LonLat.fromArray=function(a){var b=OpenLayers.Util.isArray(a);return new OpenLayers.LonLat(b&&a[0],b&&a[1])};OpenLayers.Pixel=OpenLayers.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return"x="+this.x+",y="+this.y},clone:function(){return new OpenLayers.Pixel(this.x,this.y)},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},distanceTo:function(a){return Math.sqrt(Math.pow(this.x-a.x,2)+Math.pow(this.y-a.y,2))},add:function(a,b){if(null==a||null==b)throw new TypeError("Pixel.add cannot receive null values");
+return new OpenLayers.Pixel(this.x+a,this.y+b)},offset:function(a){var b=this.clone();a&&(b=this.add(a.x,a.y));return b},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return"w="+this.w+",h="+this.h},clone:function(){return new OpenLayers.Size(this.w,this.h)},equals:function(a){var b=!1;null!=a&&(b=this.w==a.w&&this.h==a.h||isNaN(this.w)&&isNaN(this.h)&&isNaN(a.w)&&isNaN(a.h));return b},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(a){alert(a)},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};
+(function(){for(var a=document.getElementsByTagName("script"),b=0,c=a.length;b<c;++b)if(-1!=a[b].src.indexOf("firebug.js")&&console){OpenLayers.Util.extend(OpenLayers.Console,console);break}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){OpenLayers.Lang.code||OpenLayers.Lang.setCode();return OpenLayers.Lang.code},setCode:function(a){var b;a||(a="msie"==OpenLayers.BROWSER_NAME?navigator.userLanguage:navigator.language);a=a.split("-");a[0]=a[0].toLowerCase();"object"==typeof OpenLayers.Lang[a[0]]&&(b=a[0]);if(a[1]){var c=a[0]+"-"+a[1].toUpperCase();"object"==typeof OpenLayers.Lang[c]&&(b=c)}b||(OpenLayers.Console.warn("Failed to find OpenLayers.Lang."+a.join("-")+" dictionary, falling back to default language"),
+b=OpenLayers.Lang.defaultCode);OpenLayers.Lang.code=b},translate:function(a,b){var c=OpenLayers.Lang[OpenLayers.Lang.getCode()];(c=c&&c[a])||(c=a);b&&(c=OpenLayers.String.format(c,b));return c}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){for(var a=[],b=0,c=arguments.length;b<c;b++){var d=arguments[b];"string"==typeof d&&(d=document.getElementById(d));if(1==arguments.length)return d;a.push(d)}return a};OpenLayers.Util.isElement=function(a){return!(!a||1!==a.nodeType)};OpenLayers.Util.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)};OpenLayers.Util.removeItem=function(a,b){for(var c=a.length-1;0<=c;c--)a[c]==b&&a.splice(c,1);return a};
+OpenLayers.Util.indexOf=function(a,b){if("function"==typeof a.indexOf)return a.indexOf(b);for(var c=0,d=a.length;c<d;c++)if(a[c]==b)return c;return-1};OpenLayers.Util.dotless=/\./g;
+OpenLayers.Util.modifyDOMElement=function(a,b,c,d,e,f,g,h){b&&(a.id=b.replace(OpenLayers.Util.dotless,"_"));c&&(a.style.left=c.x+"px",a.style.top=c.y+"px");d&&(a.style.width=d.w+"px",a.style.height=d.h+"px");e&&(a.style.position=e);f&&(a.style.border=f);g&&(a.style.overflow=g);0<=parseFloat(h)&&1>parseFloat(h)?(a.style.filter="alpha(opacity="+100*h+")",a.style.opacity=h):1==parseFloat(h)&&(a.style.filter="",a.style.opacity="")};
+OpenLayers.Util.createDiv=function(a,b,c,d,e,f,g,h){var k=document.createElement("div");d&&(k.style.backgroundImage="url("+d+")");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="absolute");OpenLayers.Util.modifyDOMElement(k,a,b,c,e,f,g,h);return k};
+OpenLayers.Util.createImage=function(a,b,c,d,e,f,g,h){var k=document.createElement("img");a||(a=OpenLayers.Util.createUniqueID("OpenLayersDiv"));e||(e="relative");OpenLayers.Util.modifyDOMElement(k,a,b,c,e,f,null,g);h&&(k.style.display="none",b=function(){k.style.display="";OpenLayers.Event.stopObservingElement(k)},OpenLayers.Event.observe(k,"load",b),OpenLayers.Event.observe(k,"error",b));k.style.alt=a;k.galleryImg="no";d&&(k.src=d);return k};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;
+OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(null==OpenLayers.Util.alphaHackNeeded){var a=navigator.appVersion.split("MSIE"),a=parseFloat(a[1]),b=!1;try{b=!!document.body.filters}catch(c){}OpenLayers.Util.alphaHackNeeded=b&&5.5<=a&&7>a}return OpenLayers.Util.alphaHackNeeded};
+OpenLayers.Util.modifyAlphaImageDiv=function(a,b,c,d,e,f,g,h,k){OpenLayers.Util.modifyDOMElement(a,b,c,d,f,null,null,k);b=a.childNodes[0];e&&(b.src=e);OpenLayers.Util.modifyDOMElement(b,a.id+"_innerImage",null,d,"relative",g);OpenLayers.Util.alphaHack()&&("none"!=a.style.display&&(a.style.display="inline-block"),null==h&&(h="scale"),a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b.src+"', sizingMethod='"+h+"')",0<=parseFloat(a.style.opacity)&&1>parseFloat(a.style.opacity)&&
+(a.style.filter+=" alpha(opacity="+100*a.style.opacity+")"),b.style.filter="alpha(opacity=0)")};OpenLayers.Util.createAlphaImageDiv=function(a,b,c,d,e,f,g,h,k){var l=OpenLayers.Util.createDiv();k=OpenLayers.Util.createImage(null,null,null,null,null,null,null,k);k.className="olAlphaImg";l.appendChild(k);OpenLayers.Util.modifyAlphaImageDiv(l,a,b,c,d,e,f,g,h);return l};OpenLayers.Util.upperCaseObject=function(a){var b={},c;for(c in a)b[c.toUpperCase()]=a[c];return b};
+OpenLayers.Util.applyDefaults=function(a,b){a=a||{};var c="function"==typeof window.Event&&b instanceof window.Event,d;for(d in b)if(void 0===a[d]||!c&&b.hasOwnProperty&&b.hasOwnProperty(d)&&!a.hasOwnProperty(d))a[d]=b[d];!c&&b&&b.hasOwnProperty&&b.hasOwnProperty("toString")&&!a.hasOwnProperty("toString")&&(a.toString=b.toString);return a};
+OpenLayers.Util.getParameterString=function(a){var b=[],c;for(c in a){var d=a[c];if(null!=d&&"function"!=typeof d){if("object"==typeof d&&d.constructor==Array){for(var e=[],f,g=0,h=d.length;g<h;g++)f=d[g],e.push(encodeURIComponent(null===f||void 0===f?"":f));d=e.join(",")}else d=encodeURIComponent(d);b.push(encodeURIComponent(c)+"="+d)}}return b.join("&")};OpenLayers.Util.urlAppend=function(a,b){var c=a;if(b)var d=(a+" ").split(/[?&]/),c=c+(" "===d.pop()?b:d.length?"&"+b:"?"+b);return c};
+OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||OpenLayers._getScriptLocation()+"img/"};OpenLayers.Util.getImageLocation=function(a){return OpenLayers.Util.getImagesLocation()+a};OpenLayers.Util.Try=function(){for(var a=null,b=0,c=arguments.length;b<c;b++){var d=arguments[b];try{a=d();break}catch(e){}}return a};
+OpenLayers.Util.getXmlNodeValue=function(a){var b=null;OpenLayers.Util.Try(function(){b=a.text;b||(b=a.textContent);b||(b=a.firstChild.nodeValue)},function(){b=a.textContent});return b};OpenLayers.Util.mouseLeft=function(a,b){for(var c=a.relatedTarget?a.relatedTarget:a.toElement;c!=b&&null!=c;)c=c.parentNode;return c!=b};OpenLayers.Util.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(a,b){null==b&&(b=OpenLayers.Util.DEFAULT_PRECISION);"number"!==typeof a&&(a=parseFloat(a));return 0===b?a:parseFloat(a.toPrecision(b))};
+OpenLayers.Util.rad=function(a){return a*Math.PI/180};OpenLayers.Util.deg=function(a){return 180*a/Math.PI};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};
+OpenLayers.Util.distVincenty=function(a,b){for(var c=OpenLayers.Util.VincentyConstants,d=c.a,e=c.b,c=c.f,f=OpenLayers.Util.rad(b.lon-a.lon),g=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(a.lat))),h=Math.atan((1-c)*Math.tan(OpenLayers.Util.rad(b.lat))),k=Math.sin(g),g=Math.cos(g),l=Math.sin(h),h=Math.cos(h),m=f,r=2*Math.PI,p=20;1E-12<Math.abs(m-r)&&0<--p;){var n=Math.sin(m),q=Math.cos(m),s=Math.sqrt(h*n*h*n+(g*l-k*h*q)*(g*l-k*h*q));if(0==s)return 0;var q=k*l+g*h*q,t=Math.atan2(s,q),u=Math.asin(g*h*
+n/s),v=Math.cos(u)*Math.cos(u),n=q-2*k*l/v,w=c/16*v*(4+c*(4-3*v)),r=m,m=f+(1-w)*c*Math.sin(u)*(t+w*s*(n+w*q*(-1+2*n*n)))}if(0==p)return NaN;d=v*(d*d-e*e)/(e*e);c=d/1024*(256+d*(-128+d*(74-47*d)));return(e*(1+d/16384*(4096+d*(-768+d*(320-175*d))))*(t-c*s*(n+c/4*(q*(-1+2*n*n)-c/6*n*(-3+4*s*s)*(-3+4*n*n))))).toFixed(3)/1E3};
+OpenLayers.Util.destinationVincenty=function(a,b,c){var d=OpenLayers.Util,e=d.VincentyConstants,f=e.a,g=e.b,h=e.f,e=a.lon;a=a.lat;var k=d.rad(b);b=Math.sin(k);k=Math.cos(k);a=(1-h)*Math.tan(d.rad(a));var l=1/Math.sqrt(1+a*a),m=a*l,r=Math.atan2(a,k);a=l*b;for(var p=1-a*a,f=p*(f*f-g*g)/(g*g),n=1+f/16384*(4096+f*(-768+f*(320-175*f))),q=f/1024*(256+f*(-128+f*(74-47*f))),f=c/(g*n),s=2*Math.PI;1E-12<Math.abs(f-s);)var t=Math.cos(2*r+f),u=Math.sin(f),v=Math.cos(f),w=q*u*(t+q/4*(v*(-1+2*t*t)-q/6*t*(-3+4*
+u*u)*(-3+4*t*t))),s=f,f=c/(g*n)+w;c=m*u-l*v*k;g=Math.atan2(m*v+l*u*k,(1-h)*Math.sqrt(a*a+c*c));b=Math.atan2(u*b,l*v-m*u*k);k=h/16*p*(4+h*(4-3*p));t=b-(1-k)*h*a*(f+k*u*(t+k*v*(-1+2*t*t)));Math.atan2(a,-c);return new OpenLayers.LonLat(e+d.deg(t),d.deg(g))};
+OpenLayers.Util.getParameters=function(a,b){b=b||{};a=null===a||void 0===a?window.location.href:a;var c="";if(OpenLayers.String.contains(a,"?"))var d=a.indexOf("?")+1,c=OpenLayers.String.contains(a,"#")?a.indexOf("#"):a.length,c=a.substring(d,c);for(var d={},c=c.split(/[&;]/),e=0,f=c.length;e<f;++e){var g=c[e].split("=");if(g[0]){var h=g[0];try{h=decodeURIComponent(h)}catch(k){h=unescape(h)}g=(g[1]||"").replace(/\+/g," ");try{g=decodeURIComponent(g)}catch(l){g=unescape(g)}!1!==b.splitArgs&&(g=g.split(","));
+1==g.length&&(g=g[0]);d[h]=g}}return d};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(a){a=null==a?"id_":a.replace(OpenLayers.Util.dotless,"_");OpenLayers.Util.lastSeqID+=1;return a+OpenLayers.Util.lastSeqID};OpenLayers.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.37,km:39370,dd:4374754,yd:36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT.degrees=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT.nmi=1852*OpenLayers.INCHES_PER_UNIT.m;
+OpenLayers.METERS_PER_INCH=0.0254000508001016;
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{Inch:OpenLayers.INCHES_PER_UNIT.inches,Meter:1/OpenLayers.METERS_PER_INCH,Foot:0.3048006096012192/OpenLayers.METERS_PER_INCH,IFoot:0.3048/OpenLayers.METERS_PER_INCH,ClarkeFoot:0.3047972651151/OpenLayers.METERS_PER_INCH,SearsFoot:0.30479947153867626/OpenLayers.METERS_PER_INCH,GoldCoastFoot:0.3047997101815088/OpenLayers.METERS_PER_INCH,IInch:0.0254/OpenLayers.METERS_PER_INCH,MicroInch:2.54E-5/OpenLayers.METERS_PER_INCH,Mil:2.54E-8/OpenLayers.METERS_PER_INCH,
+Centimeter:0.01/OpenLayers.METERS_PER_INCH,Kilometer:1E3/OpenLayers.METERS_PER_INCH,Yard:0.9144018288036576/OpenLayers.METERS_PER_INCH,SearsYard:0.914398414616029/OpenLayers.METERS_PER_INCH,IndianYard:0.9143985307444408/OpenLayers.METERS_PER_INCH,IndianYd37:0.91439523/OpenLayers.METERS_PER_INCH,IndianYd62:0.9143988/OpenLayers.METERS_PER_INCH,IndianYd75:0.9143985/OpenLayers.METERS_PER_INCH,IndianFoot:0.30479951/OpenLayers.METERS_PER_INCH,IndianFt37:0.30479841/OpenLayers.METERS_PER_INCH,IndianFt62:0.3047996/
+OpenLayers.METERS_PER_INCH,IndianFt75:0.3047995/OpenLayers.METERS_PER_INCH,Mile:1609.3472186944373/OpenLayers.METERS_PER_INCH,IYard:0.9144/OpenLayers.METERS_PER_INCH,IMile:1609.344/OpenLayers.METERS_PER_INCH,NautM:1852/OpenLayers.METERS_PER_INCH,"Lat-66":110943.31648893273/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872235/OpenLayers.METERS_PER_INCH,Decimeter:0.1/OpenLayers.METERS_PER_INCH,Millimeter:0.001/OpenLayers.METERS_PER_INCH,Dekameter:10/OpenLayers.METERS_PER_INCH,Decameter:10/OpenLayers.METERS_PER_INCH,
+Hectometer:100/OpenLayers.METERS_PER_INCH,GermanMeter:1.0000135965/OpenLayers.METERS_PER_INCH,CaGrid:0.999738/OpenLayers.METERS_PER_INCH,ClarkeChain:20.1166194976/OpenLayers.METERS_PER_INCH,GunterChain:20.11684023368047/OpenLayers.METERS_PER_INCH,BenoitChain:20.116782494375872/OpenLayers.METERS_PER_INCH,SearsChain:20.11676512155/OpenLayers.METERS_PER_INCH,ClarkeLink:0.201166194976/OpenLayers.METERS_PER_INCH,GunterLink:0.2011684023368047/OpenLayers.METERS_PER_INCH,BenoitLink:0.20116782494375873/OpenLayers.METERS_PER_INCH,
+SearsLink:0.2011676512155/OpenLayers.METERS_PER_INCH,Rod:5.02921005842012/OpenLayers.METERS_PER_INCH,IntnlChain:20.1168/OpenLayers.METERS_PER_INCH,IntnlLink:0.201168/OpenLayers.METERS_PER_INCH,Perch:5.02921005842012/OpenLayers.METERS_PER_INCH,Pole:5.02921005842012/OpenLayers.METERS_PER_INCH,Furlong:201.1684023368046/OpenLayers.METERS_PER_INCH,Rood:3.778266898/OpenLayers.METERS_PER_INCH,CapeFoot:0.3047972615/OpenLayers.METERS_PER_INCH,Brealey:375/OpenLayers.METERS_PER_INCH,ModAmFt:0.304812252984506/
+OpenLayers.METERS_PER_INCH,Fathom:1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":5E4/OpenLayers.METERS_PER_INCH,"150kilometers":15E4/OpenLayers.METERS_PER_INCH});
+OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{mm:OpenLayers.INCHES_PER_UNIT.Meter/1E3,cm:OpenLayers.INCHES_PER_UNIT.Meter/100,dm:100*OpenLayers.INCHES_PER_UNIT.Meter,km:1E3*OpenLayers.INCHES_PER_UNIT.Meter,kmi:OpenLayers.INCHES_PER_UNIT.nmi,fath:OpenLayers.INCHES_PER_UNIT.Fathom,ch:OpenLayers.INCHES_PER_UNIT.IntnlChain,link:OpenLayers.INCHES_PER_UNIT.IntnlLink,"us-in":OpenLayers.INCHES_PER_UNIT.inches,"us-ft":OpenLayers.INCHES_PER_UNIT.Foot,"us-yd":OpenLayers.INCHES_PER_UNIT.Yard,"us-ch":OpenLayers.INCHES_PER_UNIT.GunterChain,
+"us-mi":OpenLayers.INCHES_PER_UNIT.Mile,"ind-yd":OpenLayers.INCHES_PER_UNIT.IndianYd37,"ind-ft":OpenLayers.INCHES_PER_UNIT.IndianFt37,"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(a){return 1<a?1/a:a};OpenLayers.Util.getResolutionFromScale=function(a,b){var c;a&&(null==b&&(b="degrees"),c=1/(OpenLayers.Util.normalizeScale(a)*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH));return c};
+OpenLayers.Util.getScaleFromResolution=function(a,b){null==b&&(b="degrees");return a*OpenLayers.INCHES_PER_UNIT[b]*OpenLayers.DOTS_PER_INCH};
+OpenLayers.Util.pagePosition=function(a){var b=[0,0],c=OpenLayers.Util.getViewportElement();if(!a||a==window||a==c)return b;var d=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&"absolute"==OpenLayers.Element.getStyle(a,"position")&&(""==a.style.top||""==a.style.left),e=null;if(a.getBoundingClientRect)a=a.getBoundingClientRect(),e=window.pageYOffset||c.scrollTop,b[0]=a.left+(window.pageXOffset||c.scrollLeft),b[1]=a.top+e;else if(document.getBoxObjectFor&&!d)a=document.getBoxObjectFor(a),c=document.getBoxObjectFor(c),
+b[0]=a.screenX-c.screenX,b[1]=a.screenY-c.screenY;else{b[0]=a.offsetLeft;b[1]=a.offsetTop;e=a.offsetParent;if(e!=a)for(;e;)b[0]+=e.offsetLeft,b[1]+=e.offsetTop,e=e.offsetParent;c=OpenLayers.BROWSER_NAME;if("opera"==c||"safari"==c&&"absolute"==OpenLayers.Element.getStyle(a,"position"))b[1]-=document.body.offsetTop;for(e=a.offsetParent;e&&e!=document.body;){b[0]-=e.scrollLeft;if("opera"!=c||"TR"!=e.tagName)b[1]-=e.scrollTop;e=e.offsetParent}}return b};
+OpenLayers.Util.getViewportElement=function(){var a=arguments.callee.viewportElement;void 0==a&&(a="msie"==OpenLayers.BROWSER_NAME&&"CSS1Compat"!=document.compatMode?document.body:document.documentElement,arguments.callee.viewportElement=a);return a};
+OpenLayers.Util.isEquivalentUrl=function(a,b,c){c=c||{};OpenLayers.Util.applyDefaults(c,{ignoreCase:!0,ignorePort80:!0,ignoreHash:!0,splitArgs:!1});a=OpenLayers.Util.createUrlObject(a,c);b=OpenLayers.Util.createUrlObject(b,c);for(var d in a)if("args"!==d&&a[d]!=b[d])return!1;for(d in a.args){if(a.args[d]!=b.args[d])return!1;delete b.args[d]}for(d in b.args)return!1;return!0};
+OpenLayers.Util.createUrlObject=function(a,b){b=b||{};if(!/^\w+:\/\//.test(a)){var c=window.location,d=c.port?":"+c.port:"",d=c.protocol+"//"+c.host.split(":").shift()+d;0===a.indexOf("/")?a=d+a:(c=c.pathname.split("/"),c.pop(),a=d+c.join("/")+"/"+a)}b.ignoreCase&&(a=a.toLowerCase());c=document.createElement("a");c.href=a;d={};d.host=c.host.split(":").shift();d.protocol=c.protocol;d.port=b.ignorePort80?"80"==c.port||"0"==c.port?"":c.port:""==c.port||"0"==c.port?"80":c.port;d.hash=b.ignoreHash||"#"===
+c.hash?"":c.hash;var e=c.search;e||(e=a.indexOf("?"),e=-1!=e?a.substr(e):"");d.args=OpenLayers.Util.getParameters(e,{splitArgs:b.splitArgs});d.pathname="/"==c.pathname.charAt(0)?c.pathname:"/"+c.pathname;return d};OpenLayers.Util.removeTail=function(a){var b=null,b=a.indexOf("?"),c=a.indexOf("#");return b=-1==b?-1!=c?a.substr(0,c):a:-1!=c?a.substr(0,Math.min(b,c)):a.substr(0,b)};OpenLayers.IS_GECKO=function(){var a=navigator.userAgent.toLowerCase();return-1==a.indexOf("webkit")&&-1!=a.indexOf("gecko")}();
+OpenLayers.CANVAS_SUPPORTED=function(){var a=document.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))}();OpenLayers.BROWSER_NAME=function(){var a="",b=navigator.userAgent.toLowerCase();-1!=b.indexOf("opera")?a="opera":-1!=b.indexOf("msie")?a="msie":-1!=b.indexOf("safari")?a="safari":-1!=b.indexOf("mozilla")&&(a=-1!=b.indexOf("firefox")?"firefox":"mozilla");return a}();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME};
+OpenLayers.Util.getRenderedDimensions=function(a,b,c){var d,e,f=document.createElement("div");f.style.visibility="hidden";for(var g=c&&c.containerElement?c.containerElement:document.body,h=!1,k=null,l=g;l&&"body"!=l.tagName.toLowerCase();){var m=OpenLayers.Element.getStyle(l,"position");if("absolute"==m){h=!0;break}else if(m&&"static"!=m)break;l=l.parentNode}!h||0!==g.clientHeight&&0!==g.clientWidth||(k=document.createElement("div"),k.style.visibility="hidden",k.style.position="absolute",k.style.overflow=
+"visible",k.style.width=document.body.clientWidth+"px",k.style.height=document.body.clientHeight+"px",k.appendChild(f));f.style.position="absolute";b&&(b.w?(d=b.w,f.style.width=d+"px"):b.h&&(e=b.h,f.style.height=e+"px"));c&&c.displayClass&&(f.className=c.displayClass);b=document.createElement("div");b.innerHTML=a;b.style.overflow="visible";if(b.childNodes)for(a=0,c=b.childNodes.length;a<c;a++)b.childNodes[a].style&&(b.childNodes[a].style.overflow="visible");f.appendChild(b);k?g.appendChild(k):g.appendChild(f);
+d||(d=parseInt(b.scrollWidth),f.style.width=d+"px");e||(e=parseInt(b.scrollHeight));f.removeChild(b);k?(k.removeChild(f),g.removeChild(k)):g.removeChild(f);return new OpenLayers.Size(d,e)};
+OpenLayers.Util.getScrollbarWidth=function(){var a=OpenLayers.Util._scrollbarWidth;if(null==a){var b=null,c=null,b=a=0,b=document.createElement("div");b.style.position="absolute";b.style.top="-1000px";b.style.left="-1000px";b.style.width="100px";b.style.height="50px";b.style.overflow="hidden";c=document.createElement("div");c.style.width="100%";c.style.height="200px";b.appendChild(c);document.body.appendChild(b);a=c.offsetWidth;b.style.overflow="scroll";b=c.offsetWidth;document.body.removeChild(document.body.lastChild);
+OpenLayers.Util._scrollbarWidth=a-b;a=OpenLayers.Util._scrollbarWidth}return a};
+OpenLayers.Util.getFormattedLonLat=function(a,b,c){c||(c="dms");a=(a+540)%360-180;var d=Math.abs(a),e=Math.floor(d),f=d=(d-e)/(1/60),d=Math.floor(d),f=Math.round(10*((f-d)/(1/60))),f=f/10;60<=f&&(f-=60,d+=1,60<=d&&(d-=60,e+=1));10>e&&(e="0"+e);e+="\u00b0";0<=c.indexOf("dm")&&(10>d&&(d="0"+d),e+=d+"'",0<=c.indexOf("dms")&&(10>f&&(f="0"+f),e+=f+'"'));return e="lon"==b?e+(0>a?OpenLayers.i18n("W"):OpenLayers.i18n("E")):e+(0>a?OpenLayers.i18n("S"):OpenLayers.i18n("N"))};OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(a,b,c){this.layer=a;this.lonlat=b;this.data=null!=c?c:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){null!=this.layer&&null!=this.layer.map&&null!=this.popup&&this.layer.map.removePopup(this.popup);null!=this.layer&&null!=this.marker&&this.layer.removeMarker(this.marker);this.data=this.lonlat=this.id=this.layer=null;null!=this.marker&&
+(this.destroyMarker(this.marker),this.marker=null);null!=this.popup&&(this.destroyPopup(this.popup),this.popup=null)},onScreen:function(){var a=!1;null!=this.layer&&null!=this.layer.map&&(a=this.layer.map.getExtent().containsLonLat(this.lonlat));return a},createMarker:function(){null!=this.lonlat&&(this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon));return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(a){null!=this.lonlat&&(this.popup||(this.popup=new (this.popupClass?
+this.popupClass:OpenLayers.Popup.Anchored)(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,this.marker?this.marker.icon:null,a)),null!=this.data.overflow&&(this.popup.contentDiv.style.overflow=this.data.overflow),this.popup.feature=this);return this.popup},destroyPopup:function(){this.popup&&(this.popup.feature=null,this.popup.destroy(),this.popup=null)},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};
+OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(a,b,c){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,b]);this.lonlat=null;this.geometry=a?a:null;this.state=null;this.attributes={};b&&(this.attributes=OpenLayers.Util.extend(this.attributes,b));this.style=c?c:null},destroy:function(){this.layer&&(this.layer.removeFeatures(this),this.layer=
+null);this.modified=this.geometry=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style)},onScreen:function(a){var b=!1;this.layer&&this.layer.map&&(b=this.layer.map.getExtent(),a?(a=this.geometry.getBounds(),b=b.intersectsBounds(a)):b=b.toGeometry().intersects(this.geometry));return b},getVisibility:function(){return!(this.style&&"none"==this.style.display||!this.layer||
+this.layer&&this.layer.styleMap&&"none"==this.layer.styleMap.createSymbolizer(this,this.renderIntent).display||this.layer&&!this.layer.getVisibility())},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(a,b,c){var d=!1;this.geometry&&(d=this.geometry.atPoint(a,b,c));return d},destroyPopup:function(){},move:function(a){if(this.layer&&this.geometry.move){a="OpenLayers.LonLat"==a.CLASS_NAME?this.layer.getViewPortPxFromLonLat(a):a;var b=
+this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat()),c=this.layer.map.getResolution();this.geometry.move(c*(a.x-b.x),c*(b.y-a.y));this.layer.drawFeature(this);return b}},toState:function(a){if(a==OpenLayers.State.UPDATE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=a}else if(a==OpenLayers.State.INSERT)switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=a}else if(a==OpenLayers.State.DELETE)switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=
+a}else a==OpenLayers.State.UNKNOWN&&(this.state=a)},CLASS_NAME:"OpenLayers.Feature.Vector"});
+OpenLayers.Feature.Vector.style={"default":{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},select:{fillColor:"blue",fillOpacity:0.4,
+hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},temporary:{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,
+strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit",fontColor:"#000000",labelAlign:"cm",labelOutlineColor:"white",labelOutlineWidth:3},"delete":{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:!1,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:!1,propertyStyles:null,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.rules=[];b&&b.rules&&this.addRules(b.rules);this.setDefaultStyle(a||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a=0,b=this.rules.length;a<b;a++)this.rules[a].destroy(),
+this.rules[a]=null;this.defaultStyle=this.rules=null},createSymbolizer:function(a){for(var b=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),a),c=this.rules,d,e=[],f=!1,g=0,h=c.length;g<h;g++)d=c[g],d.evaluate(a)&&(d instanceof OpenLayers.Rule&&d.elseFilter?e.push(d):(f=!0,this.applySymbolizer(d,b,a)));if(!1==f&&0<e.length)for(f=!0,g=0,h=e.length;g<h;g++)this.applySymbolizer(e[g],b,a);0<c.length&&!1==f&&(b.display="none");null!=b.label&&"string"!==typeof b.label&&
+(b.label=String(b.label));return b},applySymbolizer:function(a,b,c){var d=c.geometry?this.getSymbolizerPrefix(c.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];a=a.symbolizer[d]||a.symbolizer;!0===this.defaultsPerSymbolizer&&(d=this.defaultStyle,OpenLayers.Util.applyDefaults(a,{pointRadius:d.pointRadius}),!0!==a.stroke&&!0!==a.graphic||OpenLayers.Util.applyDefaults(a,{strokeWidth:d.strokeWidth,strokeColor:d.strokeColor,strokeOpacity:d.strokeOpacity,strokeDashstyle:d.strokeDashstyle,strokeLinecap:d.strokeLinecap}),
+!0!==a.fill&&!0!==a.graphic||OpenLayers.Util.applyDefaults(a,{fillColor:d.fillColor,fillOpacity:d.fillOpacity}),!0===a.graphic&&OpenLayers.Util.applyDefaults(a,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset}));
+return this.createLiterals(OpenLayers.Util.extend(b,a),c)},createLiterals:function(a,b){var c=OpenLayers.Util.extend({},b.attributes||b.data);OpenLayers.Util.extend(c,this.context);for(var d in this.propertyStyles)a[d]=OpenLayers.Style.createLiteral(a[d],c,b,d);return a},findPropertyStyles:function(){var a={};this.addPropertyStyles(a,this.defaultStyle);for(var b=this.rules,c,d,e=0,f=b.length;e<f;e++){c=b[e].symbolizer;for(var g in c)if(d=c[g],"object"==typeof d)this.addPropertyStyles(a,d);else{this.addPropertyStyles(a,
+c);break}}return a},addPropertyStyles:function(a,b){var c,d;for(d in b)c=b[d],"string"==typeof c&&c.match(/\$\{\w+\}/)&&(a[d]=!0);return a},addRules:function(a){Array.prototype.push.apply(this.rules,a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(a){for(var b=OpenLayers.Style.SYMBOLIZER_PREFIXES,c=0,d=b.length;c<d;c++)if(-1!=a.CLASS_NAME.indexOf(b[c]))return b[c]},clone:function(){var a=
+OpenLayers.Util.extend({},this);if(this.rules){a.rules=[];for(var b=0,c=this.rules.length;b<c;++b)a.rules.push(this.rules[b].clone())}a.context=this.context&&OpenLayers.Util.extend({},this.context);b=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(b,a)},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(a,b,c,d){"string"==typeof a&&-1!=a.indexOf("${")&&(a=OpenLayers.String.format(a,b,[c,d]),a=isNaN(a)||!a?a:parseFloat(a));return a};
+OpenLayers.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon","Text","Raster"];OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:!1,size:null,resolution:null,map:null,featureDx:0,initialize:function(a,b){this.container=OpenLayers.Util.getElement(a);OpenLayers.Util.extend(this,b)},destroy:function(){this.map=this.resolution=this.size=this.extent=this.container=null},supported:function(){return!1},setExtent:function(a,b){this.extent=a.clone();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var c=a.getWidth()/this.map.getExtent().getWidth();
+a=a.scale(1/c);this.extent=a.wrapDateLine(this.map.getMaxExtent()).scale(c)}b&&(this.resolution=null);return!0},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){return this.resolution=this.resolution||this.map.getResolution()},drawFeature:function(a,b){null==b&&(b=a.style);if(a.geometry){var c=a.geometry.getBounds();if(c){var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());c.intersectsBounds(this.extent,{worldBounds:d})?this.calculateFeatureDx(c,
+d):b={display:"none"};c=this.drawGeometry(a.geometry,b,a.id);if("none"!=b.display&&b.label&&!1!==c){d=a.geometry.getCentroid();if(b.labelXOffset||b.labelYOffset){var e=isNaN(b.labelXOffset)?0:b.labelXOffset,f=isNaN(b.labelYOffset)?0:b.labelYOffset,g=this.getResolution();d.move(e*g,f*g)}this.drawText(a.id,b,d)}else this.removeText(a.id);return c}}},calculateFeatureDx:function(a,b){this.featureDx=0;if(b){var c=b.getWidth();this.featureDx=Math.round(((a.left+a.right)/2-(this.extent.left+this.extent.right)/
+2)/c)*c}},drawGeometry:function(a,b,c){},drawText:function(a,b,c){},removeText:function(a){},clear:function(){},getFeatureIdFromEvent:function(a){},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<c;++b){var d=a[b];this.eraseGeometry(d.geometry,d.id);this.removeText(d.id)}},eraseGeometry:function(a,b){},moveRoot:function(a){},getRenderLayerId:function(){return this.container.id},applyDefaultSymbolizer:function(a){var b=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);
+!1===a.stroke&&(delete b.strokeWidth,delete b.strokeColor);!1===a.fill&&delete b.fillColor;OpenLayers.Util.extend(b,a);return b},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0,labelAlign:"cm"};
+OpenLayers.Renderer.symbol={star:[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],cross:[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],x:[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],square:[0,0,0,1,1,1,1,0,0,0],triangle:[0,10,10,10,5,0,0,10]};OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(a){this.compare=a?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear()},insert:function(a){this.exists(a)&&this.remove(a);var b=a.id;this.determineZIndex(a);for(var c=-1,d=this.order.length,e;1<d-c;)e=parseInt((c+d)/2),0<this.compare(this,a,OpenLayers.Util.getElement(this.order[e]))?c=e:d=e;this.order.splice(d,
+0,b);this.indices[b]=this.getZIndex(a);return this.getNextElement(d)},remove:function(a){a=a.id;var b=OpenLayers.Util.indexOf(this.order,a);0<=b&&(this.order.splice(b,1),delete this.indices[a],this.maxZIndex=0<this.order.length?this.indices[this.order[this.order.length-1]]:0)},clear:function(){this.order=[];this.indices={};this.maxZIndex=0},exists:function(a){return null!=this.indices[a.id]},getZIndex:function(a){return a._style.graphicZIndex},determineZIndex:function(a){var b=a._style.graphicZIndex;
+null==b?(b=this.maxZIndex,a._style.graphicZIndex=b):b>this.maxZIndex&&(this.maxZIndex=b)},getNextElement:function(a){a+=1;if(a<this.order.length){var b=OpenLayers.Util.getElement(this.order[a]);void 0==b&&(b=this.getNextElement(a));return b}return null},CLASS_NAME:"OpenLayers.ElementsIndexer"});
+OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(a,b,c){b=a.getZIndex(b);var d=0;c&&(a=a.getZIndex(c),d=b-a);return d},Z_ORDER_DRAWING_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0==a&&(a=1);return a},Z_ORDER_Y_ORDER:function(a,b,c){a=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(a,b,c);c&&0===a&&(b=c._boundsBottom-b._boundsBottom,a=0===b?1:b);return a}};
+OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,xOffset:0,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",LABEL_OUTLINE_SUFFIX:"_outline",initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);
+this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);b&&(b.zIndexing||b.yOrdering)&&(this.indexer=new OpenLayers.ElementsIndexer(b.yOrdering))},destroy:function(){this.clear();this.xmlns=this.root=this.rendererRoot=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){var a,b=this.vectorRoot;if(b)for(;a=b.firstChild;)b.removeChild(a);if(b=this.textRoot)for(;a=b.firstChild;)b.removeChild(a);this.indexer&&
+this.indexer.clear()},setExtent:function(a,b){var c=OpenLayers.Renderer.prototype.setExtent.apply(this,arguments),d=this.getResolution();if(this.map.baseLayer&&this.map.baseLayer.wrapDateLine){var e,f=a.getWidth()/this.map.getExtent().getWidth();a=a.scale(1/f);f=this.map.getMaxExtent();f.right>a.left&&f.right<a.right?e=!0:f.left>a.left&&f.left<a.right&&(e=!1);if(e!==this.rightOfDateLine||b)c=!1,this.xOffset=!0===e?f.getWidth()/d:0;this.rightOfDateLine=e}return c},getNodeType:function(a,b){},drawGeometry:function(a,
+b,c){var d=a.CLASS_NAME,e=!0;if("OpenLayers.Geometry.Collection"==d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d){for(var d=0,f=a.components.length;d<f;d++)e=this.drawGeometry(a.components[d],b,c)&&e;return e}d=e=!1;"none"!=b.display&&(b.backgroundGraphic?this.redrawBackgroundNode(a.id,a,b,c):d=!0,e=this.redrawNode(a.id,a,b,c));!1==e&&(b=document.getElementById(a.id))&&(b._style.backgroundGraphic&&(d=!0),b.parentNode.removeChild(b));
+d&&(b=document.getElementById(a.id+this.BACKGROUND_ID_SUFFIX))&&b.parentNode.removeChild(b);return e},redrawNode:function(a,b,c,d){c=this.applyDefaultSymbolizer(c);a=this.nodeFactory(a,this.getNodeType(b,c));a._featureId=d;a._boundsBottom=b.getBounds().bottom;a._geometryClass=b.CLASS_NAME;a._style=c;b=this.drawGeometryNode(a,b,c);if(!1===b)return!1;a=b.node;this.indexer?(c=this.indexer.insert(a))?this.vectorRoot.insertBefore(a,c):this.vectorRoot.appendChild(a):a.parentNode!==this.vectorRoot&&this.vectorRoot.appendChild(a);
+this.postDraw(a);return b.complete},redrawBackgroundNode:function(a,b,c,d){c=OpenLayers.Util.extend({},c);c.externalGraphic=c.backgroundGraphic;c.graphicXOffset=c.backgroundXOffset;c.graphicYOffset=c.backgroundYOffset;c.graphicZIndex=c.backgroundGraphicZIndex;c.graphicWidth=c.backgroundWidth||c.graphicWidth;c.graphicHeight=c.backgroundHeight||c.graphicHeight;c.backgroundGraphic=null;c.backgroundXOffset=null;c.backgroundYOffset=null;c.backgroundGraphicZIndex=null;return this.redrawNode(a+this.BACKGROUND_ID_SUFFIX,
+b,c,null)},drawGeometryNode:function(a,b,c){c=c||a._style;var d={isFilled:void 0===c.fill?!0:c.fill,isStroked:void 0===c.stroke?!!c.strokeWidth:c.stroke},e;switch(b.CLASS_NAME){case "OpenLayers.Geometry.Point":!1===c.graphic&&(d.isFilled=!1,d.isStroked=!1);e=this.drawPoint(a,b);break;case "OpenLayers.Geometry.LineString":d.isFilled=!1;e=this.drawLineString(a,b);break;case "OpenLayers.Geometry.LinearRing":e=this.drawLinearRing(a,b);break;case "OpenLayers.Geometry.Polygon":e=this.drawPolygon(a,b);break;
+case "OpenLayers.Geometry.Rectangle":e=this.drawRectangle(a,b)}a._options=d;return!1!=e?{node:this.setStyle(a,c,d,b),complete:e}:!1},postDraw:function(a){},drawPoint:function(a,b){},drawLineString:function(a,b){},drawLinearRing:function(a,b){},drawPolygon:function(a,b){},drawRectangle:function(a,b){},drawCircle:function(a,b){},removeText:function(a){var b=document.getElementById(a+this.LABEL_ID_SUFFIX);b&&this.textRoot.removeChild(b);(a=document.getElementById(a+this.LABEL_OUTLINE_SUFFIX))&&this.textRoot.removeChild(a)},
+getFeatureIdFromEvent:function(a){var b=a.target,c=b&&b.correspondingUseElement;return(c?c:b||a.srcElement)._featureId},eraseGeometry:function(a,b){if("OpenLayers.Geometry.MultiPoint"==a.CLASS_NAME||"OpenLayers.Geometry.MultiLineString"==a.CLASS_NAME||"OpenLayers.Geometry.MultiPolygon"==a.CLASS_NAME||"OpenLayers.Geometry.Collection"==a.CLASS_NAME)for(var c=0,d=a.components.length;c<d;c++)this.eraseGeometry(a.components[c],b);else(c=OpenLayers.Util.getElement(a.id))&&c.parentNode&&(c.geometry&&(c.geometry.destroy(),
+c.geometry=null),c.parentNode.removeChild(c),this.indexer&&this.indexer.remove(c),c._style.backgroundGraphic&&(c=OpenLayers.Util.getElement(a.id+this.BACKGROUND_ID_SUFFIX))&&c.parentNode&&c.parentNode.removeChild(c))},nodeFactory:function(a,b){var c=OpenLayers.Util.getElement(a);c?this.nodeTypeCompare(c,b)||(c.parentNode.removeChild(c),c=this.nodeFactory(a,b)):c=this.createNode(b,a);return c},nodeTypeCompare:function(a,b){},createNode:function(a,b){},moveRoot:function(a){var b=this.root;a.root.parentNode==
+this.rendererRoot&&(b=a.root);b.parentNode.removeChild(b);a.rendererRoot.appendChild(b)},getRenderLayerId:function(){return this.root.parentNode.parentNode.id},isComplexSymbol:function(a){return"circle"!=a&&!!a},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(a){if(this.supported()){if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);for(var b=document.createStyleSheet(),c="shape rect oval fill stroke imagedata group textbox".split(" "),d=0,e=c.length;d<e;d++)b.addRule("olv\\:"+c[d],"behavior: url(#default#VML); position: absolute; display: inline-block;")}OpenLayers.Renderer.Elements.prototype.initialize.apply(this,
+arguments)}},supported:function(){return!!document.namespaces},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=a.left/d|0,d=a.top/d-this.size.h|0;b||!this.offset?(this.offset={x:e,y:d},d=e=0):(e-=this.offset.x,d-=this.offset.y);this.root.coordorigin=e-this.xOffset+" "+d;for(var e=[this.root,this.vectorRoot,this.textRoot],f=0,g=e.length;f<g;++f)d=e[f],d.coordsize=this.size.w+" "+this.size.h;this.root.style.flip="y";return c},
+setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);for(var b=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot],c=this.size.w+"px",d=this.size.h+"px",e,f=0,g=b.length;f<g;++f)e=b[f],e.style.width=c,e.style.height=d},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"olv:rect":this.isComplexSymbol(b.graphicName)?"olv:shape":"olv:oval";break;case "OpenLayers.Geometry.Rectangle":c="olv:rect";break;case "OpenLayers.Geometry.LineString":case "OpenLayers.Geometry.LinearRing":case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c=
+"olv:shape"}return c},setStyle:function(a,b,c,d){b=b||a._style;c=c||a._options;var e=b.fillColor,f=b.title||b.graphicTitle;f&&(a.title=f);if("OpenLayers.Geometry.Point"===a._geometryClass)if(b.externalGraphic){c.isFilled=!0;var e=b.graphicWidth||b.graphicHeight,f=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,f=f?f:2*b.pointRadius,g=this.getResolution(),h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*f);a.style.left=((d.x-this.featureDx)/
+g-this.offset.x+h|0)+"px";a.style.top=(d.y/g-this.offset.y-(k+f)|0)+"px";a.style.width=e+"px";a.style.height=f+"px";a.style.flip="y";e="none";c.isStroked=!1}else this.isComplexSymbol(b.graphicName)?(f=this.importSymbol(b.graphicName),a.path=f.path,a.coordorigin=f.left+","+f.bottom,f=f.size,a.coordsize=f+","+f,this.drawCircle(a,d,b.pointRadius),a.style.flip="y"):this.drawCircle(a,d,b.pointRadius);c.isFilled?a.fillcolor=e:a.filled="false";d=a.getElementsByTagName("fill");d=0==d.length?null:d[0];c.isFilled?
+(d||(d=this.createNode("olv:fill",a.id+"_fill")),d.opacity=b.fillOpacity,"OpenLayers.Geometry.Point"===a._geometryClass&&b.externalGraphic&&(b.graphicOpacity&&(d.opacity=b.graphicOpacity),d.src=b.externalGraphic,d.type="frame",b.graphicWidth&&b.graphicHeight||(d.aspect="atmost")),d.parentNode!=a&&a.appendChild(d)):d&&a.removeChild(d);e=b.rotation;if(void 0!==e||void 0!==a._rotation)a._rotation=e,b.externalGraphic?(this.graphicRotate(a,h,k,b),d.opacity=0):"OpenLayers.Geometry.Point"===a._geometryClass&&
+(a.style.rotation=e||0);h=a.getElementsByTagName("stroke");h=0==h.length?null:h[0];c.isStroked?(h||(h=this.createNode("olv:stroke",a.id+"_stroke"),a.appendChild(h)),h.on=!0,h.color=b.strokeColor,h.weight=b.strokeWidth+"px",h.opacity=b.strokeOpacity,h.endcap="butt"==b.strokeLinecap?"flat":b.strokeLinecap||"round",b.strokeDashstyle&&(h.dashstyle=this.dashStyle(b))):(a.stroked=!1,h&&(h.on=!1));"inherit"!=b.cursor&&null!=b.cursor&&(a.style.cursor=b.cursor);return a},graphicRotate:function(a,b,c,d){d=
+d||a._style;var e=d.rotation||0,f,g;if(d.graphicWidth&&d.graphicHeight){g=Math.max(d.graphicWidth,d.graphicHeight);f=d.graphicWidth/d.graphicHeight;var h=Math.round(d.graphicWidth||g*f),k=Math.round(d.graphicHeight||g);a.style.width=h+"px";a.style.height=k+"px";var l=document.getElementById(a.id+"_image");l||(l=this.createNode("olv:imagedata",a.id+"_image"),a.appendChild(l));l.style.width=h+"px";l.style.height=k+"px";l.src=d.externalGraphic;l.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='', sizingMethod='scale')";
+l=e*Math.PI/180;e=Math.sin(l);l=Math.cos(l);e="progid:DXImageTransform.Microsoft.Matrix(M11="+l+",M12="+-e+",M21="+e+",M22="+l+",SizingMethod='auto expand')\n";(l=d.graphicOpacity||d.fillOpacity)&&1!=l&&(e+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+l+")\n");a.style.filter=e;e=new OpenLayers.Geometry.Point(-b,-c);h=(new OpenLayers.Bounds(0,0,h,k)).toGeometry();h.rotate(d.rotation,e);h=h.getBounds();a.style.left=Math.round(parseInt(a.style.left)+h.left)+"px";a.style.top=Math.round(parseInt(a.style.top)-
+h.bottom)+"px"}else{var m=new Image;m.onreadystatechange=OpenLayers.Function.bind(function(){if("complete"==m.readyState||"interactive"==m.readyState)f=m.width/m.height,g=Math.max(2*d.pointRadius,d.graphicWidth||0,d.graphicHeight||0),b*=f,d.graphicWidth=g*f,d.graphicHeight=g,this.graphicRotate(a,b,c,d)},this);m.src=d.externalGraphic}},postDraw:function(a){a.style.visibility="visible";var b=a._style.fillColor,c=a._style.strokeColor;"none"==b&&a.fillcolor!=b&&(a.fillcolor=b);"none"==c&&a.strokecolor!=
+c&&(a.strokecolor=c)},setNodeDimension:function(a,b){var c=b.getBounds();if(c){var d=this.getResolution(),c=new OpenLayers.Bounds((c.left-this.featureDx)/d-this.offset.x|0,c.bottom/d-this.offset.y|0,(c.right-this.featureDx)/d-this.offset.x|0,c.top/d-this.offset.y|0);a.style.left=c.left+"px";a.style.top=c.top+"px";a.style.width=c.getWidth()+"px";a.style.height=c.getHeight()+"px";a.coordorigin=c.left+" "+c.top;a.coordsize=c.getWidth()+" "+c.getHeight()}},dashStyle:function(a){a=a.strokeDashstyle;switch(a){case "solid":case "dot":case "dash":case "dashdot":case "longdash":case "longdashdot":return a;
+default:return a=a.split(/[ ,]/),2==a.length?1*a[0]>=2*a[1]?"longdash":1==a[0]||1==a[1]?"dot":"dash":4==a.length?1*a[0]>=2*a[1]?"longdashdot":"dashdot":"solid"}},createNode:function(a,b){var c=document.createElement(a);b&&(c.id=b);c.unselectable="on";c.onselectstart=OpenLayers.Function.False;return c},nodeTypeCompare:function(a,b){var c=b,d=c.indexOf(":");-1!=d&&(c=c.substr(d+1));var e=a.nodeName,d=e.indexOf(":");-1!=d&&(e=e.substr(d+1));return c==e},createRenderRoot:function(){return this.nodeFactory(this.container.id+
+"_vmlRoot","div")},createRoot:function(a){return this.nodeFactory(this.container.id+a,"olv:group")},drawPoint:function(a,b){return this.drawCircle(a,b,1)},drawCircle:function(a,b,c){if(!isNaN(b.x)&&!isNaN(b.y)){var d=this.getResolution();a.style.left=((b.x-this.featureDx)/d-this.offset.x|0)-c+"px";a.style.top=(b.y/d-this.offset.y|0)-c+"px";b=2*c;a.style.width=b+"px";a.style.height=b+"px";return a}return!1},drawLineString:function(a,b){return this.drawLine(a,b,!1)},drawLinearRing:function(a,b){return this.drawLine(a,
+b,!0)},drawLine:function(a,b,c){this.setNodeDimension(a,b);for(var d=this.getResolution(),e=b.components.length,f=Array(e),g,h,k=0;k<e;k++)g=b.components[k],h=(g.x-this.featureDx)/d-this.offset.x|0,g=g.y/d-this.offset.y|0,f[k]=" "+h+","+g+" l ";b=c?" x e":" e";a.path="m"+f.join("")+b;return a},drawPolygon:function(a,b){this.setNodeDimension(a,b);var c=this.getResolution(),d=[],e,f,g,h,k,l,m,r,p,n;e=0;for(f=b.components.length;e<f;e++){d.push("m");g=b.components[e].components;h=0===e;l=k=null;m=0;
+for(r=g.length;m<r;m++)p=g[m],n=(p.x-this.featureDx)/c-this.offset.x|0,p=p.y/c-this.offset.y|0,n=" "+n+","+p,d.push(n),0==m&&d.push(" l"),h||(k?k!=n&&(l?l!=n&&(h=!0):l=n):k=n);d.push(h?" x ":" ")}d.push("e");a.path=d.join("");return a},drawRectangle:function(a,b){var c=this.getResolution();a.style.left=((b.x-this.featureDx)/c-this.offset.x|0)+"px";a.style.top=(b.y/c-this.offset.y|0)+"px";a.style.width=(b.width/c|0)+"px";a.style.height=(b.height/c|0)+"px";return a},drawText:function(a,b,c){var d=this.nodeFactory(a+
+this.LABEL_ID_SUFFIX,"olv:rect"),e=this.nodeFactory(a+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox"),f=this.getResolution();d.style.left=((c.x-this.featureDx)/f-this.offset.x|0)+"px";d.style.top=(c.y/f-this.offset.y|0)+"px";d.style.flip="y";e.innerText=b.label;"inherit"!=b.cursor&&null!=b.cursor&&(e.style.cursor=b.cursor);b.fontColor&&(e.style.color=b.fontColor);b.fontOpacity&&(e.style.filter="alpha(opacity="+100*b.fontOpacity+")");b.fontFamily&&(e.style.fontFamily=b.fontFamily);b.fontSize&&(e.style.fontSize=
+b.fontSize);b.fontWeight&&(e.style.fontWeight=b.fontWeight);b.fontStyle&&(e.style.fontStyle=b.fontStyle);!0===b.labelSelect&&(d._featureId=a,e._featureId=a,e._geometry=c,e._geometryClass=c.CLASS_NAME);e.style.whiteSpace="nowrap";e.inset="1px,0px,0px,0px";d.parentNode||(d.appendChild(e),this.textRoot.appendChild(d));b=b.labelAlign||"cm";1==b.length&&(b+="m");a=e.clientWidth*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(0,1)];e=e.clientHeight*OpenLayers.Renderer.VML.LABEL_SHIFT[b.substr(1,1)];d.style.left=
+parseInt(d.style.left)-a-1+"px";d.style.top=parseInt(d.style.top)+e+"px"},moveRoot:function(a){var b=this.map.getLayer(a.container.id);b instanceof OpenLayers.Layer.Vector.RootContainer&&(b=this.map.getLayer(this.container.id));b&&b.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);b&&b.redraw()},importSymbol:function(a){var b=this.container.id+"-"+a,c=this.symbolCache[b];if(c)return c;c=OpenLayers.Renderer.symbol[a];if(!c)throw Error(a+" is not a valid symbol name");
+a=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);for(var d=["m"],e=0;e<c.length;e+=2){var f=c[e],g=c[e+1];a.left=Math.min(a.left,f);a.bottom=Math.min(a.bottom,g);a.right=Math.max(a.right,f);a.top=Math.max(a.top,g);d.push(f);d.push(g);0==e&&d.push("l")}d.push("x e");c=d.join(" ");d=(a.getWidth()-a.getHeight())/2;0<d?(a.bottom-=d,a.top+=d):(a.left+=d,a.right-=d);c={path:c,size:a.getWidth(),left:a.left,bottom:a.bottom};return this.symbolCache[b]=c},CLASS_NAME:"OpenLayers.Renderer.VML"});
+OpenLayers.Renderer.VML.LABEL_SHIFT={l:0,c:0.5,r:1,t:0,m:0.5,b:1};OpenLayers.Util=OpenLayers.Util||{};
+OpenLayers.Util.vendorPrefix=function(){function a(a){return a?a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}).replace(/^ms-/,"-ms-"):null}function b(a,b){if(void 0===g[b]){var c,e=0,f=d.length,p="undefined"!==typeof a.cssText;for(g[b]=null;e<f;e++)if((c=d[e])?(p||(c=c.toLowerCase()),c=c+b.charAt(0).toUpperCase()+b.slice(1)):c=b,void 0!==a[c]){g[b]=c;break}}return g[b]}function c(a){return b(e,a)}var d=["","O","ms","Moz","Webkit"],e=document.createElement("div").style,f={},g={};return{css:function(b){if(void 0===
+f[b]){var d=b.replace(/(-[\s\S])/g,function(a){return a.charAt(1).toUpperCase()}),d=c(d);f[b]=a(d)}return f[b]},js:b,style:c,cssCache:f,jsCache:g}}();OpenLayers.Animation=function(a){var b=OpenLayers.Util.vendorPrefix.js(a,"requestAnimationFrame"),c=!!b,d=function(){var c=a[b]||function(b,c){a.setTimeout(b,16)};return function(b,d){c.apply(a,[b,d])}}(),e=0,f={};return{isNative:c,requestFrame:d,start:function(a,b,c){b=0<b?b:Number.POSITIVE_INFINITY;var l=++e,m=+new Date;f[l]=function(){f[l]&&+new Date-m<=b?(a(),f[l]&&d(f[l],c)):delete f[l]};d(f[l],c);return l},stop:function(a){delete f[a]}}}(window);OpenLayers.Tween=OpenLayers.Class({easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,minFrameRate:null,startTime:null,animationId:null,playing:!1,initialize:function(a){this.easing=a?a:OpenLayers.Easing.Expo.easeOut},start:function(a,b,c,d){this.playing=!0;this.begin=a;this.finish=b;this.duration=c;this.callbacks=d.callbacks;this.minFrameRate=d.minFrameRate||30;this.time=0;this.startTime=(new Date).getTime();OpenLayers.Animation.stop(this.animationId);this.animationId=null;
+this.callbacks&&this.callbacks.start&&this.callbacks.start.call(this,this.begin);this.animationId=OpenLayers.Animation.start(OpenLayers.Function.bind(this.play,this))},stop:function(){this.playing&&(this.callbacks&&this.callbacks.done&&this.callbacks.done.call(this,this.finish),OpenLayers.Animation.stop(this.animationId),this.animationId=null,this.playing=!1)},play:function(){var a={},b;for(b in this.begin){var c=this.begin[b],d=this.finish[b];if(null==c||null==d||isNaN(c)||isNaN(d))throw new TypeError("invalid value for Tween");
+a[b]=this.easing.apply(this,[this.time,c,d-c,this.duration])}this.time++;this.callbacks&&this.callbacks.eachStep&&((new Date).getTime()-this.startTime)/this.time<=1E3/this.minFrameRate&&this.callbacks.eachStep.call(this,a);this.time>this.duration&&this.stop()},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(a,b,c,d){return c*a/d+b},easeOut:function(a,b,c,d){return c*a/d+b},easeInOut:function(a,b,c,d){return c*a/d+b},CLASS_NAME:"OpenLayers.Easing.Linear"};
+OpenLayers.Easing.Expo={easeIn:function(a,b,c,d){return 0==a?b:c*Math.pow(2,10*(a/d-1))+b},easeOut:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOut:function(a,b,c,d){return 0==a?b:a==d?b+c:1>(a/=d/2)?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},CLASS_NAME:"OpenLayers.Easing.Expo"};
+OpenLayers.Easing.Quad={easeIn:function(a,b,c,d){return c*(a/=d)*a+b},easeOut:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOut:function(a,b,c,d){return 1>(a/=d/2)?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.bounds=this.id=null},clone:function(){return new OpenLayers.Geometry},setBounds:function(a){a&&(this.bounds=a.clone())},clearBounds:function(){this.bounds=null;this.parent&&this.parent.clearBounds()},extendBounds:function(a){this.getBounds()?this.bounds.extend(a):this.setBounds(a)},getBounds:function(){null==this.bounds&&this.calculateBounds();
+return this.bounds},calculateBounds:function(){},distanceTo:function(a,b){},getVertices:function(a){},atPoint:function(a,b,c){var d=!1;null!=this.getBounds()&&null!=a&&(b=null!=b?b:0,c=null!=c?c:0,d=(new OpenLayers.Bounds(this.bounds.left-b,this.bounds.bottom-c,this.bounds.right+b,this.bounds.top+c)).containsLonLat(a));return d},getLength:function(){return 0},getArea:function(){return 0},getCentroid:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.WKT?OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this)):
+Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(a){var b;if(OpenLayers.Format&&OpenLayers.Format.WKT){var c=OpenLayers.Geometry.fromWKT.format;c||(c=new OpenLayers.Format.WKT,OpenLayers.Geometry.fromWKT.format=c);a=c.read(a);if(a instanceof OpenLayers.Feature.Vector)b=a.geometry;else if(OpenLayers.Util.isArray(a)){b=a.length;for(var c=Array(b),d=0;d<b;++d)c[d]=a[d].geometry;b=new OpenLayers.Geometry.Collection(c)}}return b};
+OpenLayers.Geometry.segmentsIntersect=function(a,b,c){var d=c&&c.point;c=c&&c.tolerance;var e=!1,f=a.x1-b.x1,g=a.y1-b.y1,h=a.x2-a.x1,k=a.y2-a.y1,l=b.y2-b.y1,m=b.x2-b.x1,r=l*h-m*k,l=m*g-l*f,g=h*g-k*f;0==r?0==l&&0==g&&(e=!0):(f=l/r,r=g/r,0<=f&&1>=f&&0<=r&&1>=r&&(d?(h=a.x1+f*h,r=a.y1+f*k,e=new OpenLayers.Geometry.Point(h,r)):e=!0));if(c)if(e){if(d)a:for(a=[a,b],b=0;2>b;++b)for(f=a[b],k=1;3>k;++k)if(h=f["x"+k],r=f["y"+k],d=Math.sqrt(Math.pow(h-e.x,2)+Math.pow(r-e.y,2)),d<c){e.x=h;e.y=r;break a}}else a:for(a=
+[a,b],b=0;2>b;++b)for(h=a[b],r=a[(b+1)%2],k=1;3>k;++k)if(f={x:h["x"+k],y:h["y"+k]},g=OpenLayers.Geometry.distanceToSegment(f,r),g.distance<c){e=d?new OpenLayers.Geometry.Point(f.x,f.y):!0;break a}return e};OpenLayers.Geometry.distanceToSegment=function(a,b){var c=OpenLayers.Geometry.distanceSquaredToSegment(a,b);c.distance=Math.sqrt(c.distance);return c};
+OpenLayers.Geometry.distanceSquaredToSegment=function(a,b){var c=a.x,d=a.y,e=b.x1,f=b.y1,g=b.x2,h=b.y2,k=g-e,l=h-f,m=(k*(c-e)+l*(d-f))/(Math.pow(k,2)+Math.pow(l,2));0>=m||(1<=m?(e=g,f=h):(e+=m*k,f+=m*l));return{distance:Math.pow(e-c,2)+Math.pow(f-d,2),x:e,y:f,along:m}};OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(a){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];null!=a&&this.addComponents(a)},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments)},clone:function(){for(var a=eval("new "+this.CLASS_NAME+"()"),b=0,c=this.components.length;b<c;b++)a.addComponent(this.components[b].clone());
+OpenLayers.Util.applyDefaults(a,this);return a},getComponentsString:function(){for(var a=[],b=0,c=this.components.length;b<c;b++)a.push(this.components[b].toShortString());return a.join(",")},calculateBounds:function(){this.bounds=null;var a=new OpenLayers.Bounds,b=this.components;if(b)for(var c=0,d=b.length;c<d;c++)a.extend(b[c].getBounds());null!=a.left&&null!=a.bottom&&null!=a.right&&null!=a.top&&this.setBounds(a)},addComponents:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0,c=a.length;b<
+c;b++)this.addComponent(a[b])},addComponent:function(a,b){var c=!1;if(a&&(null==this.componentTypes||-1<OpenLayers.Util.indexOf(this.componentTypes,a.CLASS_NAME))){if(null!=b&&b<this.components.length){var c=this.components.slice(0,b),d=this.components.slice(b,this.components.length);c.push(a);this.components=c.concat(d)}else this.components.push(a);a.parent=this;this.clearBounds();c=!0}return c},removeComponents:function(a){var b=!1;OpenLayers.Util.isArray(a)||(a=[a]);for(var c=a.length-1;0<=c;--c)b=
+this.removeComponent(a[c])||b;return b},removeComponent:function(a){OpenLayers.Util.removeItem(this.components,a);this.clearBounds();return!0},getLength:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getLength();return a},getArea:function(){for(var a=0,b=0,c=this.components.length;b<c;b++)a+=this.components[b].getArea();return a},getGeodesicArea:function(a){for(var b=0,c=0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicArea(a);return b},getCentroid:function(a){if(!a)return this.components.length&&
+this.components[0].getCentroid();a=this.components.length;if(!a)return!1;for(var b=[],c=[],d=0,e=Number.MAX_VALUE,f,g=0;g<a;++g){f=this.components[g];var h=f.getArea();f=f.getCentroid(!0);isNaN(h)||isNaN(f.x)||isNaN(f.y)||(b.push(h),d+=h,e=h<e&&0<h?h:e,c.push(f))}a=b.length;if(0===d){for(g=0;g<a;++g)b[g]=1;d=b.length}else{for(g=0;g<a;++g)b[g]/=e;d/=e}for(var k=e=0,g=0;g<a;++g)f=c[g],h=b[g],e+=f.x*h,k+=f.y*h;return new OpenLayers.Geometry.Point(e/d,k/d)},getGeodesicLength:function(a){for(var b=0,c=
+0,d=this.components.length;c<d;c++)b+=this.components[c].getGeodesicLength(a);return b},move:function(a,b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0;d<this.components.length;++d)this.components[d].resize(a,b,c);return this},distanceTo:function(a,b){for(var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g=Number.POSITIVE_INFINITY,h=0,k=this.components.length;h<
+k&&!(d=this.components[h].distanceTo(a,b),f=c?d.distance:d,f<g&&(g=f,e=d,0==g));++h);return e},equals:function(a){var b=!0;if(a&&a.CLASS_NAME&&this.CLASS_NAME==a.CLASS_NAME)if(OpenLayers.Util.isArray(a.components)&&a.components.length==this.components.length)for(var c=0,d=this.components.length;c<d;++c){if(!this.components[c].equals(a.components[c])){b=!1;break}}else b=!1;else b=!1;return b},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d;c++)this.components[c].transform(a,
+b);this.bounds=null}return this},intersects:function(a){for(var b=!1,c=0,d=this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);return b},getVertices:function(a){for(var b=[],c=0,d=this.components.length;c<d;++c)Array.prototype.push.apply(b,this.components[c].getVertices(a));return b},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(a,b){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b)},clone:function(a){null==a&&(a=new OpenLayers.Geometry.Point(this.x,this.y));OpenLayers.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e,f,g,h;a instanceof
+OpenLayers.Geometry.Point?(e=this.x,f=this.y,g=a.x,h=a.y,d=Math.sqrt(Math.pow(e-g,2)+Math.pow(f-h,2)),d=c?{x0:e,y0:f,x1:g,y1:h,distance:d}:d):(d=a.distanceTo(this,b),c&&(d={x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0,distance:d.distance}));return d},equals:function(a){var b=!1;null!=a&&(b=this.x==a.x&&this.y==a.y||isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y));return b},toShortString:function(){return this.x+", "+this.y},move:function(a,b){this.x+=a;this.y+=b;this.clearBounds()},rotate:function(a,b){a*=
+Math.PI/180;var c=this.distanceTo(b),d=a+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+c*Math.cos(d);this.y=b.y+c*Math.sin(d);this.clearBounds()},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y)},resize:function(a,b,c){this.x=b.x+a*(void 0==c?1:c)*(this.x-b.x);this.y=b.y+a*(this.y-b.y);this.clearBounds();return this},intersects:function(a){var b=!1;return b="OpenLayers.Geometry.Point"==a.CLASS_NAME?this.equals(a):a.intersects(this)},transform:function(a,b){a&&b&&(OpenLayers.Projection.transform(this,
+a,b),this.bounds=null);return this},getVertices:function(a){return[this]},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],getLength:function(){var a=0;if(this.components&&1<this.components.length)for(var b=1,c=this.components.length;b<c;b++)a+=this.components[b-1].distanceTo(this.components[b]);return a},getGeodesicLength:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;if(b.components&&1<b.components.length)for(var d,e=1,f=b.components.length;e<
+f;e++)c=b.components[e-1],d=b.components[e],a+=OpenLayers.Util.distVincenty({lon:c.x,lat:c.y},{lon:d.x,lat:d.y});return 1E3*a},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{removeComponent:function(a){var b=this.components&&2<this.components.length;b&&OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);return b},intersects:function(a){var b=!1,c=a.CLASS_NAME;if("OpenLayers.Geometry.LineString"==c||"OpenLayers.Geometry.LinearRing"==c||"OpenLayers.Geometry.Point"==c){var d=this.getSortedSegments();a="OpenLayers.Geometry.Point"==c?[{x1:a.x,y1:a.y,x2:a.x,y2:a.y}]:a.getSortedSegments();
+var e,f,g,h,k,l,m,r=0,p=d.length;a:for(;r<p;++r){c=d[r];e=c.x1;f=c.x2;g=c.y1;h=c.y2;var n=0,q=a.length;for(;n<q;++n){k=a[n];if(k.x1>f)break;if(!(k.x2<e||(l=k.y1,m=k.y2,Math.min(l,m)>Math.max(g,h)||Math.max(l,m)<Math.min(g,h)||!OpenLayers.Geometry.segmentsIntersect(c,k)))){b=!0;break a}}}}else b=a.intersects(this);return b},getSortedSegments:function(){for(var a=this.components.length-1,b=Array(a),c,d,e=0;e<a;++e)c=this.components[e],d=this.components[e+1],b[e]=c.x<d.x?{x1:c.x,y1:c.y,x2:d.x,y2:d.y}:
+{x1:d.x,y1:d.y,x2:c.x,y2:c.y};return b.sort(function(a,b){return a.x1-b.x1})},splitWithSegment:function(a,b){for(var c=!(b&&!1===b.edge),d=b&&b.tolerance,e=[],f=this.getVertices(),g=[],h=[],k=!1,l,m,r,p={point:!0,tolerance:d},n=null,q=0,s=f.length-2;q<=s;++q)if(d=f[q],g.push(d.clone()),l=f[q+1],m={x1:d.x,y1:d.y,x2:l.x,y2:l.y},m=OpenLayers.Geometry.segmentsIntersect(a,m,p),m instanceof OpenLayers.Geometry.Point&&((r=m.x===a.x1&&m.y===a.y1||m.x===a.x2&&m.y===a.y2||m.equals(d)||m.equals(l)?!0:!1)||c))m.equals(h[h.length-
+1])||h.push(m.clone()),0===q&&m.equals(d)||m.equals(l)||(k=!0,m.equals(d)||g.push(m),e.push(new OpenLayers.Geometry.LineString(g)),g=[m.clone()]);k&&(g.push(l.clone()),e.push(new OpenLayers.Geometry.LineString(g)));if(0<h.length)var t=a.x1<a.x2?1:-1,u=a.y1<a.y2?1:-1,n={lines:e,points:h.sort(function(a,b){return t*a.x-t*b.x||u*a.y-u*b.y})};return n},split:function(a,b){var c=null,d=b&&b.mutual,e,f,g,h;if(a instanceof OpenLayers.Geometry.LineString){var k=this.getVertices(),l,m,r,p,n,q=[];g=[];for(var s=
+0,t=k.length-2;s<=t;++s){l=k[s];m=k[s+1];r={x1:l.x,y1:l.y,x2:m.x,y2:m.y};h=h||[a];d&&q.push(l.clone());for(var u=0;u<h.length;++u)if(p=h[u].splitWithSegment(r,b))if(n=p.lines,0<n.length&&(n.unshift(u,1),Array.prototype.splice.apply(h,n),u+=n.length-2),d)for(var v=0,w=p.points.length;v<w;++v)n=p.points[v],n.equals(l)||(q.push(n),g.push(new OpenLayers.Geometry.LineString(q)),q=n.equals(m)?[]:[n.clone()])}d&&0<g.length&&0<q.length&&(q.push(m.clone()),g.push(new OpenLayers.Geometry.LineString(q)))}else c=
+a.splitWith(this,b);h&&1<h.length?f=!0:h=[];g&&1<g.length?e=!0:g=[];if(f||e)c=d?[g,h]:h;return c},splitWith:function(a,b){return a.split(this,b)},getVertices:function(a){return!0===a?[this.components[0],this.components[this.components.length-1]]:!1===a?this.components.slice(1,this.components.length-1):this.components.slice()},distanceTo:function(a,b){var c=!(b&&!1===b.edge)&&b&&b.details,d,e={},f=Number.POSITIVE_INFINITY;if(a instanceof OpenLayers.Geometry.Point){for(var g=this.getSortedSegments(),
+h=a.x,k=a.y,l,m=0,r=g.length;m<r;++m)if(l=g[m],d=OpenLayers.Geometry.distanceToSegment(a,l),d.distance<f){if(f=d.distance,e=d,0===f)break}else if(l.x2>h&&(k>l.y1&&k<l.y2||k<l.y1&&k>l.y2))break;e=c?{distance:e.distance,x0:e.x,y0:e.y,x1:h,y1:k}:e.distance}else if(a instanceof OpenLayers.Geometry.LineString){var g=this.getSortedSegments(),h=a.getSortedSegments(),p,n,q=h.length,s={point:!0},m=0,r=g.length;a:for(;m<r;++m){k=g[m];l=k.x1;n=k.y1;for(var t=0;t<q;++t)if(d=h[t],p=OpenLayers.Geometry.segmentsIntersect(k,
+d,s)){f=0;e={distance:0,x0:p.x,y0:p.y,x1:p.x,y1:p.y};break a}else d=OpenLayers.Geometry.distanceToSegment({x:l,y:n},d),d.distance<f&&(f=d.distance,e={distance:f,x0:l,y0:n,x1:d.x,y1:d.y})}c||(e=e.distance);0!==f&&k&&(d=a.distanceTo(new OpenLayers.Geometry.Point(k.x2,k.y2),b),m=c?d.distance:d,m<f&&(e=c?{distance:f,x0:d.x1,y0:d.y1,x1:d.x0,y1:d.y0}:m))}else e=a.distanceTo(this,b),c&&(e={distance:e.distance,x0:e.x1,y0:e.y1,x1:e.x0,y1:e.y0});return e},simplify:function(a){if(this&&null!==this){var b=this.getVertices();
+if(3>b.length)return this;var c=function(a,b,d,k){for(var l=0,m=0,r=b,p;r<d;r++){p=a[b];var n=a[d],q=a[r],q=Math.abs(0.5*(p.x*n.y+n.x*q.y+q.x*p.y-n.x*p.y-q.x*n.y-p.x*q.y));p=Math.sqrt(Math.pow(p.x-n.x,2)+Math.pow(p.y-n.y,2));p=2*(q/p);p>l&&(l=p,m=r)}l>k&&m!=b&&(e.push(m),c(a,b,m,k),c(a,m,d,k))},d=b.length-1,e=[];e.push(0);for(e.push(d);b[0].equals(b[d]);)d--,e.push(d);c(b,0,d,a);a=[];e.sort(function(a,b){return a-b});for(d=0;d<e.length;d++)a.push(b[e[d]]);return new OpenLayers.Geometry.LineString(a)}return this},
+CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],addComponent:function(a,b){var c=!1,d=this.components.pop();null==b&&a.equals(d)||(c=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments));OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]);return c},removeComponent:function(a){var b=this.components&&3<this.components.length;b&&(this.components.pop(),OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,
+arguments),OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[this.components[0]]));return b},move:function(a,b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].move(a,b)},rotate:function(a,b){for(var c=0,d=this.components.length;c<d-1;++c)this.components[c].rotate(a,b)},resize:function(a,b,c){for(var d=0,e=this.components.length;d<e-1;++d)this.components[d].resize(a,b,c);return this},transform:function(a,b){if(a&&b){for(var c=0,d=this.components.length;c<d-1;c++)this.components[c].transform(a,
+b);this.bounds=null}return this},getCentroid:function(){if(this.components){var a=this.components.length;if(0<a&&2>=a)return this.components[0].clone();if(2<a){var b=0,c=0,d=this.components[0].x,e=this.components[0].y,f=-1*this.getArea();if(0!=f){for(var g=0;g<a-1;g++)var h=this.components[g],k=this.components[g+1],b=b+(h.x+k.x-2*d)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e)),c=c+(h.y+k.y-2*e)*((h.x-d)*(k.y-e)-(k.x-d)*(h.y-e));b=d+b/(6*f);a=e+c/(6*f)}else{for(g=0;g<a-1;g++)b+=this.components[g].x,c+=this.components[g].y;
+b/=a-1;a=c/(a-1)}return new OpenLayers.Geometry.Point(b,a)}return null}},getArea:function(){var a=0;if(this.components&&2<this.components.length){for(var b=a=0,c=this.components.length;b<c-1;b++)var d=this.components[b],e=this.components[b+1],a=a+(d.x+e.x)*(e.y-d.y);a=-a/2}return a},getGeodesicArea:function(a){var b=this;if(a){var c=new OpenLayers.Projection("EPSG:4326");c.equals(a)||(b=this.clone().transform(a,c))}a=0;c=b.components&&b.components.length;if(2<c){for(var d,e,f=0;f<c-1;f++)d=b.components[f],
+e=b.components[f+1],a+=OpenLayers.Util.rad(e.x-d.x)*(2+Math.sin(OpenLayers.Util.rad(d.y))+Math.sin(OpenLayers.Util.rad(e.y)));a=40680631590769*a/2}return a},containsPoint:function(a){var b=OpenLayers.Number.limitSigDigs,c=b(a.x,14);a=b(a.y,14);for(var d=this.components.length-1,e,f,g,h,k,l=0,m=0;m<d;++m)if(e=this.components[m],g=b(e.x,14),e=b(e.y,14),f=this.components[m+1],h=b(f.x,14),f=b(f.y,14),e==f){if(a==e&&(g<=h&&c>=g&&c<=h||g>=h&&c<=g&&c>=h)){l=-1;break}}else{k=b((a-f)*((h-g)/(f-e))+h,14);if(k==
+c&&(e<f&&a>=e&&a<=f||e>f&&a<=e&&a>=f)){l=-1;break}k<=c||g!=h&&(k<Math.min(g,h)||k>Math.max(g,h))||(e<f&&a>=e&&a<f||e>f&&a<e&&a>=f)&&++l}return-1==l?1:!!(l&1)},intersects:function(a){var b=!1;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME)b=a.intersects(this);else if("OpenLayers.Geometry.LinearRing"==a.CLASS_NAME)b=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[a]);else for(var c=0,d=a.components.length;c<
+d&&!(b=a.components[c].intersects(this));++c);return b},getVertices:function(a){return!0===a?[]:this.components.slice(0,this.components.length-1)},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],getArea:function(){var a=0;if(this.components&&0<this.components.length)for(var a=a+Math.abs(this.components[0].getArea()),b=1,c=this.components.length;b<c;b++)a-=Math.abs(this.components[b].getArea());return a},getGeodesicArea:function(a){var b=0;if(this.components&&0<this.components.length)for(var b=b+Math.abs(this.components[0].getGeodesicArea(a)),c=1,d=this.components.length;c<
+d;c++)b-=Math.abs(this.components[c].getGeodesicArea(a));return b},containsPoint:function(a){var b=this.components.length,c=!1;if(0<b&&(c=this.components[0].containsPoint(a),1!==c&&c&&1<b))for(var d,e=1;e<b;++e)if(d=this.components[e].containsPoint(a)){c=1===d?1:!1;break}return c},intersects:function(a){var b=!1,c,d;if("OpenLayers.Geometry.Point"==a.CLASS_NAME)b=this.containsPoint(a);else if("OpenLayers.Geometry.LineString"==a.CLASS_NAME||"OpenLayers.Geometry.LinearRing"==a.CLASS_NAME){c=0;for(d=
+this.components.length;c<d&&!(b=a.intersects(this.components[c]));++c);if(!b)for(c=0,d=a.components.length;c<d&&!(b=this.containsPoint(a.components[c]));++c);}else for(c=0,d=a.components.length;c<d&&!(b=this.intersects(a.components[c]));++c);if(!b&&"OpenLayers.Geometry.Polygon"==a.CLASS_NAME){var e=this.components[0];c=0;for(d=e.components.length;c<d&&!(b=a.containsPoint(e.components[c]));++c);}return b},distanceTo:function(a,b){return b&&!1===b.edge&&this.intersects(a)?0:OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,
+[a,b])},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(a,b,c,d){var e=Math.PI*(1/c-0.5);d&&(e+=d/180*Math.PI);for(var f,g=[],h=0;h<c;++h)f=e+2*h*Math.PI/c,d=a.x+b*Math.cos(f),f=a.y+b*Math.sin(f),g.push(new OpenLayers.Geometry.Point(d,f));a=new OpenLayers.Geometry.LinearRing(g);return new OpenLayers.Geometry.Polygon([a])};OpenLayers.Event={observers:!1,KEY_SPACE:32,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(a){return a.target||a.srcElement},isSingleTouch:function(a){return a.touches&&1==a.touches.length},isMultiTouch:function(a){return a.touches&&1<a.touches.length},isLeftClick:function(a){return a.which&&1==a.which||a.button&&1==a.button},isRightClick:function(a){return a.which&&3==a.which||a.button&&2==a.button},stop:function(a,
+b){b||OpenLayers.Event.preventDefault(a);a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},findElement:function(a,b){for(var c=OpenLayers.Event.element(a);c.parentNode&&(!c.tagName||c.tagName.toUpperCase()!=b.toUpperCase());)c=c.parentNode;return c},observe:function(a,b,c,d){a=OpenLayers.Util.getElement(a);d=d||!1;"keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.attachEvent)&&(b="keydown");
+this.observers||(this.observers={});if(!a._eventCacheID){var e="eventCacheID_";a.id&&(e=a.id+"_"+e);a._eventCacheID=OpenLayers.Util.createUniqueID(e)}e=a._eventCacheID;this.observers[e]||(this.observers[e]=[]);this.observers[e].push({element:a,name:b,observer:c,useCapture:d});a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},stopObservingElement:function(a){a=OpenLayers.Util.getElement(a)._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[a])},
+_removeElementObservers:function(a){if(a)for(var b=a.length-1;0<=b;b--){var c=a[b];OpenLayers.Event.stopObserving.apply(this,[c.element,c.name,c.observer,c.useCapture])}},stopObserving:function(a,b,c,d){d=d||!1;a=OpenLayers.Util.getElement(a);var e=a._eventCacheID;"keypress"==b&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||a.detachEvent)&&(b="keydown");var f=!1,g=OpenLayers.Event.observers[e];if(g)for(var h=0;!f&&h<g.length;){var k=g[h];if(k.name==b&&k.observer==c&&k.useCapture==d){g.splice(h,
+1);0==g.length&&delete OpenLayers.Event.observers[e];f=!0;break}h++}f&&(a.removeEventListener?a.removeEventListener(b,c,d):a&&a.detachEvent&&a.detachEvent("on"+b,c));return f},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var a in OpenLayers.Event.observers)OpenLayers.Event._removeElementObservers.apply(this,[OpenLayers.Event.observers[a]]);OpenLayers.Event.observers=!1}},CLASS_NAME:"OpenLayers.Event"};
+OpenLayers.Event.observe(window,"unload",OpenLayers.Event.unloadCache,!1);
+OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:"mouseover mouseout mousedown mouseup mousemove click dblclick rightclick dblrightclick resize focus blur touchstart touchmove touchend keydown".split(" "),listeners:null,object:null,element:null,eventHandler:null,fallThrough:null,includeXY:!1,extensions:null,extensionCount:null,clearMouseListener:null,initialize:function(a,b,c,d,e){OpenLayers.Util.extend(this,e);this.object=a;this.fallThrough=d;this.listeners={};this.extensions={};this.extensionCount=
+{};this._msTouches=[];null!=b&&this.attachToElement(b)},destroy:function(){for(var a in this.extensions)"boolean"!==typeof this.extensions[a]&&this.extensions[a].destroy();this.extensions=null;this.element&&(OpenLayers.Event.stopObservingElement(this.element),this.element.hasScrollEvent&&OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener));this.eventHandler=this.fallThrough=this.object=this.listeners=this.element=null},addEventType:function(a){},attachToElement:function(a){this.element?
+OpenLayers.Event.stopObservingElement(this.element):(this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this),this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this));this.element=a;for(var b=!!window.navigator.msMaxTouchPoints,c,d=0,e=this.BROWSER_EVENTS.length;d<e;d++)c=this.BROWSER_EVENTS[d],OpenLayers.Event.observe(a,c,this.eventHandler),b&&0===c.indexOf("touch")&&this.addMsTouchListener(a,c,this.eventHandler);OpenLayers.Event.observe(a,"dragstart",
+OpenLayers.Event.stop)},on:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.register(b,a.scope,a[b])},register:function(a,b,c,d){a in OpenLayers.Events&&!this.extensions[a]&&(this.extensions[a]=new OpenLayers.Events[a](this));if(null!=c){null==b&&(b=this.object);var e=this.listeners[a];e||(e=[],this.listeners[a]=e,this.extensionCount[a]=0);b={obj:b,func:c};d?(e.splice(this.extensionCount[a],0,b),"object"===typeof d&&d.extension&&this.extensionCount[a]++):e.push(b)}},registerPriority:function(a,
+b,c){this.register(a,b,c,!0)},un:function(a){for(var b in a)"scope"!=b&&a.hasOwnProperty(b)&&this.unregister(b,a.scope,a[b])},unregister:function(a,b,c){null==b&&(b=this.object);a=this.listeners[a];if(null!=a)for(var d=0,e=a.length;d<e;d++)if(a[d].obj==b&&a[d].func==c){a.splice(d,1);break}},remove:function(a){null!=this.listeners[a]&&(this.listeners[a]=[])},triggerEvent:function(a,b){var c=this.listeners[a];if(c&&0!=c.length){null==b&&(b={});b.object=this.object;b.element=this.element;b.type||(b.type=
+a);for(var c=c.slice(),d,e=0,f=c.length;e<f&&(d=c[e],d=d.func.apply(d.obj,[b]),void 0==d||!1!=d);e++);this.fallThrough||OpenLayers.Event.stop(b,!0);return d}},handleBrowserEvent:function(a){var b=a.type,c=this.listeners[b];if(c&&0!=c.length){if((c=a.touches)&&c[0]){for(var d=0,e=0,f=c.length,g,h=0;h<f;++h)g=this.getTouchClientXY(c[h]),d+=g.clientX,e+=g.clientY;a.clientX=d/f;a.clientY=e/f}this.includeXY&&(a.xy=this.getMousePosition(a));this.triggerEvent(b,a)}},getTouchClientXY:function(a){var b=window.olMockWin||
+window,c=b.pageXOffset,b=b.pageYOffset,d=a.clientX,e=a.clientY;if(0===a.pageY&&Math.floor(e)>Math.floor(a.pageY)||0===a.pageX&&Math.floor(d)>Math.floor(a.pageX))d-=c,e-=b;else if(e<a.pageY-b||d<a.pageX-c)d=a.pageX-c,e=a.pageY-b;a.olClientX=d;a.olClientY=e;return{clientX:d,clientY:e}},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;this.element.offsets=null},getMousePosition:function(a){this.includeXY?this.element.hasScrollEvent||(OpenLayers.Event.observe(window,"scroll",
+this.clearMouseListener),this.element.hasScrollEvent=!0):this.clearMouseCache();if(!this.element.scrolls){var b=OpenLayers.Util.getViewportElement();this.element.scrolls=[window.pageXOffset||b.scrollLeft,window.pageYOffset||b.scrollTop]}this.element.lefttop||(this.element.lefttop=[document.documentElement.clientLeft||0,document.documentElement.clientTop||0]);this.element.offsets||(this.element.offsets=OpenLayers.Util.pagePosition(this.element));return new OpenLayers.Pixel(a.clientX+this.element.scrolls[0]-
+this.element.offsets[0]-this.element.lefttop[0],a.clientY+this.element.scrolls[1]-this.element.offsets[1]-this.element.lefttop[1])},addMsTouchListener:function(a,b,c){function d(a){c(OpenLayers.Util.applyDefaults({stopPropagation:function(){for(var a=e.length-1;0<=a;--a)e[a].stopPropagation()},preventDefault:function(){for(var a=e.length-1;0<=a;--a)e[a].preventDefault()},type:b},a))}var e=this._msTouches;switch(b){case "touchstart":return this.addMsTouchListenerStart(a,b,d);case "touchend":return this.addMsTouchListenerEnd(a,
+b,d);case "touchmove":return this.addMsTouchListenerMove(a,b,d);default:throw"Unknown touch event type";}},addMsTouchListenerStart:function(a,b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerDown",function(a){for(var b=!1,g=0,h=d.length;g<h;++g)if(d[g].pointerId==a.pointerId){b=!0;break}b||d.push(a);a.touches=d.slice();c(a)});OpenLayers.Event.observe(a,"MSPointerUp",function(a){for(var b=0,c=d.length;b<c;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}})},addMsTouchListenerMove:function(a,
+b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerMove",function(a){if(a.pointerType!=a.MSPOINTER_TYPE_MOUSE||0!=a.buttons)if(1!=d.length||d[0].pageX!=a.pageX||d[0].pageY!=a.pageY){for(var b=0,g=d.length;b<g;++b)if(d[b].pointerId==a.pointerId){d[b]=a;break}a.touches=d.slice();c(a)}})},addMsTouchListenerEnd:function(a,b,c){var d=this._msTouches;OpenLayers.Event.observe(a,"MSPointerUp",function(a){for(var b=0,g=d.length;b<g;++b)if(d[b].pointerId==a.pointerId){d.splice(b,1);break}a.touches=
+d.slice();c(a)})},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Events.buttonclick=OpenLayers.Class({target:null,events:"mousedown mouseup click dblclick touchstart touchmove touchend keydown".split(" "),startRegEx:/^mousedown|touchstart$/,cancelRegEx:/^touchmove$/,completeRegEx:/^mouseup|touchend$/,initialize:function(a){this.target=a;for(a=this.events.length-1;0<=a;--a)this.target.register(this.events[a],this,this.buttonClick,{extension:!0})},destroy:function(){for(var a=this.events.length-1;0<=a;--a)this.target.unregister(this.events[a],this,this.buttonClick);
+delete this.target},getPressedButton:function(a){var b=3,c;do{if(OpenLayers.Element.hasClass(a,"olButton")){c=a;break}a=a.parentNode}while(0<--b&&a);return c},ignore:function(a){var b=3,c=!1;do{if("a"===a.nodeName.toLowerCase()){c=!0;break}a=a.parentNode}while(0<--b&&a);return c},buttonClick:function(a){var b=!0,c=OpenLayers.Event.element(a);if(c&&(OpenLayers.Event.isLeftClick(a)||!~a.type.indexOf("mouse")))if(c=this.getPressedButton(c)){if("keydown"===a.type)switch(a.keyCode){case OpenLayers.Event.KEY_RETURN:case OpenLayers.Event.KEY_SPACE:this.target.triggerEvent("buttonclick",
+{buttonElement:c}),OpenLayers.Event.stop(a),b=!1}else if(this.startEvt){if(this.completeRegEx.test(a.type)){var b=OpenLayers.Util.pagePosition(c),d=OpenLayers.Util.getViewportElement(),e=window.pageYOffset||d.scrollTop;b[0]-=window.pageXOffset||d.scrollLeft;b[1]-=e;this.target.triggerEvent("buttonclick",{buttonElement:c,buttonXY:{x:this.startEvt.clientX-b[0],y:this.startEvt.clientY-b[1]}})}this.cancelRegEx.test(a.type)&&delete this.startEvt;OpenLayers.Event.stop(a);b=!1}this.startRegEx.test(a.type)&&
+(this.startEvt=a,OpenLayers.Event.stop(a),b=!1)}else b=!this.ignore(OpenLayers.Event.element(a)),delete this.startEvt;return b}});OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(a,b){OpenLayers.Util.extend(this,b);this.projCode=a;"object"==typeof Proj4js&&(this.proj=new Proj4js.Proj(a))},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){var b=!1;a&&(a instanceof OpenLayers.Projection||(a=new OpenLayers.Projection(a)),"object"==
+typeof Proj4js&&this.proj.defData&&a.proj.defData?b=this.proj.defData.replace(this.titleRegEx,"")==a.proj.defData.replace(this.titleRegEx,""):a.getCode&&(b=this.getCode(),a=a.getCode(),b=b==a||!!OpenLayers.Projection.transforms[b]&&OpenLayers.Projection.transforms[b][a]===OpenLayers.Projection.nullTransform));return b},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};
+OpenLayers.Projection.defaults={"EPSG:4326":{units:"degrees",maxExtent:[-180,-90,180,90],yx:!0},"CRS:84":{units:"degrees",maxExtent:[-180,-90,180,90]},"EPSG:900913":{units:"m",maxExtent:[-2.003750834E7,-2.003750834E7,2.003750834E7,2.003750834E7]}};
+OpenLayers.Projection.addTransform=function(a,b,c){if(c===OpenLayers.Projection.nullTransform){var d=OpenLayers.Projection.defaults[a];d&&!OpenLayers.Projection.defaults[b]&&(OpenLayers.Projection.defaults[b]=d)}OpenLayers.Projection.transforms[a]||(OpenLayers.Projection.transforms[a]={});OpenLayers.Projection.transforms[a][b]=c};
+OpenLayers.Projection.transform=function(a,b,c){if(b&&c)if(b instanceof OpenLayers.Projection||(b=new OpenLayers.Projection(b)),c instanceof OpenLayers.Projection||(c=new OpenLayers.Projection(c)),b.proj&&c.proj)a=Proj4js.transform(b.proj,c.proj,a);else{b=b.getCode();c=c.getCode();var d=OpenLayers.Projection.transforms;if(d[b]&&d[b][c])d[b][c](a)}return a};OpenLayers.Projection.nullTransform=function(a){return a};
+(function(){function a(a){a.x=180*a.x/d;a.y=180/Math.PI*(2*Math.atan(Math.exp(a.y/d*Math.PI))-Math.PI/2);return a}function b(a){a.x=a.x*d/180;var b=Math.log(Math.tan((90+a.y)*Math.PI/360))/Math.PI*d;a.y=Math.max(-2.003750834E7,Math.min(b,2.003750834E7));return a}function c(c,d){var e=OpenLayers.Projection.addTransform,f=OpenLayers.Projection.nullTransform,g,p,n,q,s;g=0;for(p=d.length;g<p;++g)for(n=d[g],e(c,n,b),e(n,c,a),s=g+1;s<p;++s)q=d[s],e(n,q,f),e(q,n,f)}var d=2.003750834E7,e=["EPSG:900913","EPSG:3857",
+"EPSG:102113","EPSG:102100"],f=["CRS:84","urn:ogc:def:crs:EPSG:6.6:4326","EPSG:4326"],g;for(g=e.length-1;0<=g;--g)c(e[g],f);for(g=f.length-1;0<=g;--g)c(f[g],e)})();OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1E3},id:null,fractionalZoom:!1,events:null,allOverlays:!1,div:null,dragging:!1,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,options:null,tileSize:null,projection:"EPSG:4326",units:null,resolutions:null,maxResolution:null,minResolution:null,maxScale:null,minScale:null,
+maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:!1,autoUpdateSize:!0,eventListeners:null,panTween:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,zoomTween:null,zoomMethod:OpenLayers.Easing.Quad.easeOut,zoomDuration:20,paddingForPopups:null,layerContainerOriginPx:null,minPx:null,maxPx:null,initialize:function(a,b){1===arguments.length&&"object"===typeof a&&(a=(b=a)&&b.div);this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,
+OpenLayers.Map.TILE_HEIGHT);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+"theme/default/style.css";this.options=OpenLayers.Util.extend({},b);OpenLayers.Util.extend(this,b);OpenLayers.Util.applyDefaults(this,OpenLayers.Projection.defaults[this.projection instanceof OpenLayers.Projection?this.projection.projCode:this.projection]);!this.maxExtent||this.maxExtent instanceof OpenLayers.Bounds||(this.maxExtent=new OpenLayers.Bounds(this.maxExtent));
+!this.minExtent||this.minExtent instanceof OpenLayers.Bounds||(this.minExtent=new OpenLayers.Bounds(this.minExtent));!this.restrictedExtent||this.restrictedExtent instanceof OpenLayers.Bounds||(this.restrictedExtent=new OpenLayers.Bounds(this.restrictedExtent));!this.center||this.center instanceof OpenLayers.LonLat||(this.center=new OpenLayers.LonLat(this.center));this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(a);this.div||(this.div=document.createElement("div"),
+this.div.style.height="1px",this.div.style.width="1px");OpenLayers.Element.addClass(this.div,"olMap");var c=this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(c,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);this.events=new OpenLayers.Events(this,this.viewPortDiv,null,this.fallThrough,{includeXY:!0});OpenLayers.TileManager&&null!==
+this.tileManager&&(this.tileManager instanceof OpenLayers.TileManager||(this.tileManager=new OpenLayers.TileManager(this.tileManager)),this.tileManager.addMap(this));c=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(c);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.layerContainerOriginPx={x:0,y:0};this.applyTransform();this.viewPortDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);
+!0===this.autoUpdateSize&&(this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this),OpenLayers.Event.observe(window,"resize",this.updateSizeDestroy));if(this.theme){for(var c=!0,d=document.getElementsByTagName("link"),e=0,f=d.length;e<f;++e)if(OpenLayers.Util.isEquivalentUrl(d.item(e).href,this.theme)){c=!1;break}c&&(c=document.createElement("link"),c.setAttribute("rel","stylesheet"),c.setAttribute("type","text/css"),c.setAttribute("href",this.theme),document.getElementsByTagName("head")[0].appendChild(c))}null==
+this.controls&&(this.controls=[],null!=OpenLayers.Control&&(OpenLayers.Control.Navigation?this.controls.push(new OpenLayers.Control.Navigation):OpenLayers.Control.TouchNavigation&&this.controls.push(new OpenLayers.Control.TouchNavigation),OpenLayers.Control.Zoom?this.controls.push(new OpenLayers.Control.Zoom):OpenLayers.Control.PanZoom&&this.controls.push(new OpenLayers.Control.PanZoom),OpenLayers.Control.ArgParser&&this.controls.push(new OpenLayers.Control.ArgParser),OpenLayers.Control.Attribution&&
+this.controls.push(new OpenLayers.Control.Attribution)));e=0;for(f=this.controls.length;e<f;e++)this.addControlToMap(this.controls[e]);this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,"unload",this.unloadDestroy);b&&b.layers&&(delete this.center,delete this.zoom,this.addLayers(b.layers),b.center&&!this.getCenter()&&this.setCenter(b.center,b.zoom));this.panMethod&&(this.panTween=new OpenLayers.Tween(this.panMethod));this.zoomMethod&&this.applyTransform.transform&&
+(this.zoomTween=new OpenLayers.Tween(this.zoomMethod))},getViewport:function(){return this.viewPortDiv},render:function(a){this.div=OpenLayers.Util.getElement(a);OpenLayers.Element.addClass(this.div,"olMap");this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize()},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy)return!1;this.panTween&&(this.panTween.stop(),this.panTween=null);this.zoomTween&&(this.zoomTween.stop(),
+this.zoomTween=null);OpenLayers.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;this.updateSizeDestroy&&OpenLayers.Event.stopObserving(window,"resize",this.updateSizeDestroy);this.paddingForPopups=null;if(null!=this.controls){for(var a=this.controls.length-1;0<=a;--a)this.controls[a].destroy();this.controls=null}if(null!=this.layers){for(a=this.layers.length-1;0<=a;--a)this.layers[a].destroy(!1);this.layers=null}this.viewPortDiv&&this.viewPortDiv.parentNode&&this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);
+this.viewPortDiv=null;this.tileManager&&(this.tileManager.removeMap(this),this.tileManager=null);this.eventListeners&&(this.events.un(this.eventListeners),this.eventListeners=null);this.events.destroy();this.options=this.events=null},setOptions:function(a){var b=this.minPx&&a.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,a);b&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:!0})},getTileSize:function(){return this.tileSize},getBy:function(a,b,c){var d="function"==
+typeof c.test;return OpenLayers.Array.filter(this[a],function(a){return a[b]==c||d&&c.test(a[b])})},getLayersBy:function(a,b){return this.getBy("layers",a,b)},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(a,b){return this.getBy("controls",a,b)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(a){for(var b=null,c=0,d=this.layers.length;c<d;c++){var e=
+this.layers[c];if(e.id==a){b=e;break}}return b},setLayerZIndex:function(a,b){a.setZIndex(this.Z_INDEX_BASE[a.isBaseLayer?"BaseLayer":"Overlay"]+5*b)},resetLayersZIndex:function(){for(var a=0,b=this.layers.length;a<b;a++)this.setLayerZIndex(this.layers[a],a)},addLayer:function(a){for(var b=0,c=this.layers.length;b<c;b++)if(this.layers[b]==a)return!1;if(!1===this.events.triggerEvent("preaddlayer",{layer:a}))return!1;this.allOverlays&&(a.isBaseLayer=!1);a.div.className="olLayerDiv";a.div.style.overflow=
+"";this.setLayerZIndex(a,this.layers.length);a.isFixed?this.viewPortDiv.appendChild(a.div):this.layerContainerDiv.appendChild(a.div);this.layers.push(a);a.setMap(this);a.isBaseLayer||this.allOverlays&&!this.baseLayer?null==this.baseLayer?this.setBaseLayer(a):a.setVisibility(!1):a.redraw();this.events.triggerEvent("addlayer",{layer:a});a.events.triggerEvent("added",{map:this,layer:a});a.afterAdd();return!0},addLayers:function(a){for(var b=0,c=a.length;b<c;b++)this.addLayer(a[b])},removeLayer:function(a,
+b){if(!1!==this.events.triggerEvent("preremovelayer",{layer:a})){null==b&&(b=!0);a.isFixed?this.viewPortDiv.removeChild(a.div):this.layerContainerDiv.removeChild(a.div);OpenLayers.Util.removeItem(this.layers,a);a.removeMap(this);a.map=null;if(this.baseLayer==a&&(this.baseLayer=null,b))for(var c=0,d=this.layers.length;c<d;c++){var e=this.layers[c];if(e.isBaseLayer||this.allOverlays){this.setBaseLayer(e);break}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:a});a.events.triggerEvent("removed",
+{map:this,layer:a})}},getNumLayers:function(){return this.layers.length},getLayerIndex:function(a){return OpenLayers.Util.indexOf(this.layers,a)},setLayerIndex:function(a,b){var c=this.getLayerIndex(a);0>b?b=0:b>this.layers.length&&(b=this.layers.length);if(c!=b){this.layers.splice(c,1);this.layers.splice(b,0,a);for(var c=0,d=this.layers.length;c<d;c++)this.setLayerZIndex(this.layers[c],c);this.events.triggerEvent("changelayer",{layer:a,property:"order"});this.allOverlays&&(0===b?this.setBaseLayer(a):
+this.baseLayer!==this.layers[0]&&this.setBaseLayer(this.layers[0]))}},raiseLayer:function(a,b){var c=this.getLayerIndex(a)+b;this.setLayerIndex(a,c)},setBaseLayer:function(a){if(a!=this.baseLayer&&-1!=OpenLayers.Util.indexOf(this.layers,a)){var b=this.getCachedCenter(),c=OpenLayers.Util.getResolutionFromScale(this.getScale(),a.units);null==this.baseLayer||this.allOverlays||this.baseLayer.setVisibility(!1);this.baseLayer=a;if(!this.allOverlays||this.baseLayer.visibility)this.baseLayer.setVisibility(!0),
+!1===this.baseLayer.inRange&&this.baseLayer.redraw();null!=b&&(a=this.getZoomForResolution(c||this.resolution,!0),this.setCenter(b,a,!1,!0));this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})}},addControl:function(a,b){this.controls.push(a);this.addControlToMap(a,b)},addControls:function(a,b){for(var c=1===arguments.length?[]:b,d=0,e=a.length;d<e;d++)this.addControl(a[d],c[d]?c[d]:null)},addControlToMap:function(a,b){a.outsideViewport=null!=a.div;this.displayProjection&&!a.displayProjection&&
+(a.displayProjection=this.displayProjection);a.setMap(this);var c=a.draw(b);c&&!a.outsideViewport&&(c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length,this.viewPortDiv.appendChild(c));a.autoActivate&&a.activate()},getControl:function(a){for(var b=null,c=0,d=this.controls.length;c<d;c++){var e=this.controls[c];if(e.id==a){b=e;break}}return b},removeControl:function(a){a&&a==this.getControl(a.id)&&(a.div&&a.div.parentNode==this.viewPortDiv&&this.viewPortDiv.removeChild(a.div),OpenLayers.Util.removeItem(this.controls,
+a))},addPopup:function(a,b){if(b)for(var c=this.popups.length-1;0<=c;--c)this.removePopup(this.popups[c]);a.map=this;this.popups.push(a);if(c=a.draw())c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length,this.layerContainerDiv.appendChild(c)},removePopup:function(a){OpenLayers.Util.removeItem(this.popups,a);if(a.div)try{this.layerContainerDiv.removeChild(a.div)}catch(b){}a.map=null},getSize:function(){var a=null;null!=this.size&&(a=this.size.clone());return a},updateSize:function(){var a=this.getCurrentSize();
+if(a&&!isNaN(a.h)&&!isNaN(a.w)){this.events.clearMouseCache();var b=this.getSize();null==b&&(this.size=b=a);if(!a.equals(b)){this.size=a;a=0;for(b=this.layers.length;a<b;a++)this.layers[a].onMapResize();a=this.getCachedCenter();null!=this.baseLayer&&null!=a&&(b=this.getZoom(),this.zoom=null,this.setCenter(a,b))}}this.events.triggerEvent("updatesize")},getCurrentSize:function(){var a=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=this.div.offsetWidth,
+a.h=this.div.offsetHeight;if(0==a.w&&0==a.h||isNaN(a.w)&&isNaN(a.h))a.w=parseInt(this.div.style.width),a.h=parseInt(this.div.style.height);return a},calculateBounds:function(a,b){var c=null;null==a&&(a=this.getCachedCenter());null==b&&(b=this.getResolution());if(null!=a&&null!=b)var c=this.size.w*b/2,d=this.size.h*b/2,c=new OpenLayers.Bounds(a.lon-c,a.lat-d,a.lon+c,a.lat+d);return c},getCenter:function(){var a=null,b=this.getCachedCenter();b&&(a=b.clone());return a},getCachedCenter:function(){!this.center&&
+this.size&&(this.center=this.getLonLatFromViewPortPx({x:this.size.w/2,y:this.size.h/2}));return this.center},getZoom:function(){return this.zoom},pan:function(a,b,c){c=OpenLayers.Util.applyDefaults(c,{animate:!0,dragging:!1});if(c.dragging)0==a&&0==b||this.moveByPx(a,b);else{var d=this.getViewPortPxFromLonLat(this.getCachedCenter());a=d.add(a,b);if(this.dragging||!a.equals(d))d=this.getLonLatFromViewPortPx(a),c.animate?this.panTo(d):(this.moveTo(d),this.dragging&&(this.dragging=!1,this.events.triggerEvent("moveend")))}},
+panTo:function(a){if(this.panTween&&this.getExtent().scale(this.panRatio).containsLonLat(a)){var b=this.getCachedCenter();if(!a.equals(b)){var b=this.getPixelFromLonLat(b),c=this.getPixelFromLonLat(a),d=0,e=0;this.panTween.start({x:0,y:0},{x:c.x-b.x,y:c.y-b.y},this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(a){this.moveByPx(a.x-d,a.y-e);d=Math.round(a.x);e=Math.round(a.y)},this),done:OpenLayers.Function.bind(function(b){this.moveTo(a);this.dragging=!1;this.events.triggerEvent("moveend")},
+this)}})}}else this.setCenter(a)},setCenter:function(a,b,c,d){this.panTween&&this.panTween.stop();this.zoomTween&&this.zoomTween.stop();this.moveTo(a,b,{dragging:c,forceZoomChange:d})},moveByPx:function(a,b){var c=this.size.w/2,d=this.size.h/2,e=c+a,f=d+b,g=this.baseLayer.wrapDateLine,h=0,k=0;this.restrictedExtent&&(h=c,k=d,g=!1);a=g||e<=this.maxPx.x-h&&e>=this.minPx.x+h?Math.round(a):0;b=f<=this.maxPx.y-k&&f>=this.minPx.y+k?Math.round(b):0;if(a||b){this.dragging||(this.dragging=!0,this.events.triggerEvent("movestart"));
+this.center=null;a&&(this.layerContainerOriginPx.x-=a,this.minPx.x-=a,this.maxPx.x-=a);b&&(this.layerContainerOriginPx.y-=b,this.minPx.y-=b,this.maxPx.y-=b);this.applyTransform();d=0;for(e=this.layers.length;d<e;++d)c=this.layers[d],c.visibility&&(c===this.baseLayer||c.inRange)&&(c.moveByPx(a,b),c.events.triggerEvent("move"));this.events.triggerEvent("move")}},adjustZoom:function(a){if(this.baseLayer&&this.baseLayer.wrapDateLine){var b=this.baseLayer.resolutions,c=this.getMaxExtent().getWidth()/this.size.w;
+if(this.getResolutionForZoom(a)>c)if(this.fractionalZoom)a=this.getZoomForResolution(c);else for(var d=a|0,e=b.length;d<e;++d)if(b[d]<=c){a=d;break}}return a},getMinZoom:function(){return this.adjustZoom(0)},moveTo:function(a,b,c){null==a||a instanceof OpenLayers.LonLat||(a=new OpenLayers.LonLat(a));c||(c={});null!=b&&(b=parseFloat(b),this.fractionalZoom||(b=Math.round(b)));var d=b;b=this.adjustZoom(b);b!==d&&(a=this.getCenter());var d=c.dragging||this.dragging,e=c.forceZoomChange;this.getCachedCenter()||
+this.isValidLonLat(a)||(a=this.maxExtent.getCenterLonLat(),this.center=a.clone());if(null!=this.restrictedExtent){null==a&&(a=this.center);null==b&&(b=this.getZoom());var f=this.getResolutionForZoom(b),f=this.calculateBounds(a,f);if(!this.restrictedExtent.containsBounds(f)){var g=this.restrictedExtent.getCenterLonLat();f.getWidth()>this.restrictedExtent.getWidth()?a=new OpenLayers.LonLat(g.lon,a.lat):f.left<this.restrictedExtent.left?a=a.add(this.restrictedExtent.left-f.left,0):f.right>this.restrictedExtent.right&&
+(a=a.add(this.restrictedExtent.right-f.right,0));f.getHeight()>this.restrictedExtent.getHeight()?a=new OpenLayers.LonLat(a.lon,g.lat):f.bottom<this.restrictedExtent.bottom?a=a.add(0,this.restrictedExtent.bottom-f.bottom):f.top>this.restrictedExtent.top&&(a=a.add(0,this.restrictedExtent.top-f.top))}}e=e||this.isValidZoomLevel(b)&&b!=this.getZoom();f=this.isValidLonLat(a)&&!a.equals(this.center);if(e||f||d){d||this.events.triggerEvent("movestart",{zoomChanged:e});f&&(!e&&this.center&&this.centerLayerContainer(a),
+this.center=a.clone());a=e?this.getResolutionForZoom(b):this.getResolution();if(e||null==this.layerContainerOrigin){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerOriginPx.x=0;this.layerContainerOriginPx.y=0;this.applyTransform();var f=this.getMaxExtent({restricted:!0}),h=f.getCenterLonLat(),g=this.center.lon-h.lon,h=h.lat-this.center.lat,k=Math.round(f.getWidth()/a),l=Math.round(f.getHeight()/a);this.minPx={x:(this.size.w-k)/2-g/a,y:(this.size.h-l)/2-h/a};this.maxPx={x:this.minPx.x+
+Math.round(f.getWidth()/a),y:this.minPx.y+Math.round(f.getHeight()/a)}}e&&(this.zoom=b,this.resolution=a);a=this.getExtent();this.baseLayer.visibility&&(this.baseLayer.moveTo(a,e,c.dragging),c.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:e}));a=this.baseLayer.getExtent();for(b=this.layers.length-1;0<=b;--b)f=this.layers[b],f===this.baseLayer||f.isBaseLayer||(g=f.calculateInRange(),f.inRange!=g&&((f.inRange=g)||f.display(!1),this.events.triggerEvent("changelayer",{layer:f,property:"visibility"})),
+g&&f.visibility&&(f.moveTo(a,e,c.dragging),c.dragging||f.events.triggerEvent("moveend",{zoomChanged:e})));this.events.triggerEvent("move");d||this.events.triggerEvent("moveend");if(e){b=0;for(c=this.popups.length;b<c;b++)this.popups[b].updatePosition();this.events.triggerEvent("zoomend")}}},centerLayerContainer:function(a){var b=this.getViewPortPxFromLonLat(this.layerContainerOrigin),c=this.getViewPortPxFromLonLat(a);if(null!=b&&null!=c){var d=this.layerContainerOriginPx.x;a=this.layerContainerOriginPx.y;
+var e=Math.round(b.x-c.x),b=Math.round(b.y-c.y);this.applyTransform(this.layerContainerOriginPx.x=e,this.layerContainerOriginPx.y=b);d-=e;a-=b;this.minPx.x-=d;this.maxPx.x-=d;this.minPx.y-=a;this.maxPx.y-=a}},isValidZoomLevel:function(a){return null!=a&&0<=a&&a<this.getNumZoomLevels()},isValidLonLat:function(a){var b=!1;null!=a&&(b=this.getMaxExtent(),b=b.containsLonLat(a,{worldBounds:this.baseLayer.wrapDateLine&&b}));return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():
+null},getProjectionObject:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.projection);return a},getMaxResolution:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.maxResolution);return a},getMaxExtent:function(a){var b=null;a&&a.restricted&&this.restrictedExtent?b=this.restrictedExtent:null!=this.baseLayer&&(b=this.baseLayer.maxExtent);return b},getNumZoomLevels:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.numZoomLevels);return a},getExtent:function(){var a=
+null;null!=this.baseLayer&&(a=this.baseLayer.getExtent());return a},getResolution:function(){var a=null;null!=this.baseLayer?a=this.baseLayer.getResolution():!0===this.allOverlays&&0<this.layers.length&&(a=this.layers[0].getResolution());return a},getUnits:function(){var a=null;null!=this.baseLayer&&(a=this.baseLayer.units);return a},getScale:function(){var a=null;null!=this.baseLayer&&(a=this.getResolution(),a=OpenLayers.Util.getScaleFromResolution(a,this.baseLayer.units));return a},getZoomForExtent:function(a,
+b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForExtent(a,b));return c},getResolutionForZoom:function(a){var b=null;this.baseLayer&&(b=this.baseLayer.getResolutionForZoom(a));return b},getZoomForResolution:function(a,b){var c=null;null!=this.baseLayer&&(c=this.baseLayer.getZoomForResolution(a,b));return c},zoomTo:function(a,b){var c=this;if(c.isValidZoomLevel(a))if(c.baseLayer.wrapDateLine&&(a=c.adjustZoom(a)),c.zoomTween){var d=c.getResolution(),e=c.getResolutionForZoom(a),f={scale:1},
+d={scale:d/e};c.zoomTween.playing&&c.zoomTween.duration<3*c.zoomDuration?c.zoomTween.finish={scale:c.zoomTween.finish.scale*d.scale}:(b||(e=c.getSize(),b={x:e.w/2,y:e.h/2}),c.zoomTween.start(f,d,c.zoomDuration,{minFrameRate:50,callbacks:{eachStep:function(a){var d=c.layerContainerOriginPx;a=a.scale;c.applyTransform(d.x+((a-1)*(d.x-b.x)|0),d.y+((a-1)*(d.y-b.y)|0),a)},done:function(a){c.applyTransform();a=c.getResolution()/a.scale;var d=c.getZoomForResolution(a,!0);c.moveTo(c.getZoomTargetCenter(b,
+a),d,!0)}}}))}else f=b?c.getZoomTargetCenter(b,c.getResolutionForZoom(a)):null,c.setCenter(f,a)},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(a,b){a instanceof OpenLayers.Bounds||(a=new OpenLayers.Bounds(a));var c=a.getCenterLonLat();if(this.baseLayer.wrapDateLine){c=this.getMaxExtent();for(a=a.clone();a.right<a.left;)a.right+=c.getWidth();c=a.getCenterLonLat().wrapDateLine(c)}this.setCenter(c,this.getZoomForExtent(a,b))},
+zoomToMaxExtent:function(a){a=this.getMaxExtent({restricted:a?a.restricted:!0});this.zoomToExtent(a)},zoomToScale:function(a,b){var c=OpenLayers.Util.getResolutionFromScale(a,this.baseLayer.units),d=this.size.w*c/2,c=this.size.h*c/2,e=this.getCachedCenter(),d=new OpenLayers.Bounds(e.lon-d,e.lat-c,e.lon+d,e.lat+c);this.zoomToExtent(d,b)},getLonLatFromViewPortPx:function(a){var b=null;null!=this.baseLayer&&(b=this.baseLayer.getLonLatFromViewPortPx(a));return b},getViewPortPxFromLonLat:function(a){var b=
+null;null!=this.baseLayer&&(b=this.baseLayer.getViewPortPxFromLonLat(a));return b},getZoomTargetCenter:function(a,b){var c=null,d=this.getSize(),e=d.w/2-a.x,d=a.y-d.h/2,f=this.getLonLatFromPixel(a);f&&(c=new OpenLayers.LonLat(f.lon+e*b,f.lat+d*b));return c},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(a){a=this.getViewPortPxFromLonLat(a);a.x=Math.round(a.x);a.y=Math.round(a.y);return a},getGeodesicPixelSize:function(a){var b=a?this.getLonLatFromPixel(a):
+this.getCachedCenter()||new OpenLayers.LonLat(0,0),c=this.getResolution();a=b.add(-c/2,0);var d=b.add(c/2,0),e=b.add(0,-c/2),b=b.add(0,c/2),c=new OpenLayers.Projection("EPSG:4326"),f=this.getProjectionObject()||c;f.equals(c)||(a.transform(f,c),d.transform(f,c),e.transform(f,c),b.transform(f,c));return new OpenLayers.Size(OpenLayers.Util.distVincenty(a,d),OpenLayers.Util.distVincenty(e,b))},getViewPortPxFromLayerPx:function(a){var b=null;null!=a&&(b=a.add(this.layerContainerOriginPx.x,this.layerContainerOriginPx.y));
+return b},getLayerPxFromViewPortPx:function(a){var b=null;null!=a&&(b=a.add(-this.layerContainerOriginPx.x,-this.layerContainerOriginPx.y),isNaN(b.x)||isNaN(b.y))&&(b=null);return b},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(a){a=this.getPixelFromLonLat(a);return this.getLayerPxFromViewPortPx(a)},applyTransform:function(a,b,c){c=c||1;var d=this.layerContainerOriginPx,e=1!==c;a=a||d.x;b=b||d.y;var f=this.layerContainerDiv.style,
+g=this.applyTransform.transform,h=this.applyTransform.template;if(void 0===g&&(g=OpenLayers.Util.vendorPrefix.style("transform"),this.applyTransform.transform=g)){var k=OpenLayers.Element.getStyle(this.viewPortDiv,OpenLayers.Util.vendorPrefix.css("transform"));k&&"none"===k||(h=["translate3d(",",0) ","scale3d(",",1)"],f[g]=[h[0],"0,0",h[1]].join(""));h&&~f[g].indexOf(h[0])||(h=["translate(",") ","scale(",")"]);this.applyTransform.template=h}null===g||"translate3d("!==h[0]&&!0!==e?(f.left=a+"px",f.top=
+b+"px",null!==g&&(f[g]="")):(!0===e&&"translate("===h[0]&&(a-=d.x,b-=d.y,f.left=d.x+"px",f.top=d.y+"px"),f[g]=[h[0],a,"px,",b,"px",h[1],h[2],c,",",c,h[3]].join(""))},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:!0,defaultFilter:null,initialize:function(a){a=a||{};OpenLayers.Util.extend(this,a);this.options=a},mergeWithDefaultFilter:function(a){return a&&this.defaultFilter?new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,a]}):a||this.defaultFilter||void 0},destroy:function(){this.format=this.options=null},read:function(a){a=a||{};a.filter=this.mergeWithDefaultFilter(a.filter)},create:function(){},
+update:function(){},"delete":function(){},commit:function(){},abort:function(a){},createCallback:function(a,b,c){return OpenLayers.Function.bind(function(){a.apply(this,[b,c])},this)},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:!0,features:null,data:null,reqFeatures:null,priv:null,error:null,initialize:function(a){OpenLayers.Util.extend(this,a)},success:function(){return 0<this.code},CLASS_NAME:"OpenLayers.Protocol.Response"});
+OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.ProxyHost="";OpenLayers.Request||(OpenLayers.Request={});
+OpenLayers.Util.extend(OpenLayers.Request,{DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:!0,user:void 0,password:void 0,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this),makeSameOrigin:function(a,b){var c=0!==a.indexOf("http"),d=!c&&a.match(this.URL_SPLIT_REGEX);if(d){var e=window.location,c=d[1]==e.protocol&&d[3]==
+e.hostname,d=d[4],e=e.port;if(80!=d&&""!=d||"80"!=e&&""!=e)c=c&&d==e}c||b&&(a="function"==typeof b?b(a):b+encodeURIComponent(a));return a},issue:function(a){var b=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});a=a||{};a.headers=a.headers||{};a=OpenLayers.Util.applyDefaults(a,b);a.headers=OpenLayers.Util.applyDefaults(a.headers,b.headers);var b=!1,c;for(c in a.headers)a.headers.hasOwnProperty(c)&&"x-requested-with"===c.toLowerCase()&&(b=!0);!1===b&&(a.headers["X-Requested-With"]=
+"XMLHttpRequest");var d=new OpenLayers.Request.XMLHttpRequest,e=OpenLayers.Util.urlAppend(a.url,OpenLayers.Util.getParameterString(a.params||{})),e=OpenLayers.Request.makeSameOrigin(e,a.proxy);d.open(a.method,e,a.async,a.user,a.password);for(var f in a.headers)d.setRequestHeader(f,a.headers[f]);var g=this.events,h=this;d.onreadystatechange=function(){d.readyState==OpenLayers.Request.XMLHttpRequest.DONE&&!1!==g.triggerEvent("complete",{request:d,config:a,requestUrl:e})&&h.runCallbacks({request:d,config:a,
+requestUrl:e})};!1===a.async?d.send(a.data):window.setTimeout(function(){0!==d.readyState&&d.send(a.data)},0);return d},runCallbacks:function(a){var b=a.request,c=a.config,d=c.scope?OpenLayers.Function.bind(c.callback,c.scope):c.callback,e;c.success&&(e=c.scope?OpenLayers.Function.bind(c.success,c.scope):c.success);var f;c.failure&&(f=c.scope?OpenLayers.Function.bind(c.failure,c.scope):c.failure);"file:"==OpenLayers.Util.createUrlObject(c.url).protocol&&b.responseText&&(b.status=200);d(b);if(!b.status||
+200<=b.status&&300>b.status)this.events.triggerEvent("success",a),e&&e(b);b.status&&(200>b.status||300<=b.status)&&(this.events.triggerEvent("failure",a),f&&f(b))},GET:function(a){a=OpenLayers.Util.extend(a,{method:"GET"});return OpenLayers.Request.issue(a)},POST:function(a){a=OpenLayers.Util.extend(a,{method:"POST"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},PUT:function(a){a=
+OpenLayers.Util.extend(a,{method:"PUT"});a.headers=a.headers?a.headers:{};"CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(a.headers)||(a.headers["Content-Type"]="application/xml");return OpenLayers.Request.issue(a)},DELETE:function(a){a=OpenLayers.Util.extend(a,{method:"DELETE"});return OpenLayers.Request.issue(a)},HEAD:function(a){a=OpenLayers.Util.extend(a,{method:"HEAD"});return OpenLayers.Request.issue(a)},OPTIONS:function(a){a=OpenLayers.Util.extend(a,{method:"OPTIONS"});return OpenLayers.Request.issue(a)}});(function(){function a(){this._object=f&&!k?new f:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[]}function b(){return new a}function c(a){b.onreadystatechange&&b.onreadystatechange.apply(a);a.dispatchEvent({type:"readystatechange",bubbles:!1,cancelable:!1,timeStamp:new Date+0})}function d(a){try{a.responseText=a._object.responseText}catch(b){}try{var c;var d=a._object,e=d.responseXML,f=d.responseText;h&&f&&e&&!e.documentElement&&d.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)&&
+(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.validateOnParse=!1,e.loadXML(f));c=e&&(h&&0!=e.parseError||!e.documentElement||e.documentElement&&"parsererror"==e.documentElement.tagName)?null:e;a.responseXML=c}catch(g){}try{a.status=a._object.status}catch(k){}try{a.statusText=a._object.statusText}catch(u){}}function e(a){a._object.onreadystatechange=new window.Function}var f=window.XMLHttpRequest,g=!!window.controllers,h=window.document.all&&!window.opera,k=h&&window.navigator.userAgent.match(/MSIE 7.0/);
+b.prototype=a.prototype;g&&f.wrapped&&(b.wrapped=f.wrapped);b.UNSENT=0;b.OPENED=1;b.HEADERS_RECEIVED=2;b.LOADING=3;b.DONE=4;b.prototype.readyState=b.UNSENT;b.prototype.responseText="";b.prototype.responseXML=null;b.prototype.status=0;b.prototype.statusText="";b.prototype.priority="NORMAL";b.prototype.onreadystatechange=null;b.onreadystatechange=null;b.onopen=null;b.onsend=null;b.onabort=null;b.prototype.open=function(a,f,k,p,n){delete this._headers;3>arguments.length&&(k=!0);this._async=k;var q=this,
+s=this.readyState,t;h&&k&&(t=function(){s!=b.DONE&&(e(q),q.abort())},window.attachEvent("onunload",t));b.onopen&&b.onopen.apply(this,arguments);4<arguments.length?this._object.open(a,f,k,p,n):3<arguments.length?this._object.open(a,f,k,p):this._object.open(a,f,k);this.readyState=b.OPENED;c(this);this._object.onreadystatechange=function(){if(!g||k)q.readyState=q._object.readyState,d(q),q._aborted?q.readyState=b.UNSENT:(q.readyState==b.DONE&&(delete q._data,e(q),h&&k&&window.detachEvent("onunload",t)),
+s!=q.readyState&&c(q),s=q.readyState)}};b.prototype.send=function(a){b.onsend&&b.onsend.apply(this,arguments);arguments.length||(a=null);a&&a.nodeType&&(a=window.XMLSerializer?(new window.XMLSerializer).serializeToString(a):a.xml,this._headers["Content-Type"]||this._object.setRequestHeader("Content-Type","application/xml"));this._data=a;a:if(this._object.send(this._data),g&&!this._async)for(this.readyState=b.OPENED,d(this);this.readyState<b.DONE;)if(this.readyState++,c(this),this._aborted)break a};
+b.prototype.abort=function(){b.onabort&&b.onabort.apply(this,arguments);this.readyState>b.UNSENT&&(this._aborted=!0);this._object.abort();e(this);this.readyState=b.UNSENT;delete this._data};b.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders()};b.prototype.getResponseHeader=function(a){return this._object.getResponseHeader(a)};b.prototype.setRequestHeader=function(a,b){this._headers||(this._headers={});this._headers[a]=b;return this._object.setRequestHeader(a,b)};
+b.prototype.addEventListener=function(a,b,c){for(var d=0,e;e=this._listeners[d];d++)if(e[0]==a&&e[1]==b&&e[2]==c)return;this._listeners.push([a,b,c])};b.prototype.removeEventListener=function(a,b,c){for(var d=0,e;(e=this._listeners[d])&&(e[0]!=a||e[1]!=b||e[2]!=c);d++);e&&this._listeners.splice(d,1)};b.prototype.dispatchEvent=function(a){a={type:a.type,target:this,currentTarget:this,eventPhase:2,bubbles:a.bubbles,cancelable:a.cancelable,timeStamp:a.timeStamp,stopPropagation:function(){},preventDefault:function(){},
+initEvent:function(){}};"readystatechange"==a.type&&this.onreadystatechange&&(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[a]);for(var b=0,c;c=this._listeners[b];b++)c[0]!=a.type||c[2]||(c[1].handleEvent||c[1]).apply(this,[a])};b.prototype.toString=function(){return"[object XMLHttpRequest]"};b.toString=function(){return"[XMLHttpRequest]"};window.Function.prototype.apply||(window.Function.prototype.apply=function(a,b){b||(b=[]);a.__func=this;a.__func(b[0],b[1],b[2],b[3],
+b[4]);delete a.__func});OpenLayers.Request||(OpenLayers.Request={});OpenLayers.Request.XMLHttpRequest=b})();OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:!1,updateWithPOST:!1,deleteWithPOST:!1,wildcarded:!1,srsInBBOX:!1,initialize:function(a){a=a||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var b=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=
+function(a,d){return b.write(a,d)}}},destroy:function(){this.headers=this.params=null;OpenLayers.Protocol.prototype.destroy.apply(this)},read:function(a){OpenLayers.Protocol.prototype.read.apply(this,arguments);a=a||{};a.params=OpenLayers.Util.applyDefaults(a.params,this.options.params);a=OpenLayers.Util.applyDefaults(a,this.options);a.filter&&this.filterToParams&&(a.params=this.filterToParams(a.filter,a.params));var b=void 0!==a.readWithPOST?a.readWithPOST:this.readWithPOST,c=new OpenLayers.Protocol.Response({requestType:"read"});
+b?(b=a.headers||{},b["Content-Type"]="application/x-www-form-urlencoded",c.priv=OpenLayers.Request.POST({url:a.url,callback:this.createCallback(this.handleRead,c,a),data:OpenLayers.Util.getParameterString(a.params),headers:b})):c.priv=OpenLayers.Request.GET({url:a.url,callback:this.createCallback(this.handleRead,c,a),params:a.params,headers:a.headers});return c},handleRead:function(a,b){this.handleResponse(a,b)},create:function(a,b){b=OpenLayers.Util.applyDefaults(b,this.options);var c=new OpenLayers.Protocol.Response({reqFeatures:a,
+requestType:"create"});c.priv=OpenLayers.Request.POST({url:b.url,callback:this.createCallback(this.handleCreate,c,b),headers:b.headers,data:this.format.write(a)});return c},handleCreate:function(a,b){this.handleResponse(a,b)},update:function(a,b){b=b||{};var c=b.url||a.url||this.options.url+"/"+a.fid;b=OpenLayers.Util.applyDefaults(b,this.options);var d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"update"});d.priv=OpenLayers.Request[this.updateWithPOST?"POST":"PUT"]({url:c,callback:this.createCallback(this.handleUpdate,
+d,b),headers:b.headers,data:this.format.write(a)});return d},handleUpdate:function(a,b){this.handleResponse(a,b)},"delete":function(a,b){b=b||{};var c=b.url||a.url||this.options.url+"/"+a.fid;b=OpenLayers.Util.applyDefaults(b,this.options);var d=new OpenLayers.Protocol.Response({reqFeatures:a,requestType:"delete"}),e=this.deleteWithPOST?"POST":"DELETE",c={url:c,callback:this.createCallback(this.handleDelete,d,b),headers:b.headers};this.deleteWithPOST&&(c.data=this.format.write(a));d.priv=OpenLayers.Request[e](c);
+return d},handleDelete:function(a,b){this.handleResponse(a,b)},handleResponse:function(a,b){var c=a.priv;b.callback&&(200<=c.status&&300>c.status?("delete"!=a.requestType&&(a.features=this.parseFeatures(c)),a.code=OpenLayers.Protocol.Response.SUCCESS):a.code=OpenLayers.Protocol.Response.FAILURE,b.callback.call(b.scope,a))},parseFeatures:function(a){var b=a.responseXML;b&&b.documentElement||(b=a.responseText);return!b||0>=b.length?null:this.format.read(b)},commit:function(a,b){function c(a){for(var b=
+a.features?a.features.length:0,c=Array(b),e=0;e<b;++e)c[e]=a.features[e].fid;q.insertIds=c;d.apply(this,[a])}function d(a){this.callUserCallback(a,b);n=n&&a.success();f++;f>=p&&b.callback&&(q.code=n?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE,b.callback.apply(b.scope,[q]))}b=OpenLayers.Util.applyDefaults(b,this.options);var e=[],f=0,g={};g[OpenLayers.State.INSERT]=[];g[OpenLayers.State.UPDATE]=[];g[OpenLayers.State.DELETE]=[];for(var h,k,l=[],m=0,r=a.length;m<r;++m)if(h=
+a[m],k=g[h.state])k.push(h),l.push(h);var p=(0<g[OpenLayers.State.INSERT].length?1:0)+g[OpenLayers.State.UPDATE].length+g[OpenLayers.State.DELETE].length,n=!0,q=new OpenLayers.Protocol.Response({reqFeatures:l});h=g[OpenLayers.State.INSERT];0<h.length&&e.push(this.create(h,OpenLayers.Util.applyDefaults({callback:c,scope:this},b.create)));h=g[OpenLayers.State.UPDATE];for(m=h.length-1;0<=m;--m)e.push(this.update(h[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b.update)));h=g[OpenLayers.State.DELETE];
+for(m=h.length-1;0<=m;--m)e.push(this["delete"](h[m],OpenLayers.Util.applyDefaults({callback:d,scope:this},b["delete"])));return e},abort:function(a){a&&a.priv.abort()},callUserCallback:function(a,b){var c=b[a.requestType];c&&c.callback&&c.callback.call(c.scope,a)},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:!1,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a},destroy:function(){},read:function(a){throw Error("Read not implemented.");},write:function(a){throw Error("Write not implemented.");},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:!1,nativeJSON:function(){return!(!window.JSON||"function"!=typeof JSON.parse||"function"!=typeof JSON.stringify)}(),read:function(a,b){var c;if(this.nativeJSON)c=JSON.parse(a,b);else try{if(/^[\],:{}\s]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))&&(c=eval("("+a+")"),"function"===
+typeof b)){var d=function(a,c){if(c&&"object"===typeof c)for(var e in c)c.hasOwnProperty(e)&&(c[e]=d(e,c[e]));return b(a,c)};c=d("",c)}}catch(e){}this.keepData&&(this.data=c);return c},write:function(a,b){this.pretty=!!b;var c=null,d=typeof a;if(this.serialize[d])try{c=!this.pretty&&this.nativeJSON?JSON.stringify(a):this.serialize[d].apply(this,[a])}catch(e){OpenLayers.Console.error("Trouble serializing: "+e)}return c},writeIndent:function(){var a=[];if(this.pretty)for(var b=0;b<this.level;++b)a.push(this.indent);
+return a.join("")},writeNewline:function(){return this.pretty?this.newline:""},writeSpace:function(){return this.pretty?this.space:""},serialize:{object:function(a){if(null==a)return"null";if(a.constructor==Date)return this.serialize.date.apply(this,[a]);if(a.constructor==Array)return this.serialize.array.apply(this,[a]);var b=["{"];this.level+=1;var c,d,e,f=!1;for(c in a)a.hasOwnProperty(c)&&(d=OpenLayers.Format.JSON.prototype.write.apply(this,[c,this.pretty]),e=OpenLayers.Format.JSON.prototype.write.apply(this,
+[a[c],this.pretty]),null!=d&&null!=e&&(f&&b.push(","),b.push(this.writeNewline(),this.writeIndent(),d,":",this.writeSpace(),e),f=!0));this.level-=1;b.push(this.writeNewline(),this.writeIndent(),"}");return b.join("")},array:function(a){var b,c=["["];this.level+=1;for(var d=0,e=a.length;d<e;++d)b=OpenLayers.Format.JSON.prototype.write.apply(this,[a[d],this.pretty]),null!=b&&(0<d&&c.push(","),c.push(this.writeNewline(),this.writeIndent(),b));this.level-=1;c.push(this.writeNewline(),this.writeIndent(),
+"]");return c.join("")},string:function(a){var b={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return/["\\\x00-\x1f]/.test(a)?'"'+a.replace(/([\x00-\x1f\\"])/g,function(a,d){var e=b[d];if(e)return e;e=d.charCodeAt();return"\\u00"+Math.floor(e/16).toString(16)+(e%16).toString(16)})+'"':'"'+a+'"'},number:function(a){return isFinite(a)?String(a):"null"},"boolean":function(a){return String(a)},date:function(a){function b(a){return 10>a?"0"+a:a}return'"'+a.getFullYear()+
+"-"+b(a.getMonth()+1)+"-"+b(a.getDate())+"T"+b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+'"'}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(a){window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM"));OpenLayers.Format.prototype.initialize.apply(this,[a]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var b in this.namespaces)this.namespaceAlias[this.namespaces[b]]=b},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,
+arguments)},setNamespace:function(a,b){this.namespaces[a]=b;this.namespaceAlias[b]=a},read:function(a){var b=a.indexOf("<");0<b&&(a=a.substring(b));b=OpenLayers.Util.Try(OpenLayers.Function.bind(function(){var b;b=window.ActiveXObject&&!this.xmldom?new ActiveXObject("Microsoft.XMLDOM"):this.xmldom;b.loadXML(a);return b},this),function(){return(new DOMParser).parseFromString(a,"text/xml")},function(){var b=new XMLHttpRequest;b.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(a),!1);b.overrideMimeType&&
+b.overrideMimeType("text/xml");b.send(null);return b.responseXML});this.keepData&&(this.data=b);return b},write:function(a){if(this.xmldom)a=a.xml;else{var b=new XMLSerializer;if(1==a.nodeType){var c=document.implementation.createDocument("","",null);c.importNode&&(a=c.importNode(a,!0));c.appendChild(a);a=b.serializeToString(c)}else a=b.serializeToString(a)}return a},createElementNS:function(a,b){return this.xmldom?"string"==typeof a?this.xmldom.createNode(1,b,a):this.xmldom.createNode(1,b,""):document.createElementNS(a,
+b)},createDocumentFragment:function(){return this.xmldom?this.xmldom.createDocumentFragment():document.createDocumentFragment()},createTextNode:function(a){"string"!==typeof a&&(a=String(a));return this.xmldom?this.xmldom.createTextNode(a):document.createTextNode(a)},getElementsByTagNameNS:function(a,b,c){var d=[];if(a.getElementsByTagNameNS)d=a.getElementsByTagNameNS(b,c);else{a=a.getElementsByTagName("*");for(var e,f,g=0,h=a.length;g<h;++g)if(e=a[g],f=e.prefix?e.prefix+":"+c:c,"*"==c||f==e.nodeName)"*"!=
+b&&b!=e.namespaceURI||d.push(e)}return d},getAttributeNodeNS:function(a,b,c){var d=null;if(a.getAttributeNodeNS)d=a.getAttributeNodeNS(b,c);else{a=a.attributes;for(var e,f,g=0,h=a.length;g<h;++g)if(e=a[g],e.namespaceURI==b&&(f=e.prefix?e.prefix+":"+c:c,f==e.nodeName)){d=e;break}}return d},getAttributeNS:function(a,b,c){var d="";if(a.getAttributeNS)d=a.getAttributeNS(b,c)||"";else if(a=this.getAttributeNodeNS(a,b,c))d=a.nodeValue;return d},getChildValue:function(a,b){var c=b||"";if(a)for(var d=a.firstChild;d;d=
+d.nextSibling)switch(d.nodeType){case 3:case 4:c+=d.nodeValue}return c},isSimpleContent:function(a){var b=!0;for(a=a.firstChild;a;a=a.nextSibling)if(1===a.nodeType){b=!1;break}return b},contentType:function(a){var b=!1,c=!1,d=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(a=a.firstChild;a;a=a.nextSibling){switch(a.nodeType){case 1:c=!0;break;case 8:break;default:b=!0}if(c&&b)break}if(c&&b)d=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;else{if(c)return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;if(b)return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE}return d},
+hasAttributeNS:function(a,b,c){var d=!1;return d=a.hasAttributeNS?a.hasAttributeNS(b,c):!!this.getAttributeNodeNS(a,b,c)},setAttributeNS:function(a,b,c,d){if(a.setAttributeNS)a.setAttributeNS(b,c,d);else if(this.xmldom)b?(b=a.ownerDocument.createNode(2,c,b),b.nodeValue=d,a.setAttributeNode(b)):a.setAttribute(c,d);else throw"setAttributeNS not implemented";},createElementNSPlus:function(a,b){b=b||{};var c=b.uri||this.namespaces[b.prefix];c||(c=a.indexOf(":"),c=this.namespaces[a.substring(0,c)]);c||
+(c=this.namespaces[this.defaultPrefix]);c=this.createElementNS(c,a);b.attributes&&this.setAttributes(c,b.attributes);var d=b.value;null!=d&&c.appendChild(this.createTextNode(d));return c},setAttributes:function(a,b){var c,d,e;for(e in b)null!=b[e]&&b[e].toString&&(c=b[e].toString(),d=this.namespaces[e.substring(0,e.indexOf(":"))]||null,this.setAttributeNS(a,d,e,c))},readNode:function(a,b){b||(b={});var c=this.readers[a.namespaceURI?this.namespaceAlias[a.namespaceURI]:this.defaultPrefix];if(c){var d=
+a.localName||a.nodeName.split(":").pop();(c=c[d]||c["*"])&&c.apply(this,[a,b])}return b},readChildNodes:function(a,b){b||(b={});for(var c=a.childNodes,d,e=0,f=c.length;e<f;++e)d=c[e],1==d.nodeType&&this.readNode(d,b);return b},writeNode:function(a,b,c){var d,e=a.indexOf(":");0<e?(d=a.substring(0,e),a=a.substring(e+1)):d=c?this.namespaceAlias[c.namespaceURI]:this.defaultPrefix;b=this.writers[d][a].apply(this,[b]);c&&c.appendChild(b);return b},getChildEl:function(a,b,c){return a&&this.getThisOrNextEl(a.firstChild,
+b,c)},getNextEl:function(a,b,c){return a&&this.getThisOrNextEl(a.nextSibling,b,c)},getThisOrNextEl:function(a,b,c){a:for(;a;a=a.nextSibling)switch(a.nodeType){case 1:if(!(b&&b!==(a.localName||a.nodeName.split(":").pop())||c&&c!==a.namespaceURI))break a;a=null;break a;case 3:if(/^\s*$/.test(a.nodeValue))break;case 4:case 6:case 12:case 10:case 11:a=null;break a}return a||null},lookupNamespaceURI:function(a,b){var c=null;if(a)if(a.lookupNamespaceURI)c=a.lookupNamespaceURI(b);else a:switch(a.nodeType){case 1:if(null!==
+a.namespaceURI&&a.prefix===b){c=a.namespaceURI;break a}if(c=a.attributes.length)for(var d,e=0;e<c;++e)if(d=a.attributes[e],"xmlns"===d.prefix&&d.name==="xmlns:"+b){c=d.value||null;break a}else if("xmlns"===d.name&&null===b){c=d.value||null;break a}c=this.lookupNamespaceURI(a.parentNode,b);break a;case 2:c=this.lookupNamespaceURI(a.ownerElement,b);break a;case 9:c=this.lookupNamespaceURI(a.documentElement,b);break a;case 6:case 12:case 10:case 11:break a;default:c=this.lookupNamespaceURI(a.parentNode,
+b)}return c},getXMLDoc:function(){OpenLayers.Format.XML.document||this.xmldom||(document.implementation&&document.implementation.createDocument?OpenLayers.Format.XML.document=document.implementation.createDocument("","",null):!this.xmldom&&window.ActiveXObject&&(this.xmldom=new ActiveXObject("Microsoft.XMLDOM")));return OpenLayers.Format.XML.document||this.xmldom},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};
+OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:!1,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(a){this.symbolizer={};OpenLayers.Util.extend(this,a);this.symbolizers&&delete this.symbolizer;this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){for(var a in this.symbolizer)this.symbolizer[a]=null;this.symbolizer=null;delete this.symbolizers},evaluate:function(a){var b=
+this.getContext(a),c=!0;if(this.minScaleDenominator||this.maxScaleDenominator)var d=a.layer.map.getScale();this.minScaleDenominator&&(c=d>=OpenLayers.Style.createLiteral(this.minScaleDenominator,b));c&&this.maxScaleDenominator&&(c=d<OpenLayers.Style.createLiteral(this.maxScaleDenominator,b));c&&this.filter&&(c="OpenLayers.Filter.FeatureId"==this.filter.CLASS_NAME?this.filter.evaluate(a):this.filter.evaluate(b));return c},getContext:function(a){var b=this.context;b||(b=a.attributes||a.data);"function"==
+typeof this.context&&(b=this.context(a));return b},clone:function(){var a=OpenLayers.Util.extend({},this);if(this.symbolizers){var b=this.symbolizers.length;a.symbolizers=Array(b);for(var c=0;c<b;++c)a.symbolizers[c]=this.symbolizers[c].clone()}else{a.symbolizer={};for(var d in this.symbolizer)b=this.symbolizer[d],c=typeof b,"object"===c?a.symbolizer[d]=OpenLayers.Util.extend({},b):"string"===c&&(a.symbolizer[d]=b)}a.filter=this.filter&&this.filter.clone();a.context=this.context&&OpenLayers.Util.extend({},
+this.context);return new OpenLayers.Rule(a)},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:!1,displayClass:"",title:"",autoActivate:!1,active:null,handlerOptions:null,handler:null,eventListeners:null,events:null,initialize:function(a){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,a);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners);null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+
+"_"))},destroy:function(){this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy(),this.events=null);this.eventListeners=null;this.handler&&(this.handler.destroy(),this.handler=null);if(this.handlers){for(var a in this.handlers)this.handlers.hasOwnProperty(a)&&"function"==typeof this.handlers[a].destroy&&this.handlers[a].destroy();this.handlers=null}this.map&&(this.map.removeControl(this),this.map=null);this.div=null},setMap:function(a){this.map=a;this.handler&&
+this.handler.setMap(a)},draw:function(a){null==this.div&&(this.div=OpenLayers.Util.createDiv(this.id),this.div.className=this.displayClass,this.allowSelection||(this.div.className+=" olControlNoSelect",this.div.setAttribute("unselectable","on",0),this.div.onselectstart=OpenLayers.Function.False),""!=this.title&&(this.div.title=this.title));null!=a&&(this.position=a.clone());this.moveTo(this.position);return this.div},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
+a.y+"px")},activate:function(){if(this.active)return!1;this.handler&&this.handler.activate();this.active=!0;this.map&&OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");this.events.triggerEvent("activate");return!0},deactivate:function(){return this.active?(this.handler&&this.handler.deactivate(),this.active=!1,this.map&&OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active"),this.events.triggerEvent("deactivate"),
+!0):!1},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:!1,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:!1,fixPadding:function(){"number"==typeof this.padding&&(this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding))},panMapIfOutOfView:!1,
+keepInMap:!1,closeOnMove:!1,map:null,initialize:function(a,b,c,d,e,f){null==a&&(a=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"));this.id=a;this.lonlat=b;this.contentSize=null!=c?c:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);null!=d&&(this.contentHTML=d);this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;
+this.groupDiv=OpenLayers.Util.createDiv(this.id+"_GroupDiv",null,null,null,"relative",null,"hidden");a=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(a,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);e&&this.addCloseBox(f);this.registerEvents()},destroy:function(){this.border=this.opacity=this.backgroundColor=this.contentHTML=this.size=this.lonlat=this.id=
+null;this.closeOnMove&&this.map&&this.map.events.unregister("movestart",this,this.hide);this.events.destroy();this.events=null;this.closeDiv&&(OpenLayers.Event.stopObservingElement(this.closeDiv),this.groupDiv.removeChild(this.closeDiv));this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;null!=this.map&&this.map.removePopup(this);this.panMapIfOutOfView=this.padding=this.maxSize=this.minSize=this.autoSize=this.div=this.map=null},draw:function(a){null==a&&null!=this.lonlat&&null!=
+this.map&&(a=this.map.getLayerPxFromLonLat(this.lonlat));this.closeOnMove&&this.map.events.register("movestart",this,this.hide);this.disableFirefoxOverflowHack||"firefox"!=OpenLayers.BROWSER_NAME||(this.map.events.register("movestart",this,function(){var a=document.defaultView.getComputedStyle(this.contentDiv,null).getPropertyValue("overflow");"hidden"!=a&&(this.contentDiv._oldOverflow=a,this.contentDiv.style.overflow="hidden")}),this.map.events.register("moveend",this,function(){var a=this.contentDiv._oldOverflow;
+a&&(this.contentDiv.style.overflow=a,this.contentDiv._oldOverflow=null)}));this.moveTo(a);this.autoSize||this.size||this.setSize(this.contentSize);this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.panMapIfOutOfView&&this.panIntoView();return this.div},updatePosition:function(){if(this.lonlat&&this.map){var a=this.map.getLayerPxFromLonLat(this.lonlat);a&&this.moveTo(a)}},moveTo:function(a){null!=a&&null!=this.div&&(this.div.style.left=a.x+"px",this.div.style.top=
+a.y+"px")},visible:function(){return OpenLayers.Element.visible(this.div)},toggle:function(){this.visible()?this.hide():this.show()},show:function(){this.div.style.display="";this.panMapIfOutOfView&&this.panIntoView()},hide:function(){this.div.style.display="none"},setSize:function(a){this.size=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),
+c=c+(e+b.right);this.size.w+=c;this.size.h+=d;"msie"==OpenLayers.BROWSER_NAME&&(this.contentSize.w+=b.left+b.right,this.contentSize.h+=b.bottom+b.top);null!=this.div&&(this.div.style.width=this.size.w+"px",this.div.style.height=this.size.h+"px");null!=this.contentDiv&&(this.contentDiv.style.width=a.w+"px",this.contentDiv.style.height=a.h+"px")},updateSize:function(){var a="<div class='"+this.contentDisplayClass+"'>"+this.contentDiv.innerHTML+"</div>",b=this.map?this.map.div:document.body,c=OpenLayers.Util.getRenderedDimensions(a,
+null,{displayClass:this.displayClass,containerElement:b}),d=this.getSafeContentSize(c),e=null;d.equals(c)?e=c:(c={w:d.w<c.w?d.w:null,h:d.h<c.h?d.h:null},c.w&&c.h?e=d:(a=OpenLayers.Util.getRenderedDimensions(a,c,{displayClass:this.contentDisplayClass,containerElement:b}),"hidden"!=OpenLayers.Element.getStyle(this.contentDiv,"overflow")&&a.equals(d)&&(d=OpenLayers.Util.getScrollbarWidth(),c.w?a.h+=d:a.w+=d),e=this.getSafeContentSize(a)));this.setSize(e)},setBackgroundColor:function(a){void 0!=a&&(this.backgroundColor=
+a);null!=this.div&&(this.div.style.backgroundColor=this.backgroundColor)},setOpacity:function(a){void 0!=a&&(this.opacity=a);null!=this.div&&(this.div.style.opacity=this.opacity,this.div.style.filter="alpha(opacity="+100*this.opacity+")")},setBorder:function(a){void 0!=a&&(this.border=a);null!=this.div&&(this.div.style.border=this.border)},setContentHTML:function(a){null!=a&&(this.contentHTML=a);null!=this.contentDiv&&null!=this.contentHTML&&this.contentHTML!=this.contentDiv.innerHTML&&(this.contentDiv.innerHTML=
+this.contentHTML,this.autoSize&&(this.registerImageListeners(),this.updateSize()))},registerImageListeners:function(){for(var a=function(){null!==this.popup.id&&(this.popup.updateSize(),this.popup.visible()&&this.popup.panMapIfOutOfView&&this.popup.panIntoView(),OpenLayers.Event.stopObserving(this.img,"load",this.img._onImgLoad))},b=this.contentDiv.getElementsByTagName("img"),c=0,d=b.length;c<d;c++){var e=b[c];if(0==e.width||0==e.height)e._onImgLoad=OpenLayers.Function.bind(a,{popup:this,img:e}),
+OpenLayers.Event.observe(e,"load",e._onImgLoad)}},getSafeContentSize:function(a){a=a.clone();var b=this.getContentDivPadding(),c=b.left+b.right,d=b.top+b.bottom;this.fixPadding();c+=this.padding.left+this.padding.right;d+=this.padding.top+this.padding.bottom;if(this.closeDiv)var e=parseInt(this.closeDiv.style.width),c=c+(e+b.right);this.minSize&&(a.w=Math.max(a.w,this.minSize.w-c),a.h=Math.max(a.h,this.minSize.h-d));this.maxSize&&(a.w=Math.min(a.w,this.maxSize.w-c),a.h=Math.min(a.h,this.maxSize.h-
+d));if(this.map&&this.map.size){e=b=0;if(this.keepInMap&&!this.panMapIfOutOfView)switch(e=this.map.getPixelFromLonLat(this.lonlat),this.relativePosition){case "tr":b=e.x;e=this.map.size.h-e.y;break;case "tl":b=this.map.size.w-e.x;e=this.map.size.h-e.y;break;case "bl":b=this.map.size.w-e.x;e=e.y;break;case "br":b=e.x;e=e.y;break;default:b=e.x,e=this.map.size.h-e.y}d=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-d-e;a.w=Math.min(a.w,this.map.size.w-this.map.paddingForPopups.left-
+this.map.paddingForPopups.right-c-b);a.h=Math.min(a.h,d)}return a},getContentDivPadding:function(){var a=this._contentDivPadding;a||(null==this.div.parentNode&&(this.div.style.display="none",document.body.appendChild(this.div)),this._contentDivPadding=a=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,
+"padding-top")),this.div.parentNode==document.body&&(document.body.removeChild(this.div),this.div.style.display=""));return a},addCloseBox:function(a){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,{w:17,h:17});this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);a=a||function(a){this.hide();OpenLayers.Event.stop(a)};OpenLayers.Event.observe(this.closeDiv,
+"touchend",OpenLayers.Function.bindAsEventListener(a,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(a,this))},panIntoView:function(){var a=this.map.getSize(),b=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top))),c=b.clone();b.x<this.map.paddingForPopups.left?c.x=this.map.paddingForPopups.left:b.x+this.size.w>a.w-this.map.paddingForPopups.right&&(c.x=a.w-this.map.paddingForPopups.right-this.size.w);
+b.y<this.map.paddingForPopups.top?c.y=this.map.paddingForPopups.top:b.y+this.size.h>a.h-this.map.paddingForPopups.bottom&&(c.y=a.h-this.map.paddingForPopups.bottom-this.size.h);this.map.pan(b.x-c.x,b.y-c.y)},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,!0);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,touchstart:function(a){OpenLayers.Event.stop(a,!0)},
+scope:this})},onmousedown:function(a){this.mousedown=!0;OpenLayers.Event.stop(a,!0)},onmousemove:function(a){this.mousedown&&OpenLayers.Event.stop(a,!0)},onmouseup:function(a){this.mousedown&&(this.mousedown=!1,OpenLayers.Event.stop(a,!0))},onclick:function(a){OpenLayers.Event.stop(a,!0)},onmouseout:function(a){this.mousedown=!1},ondblclick:function(a){OpenLayers.Event.stop(a,!0)},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";
+OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:!0,anchor:null,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.prototype.initialize.apply(this,[a,b,c,d,f,g]);this.anchor=null!=e?e:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)}},destroy:function(){this.relativePosition=this.anchor=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments)},
+moveTo:function(a){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(a);OpenLayers.Popup.prototype.moveTo.call(this,this.calculateNewPx(a));this.relativePosition!=b&&this.updateRelativePosition()},setSize:function(a){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if(this.lonlat&&this.map){var b=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(b)}},calculateRelativePosition:function(a){a=this.map.getLonLatFromLayerPx(a);a=this.map.getExtent().determineQuadrant(a);
+return OpenLayers.Bounds.oppositeQuadrant(a)},updateRelativePosition:function(){},calculateNewPx:function(a){a=a.offset(this.anchor.offset);var b=this.size||this.contentSize,c="t"==this.relativePosition.charAt(0);a.y+=c?-b.h:this.anchor.size.h;c="l"==this.relativePosition.charAt(1);a.x+=c?-b.w:this.anchor.size.w;return a},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:!1,positionBlocks:null,blocks:null,fixedRelativePosition:!1,initialize:function(a,b,c,d,e,f,g){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);this.fixedRelativePosition&&(this.updateRelativePosition(),this.calculateRelativePosition=function(a){return this.relativePosition});this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;f&&(this.closeDiv.style.zIndex=
+1);this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%"},destroy:function(){this.isAlphaImage=this.imageSize=this.imageSrc=null;this.fixedRelativePosition=!1;this.positionBlocks=null;for(var a=0;a<this.blocks.length;a++){var b=this.blocks[a];b.image&&b.div.removeChild(b.image);b.image=null;b.div&&this.groupDiv.removeChild(b.div);b.div=null}this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,
+arguments)},setBackgroundColor:function(a){},setBorder:function(){},setOpacity:function(a){},setSize:function(a){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks()},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var a=this.getContentDivPadding();this.closeDiv.style.right=a.right+this.padding.right+"px";this.closeDiv.style.top=a.top+this.padding.top+"px"}this.updateBlocks()},calculateNewPx:function(a){var b=
+OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);return b=b.offset(this.positionBlocks[this.relativePosition].offset)},createBlocks:function(){this.blocks=[];var a=null,b;for(b in this.positionBlocks){a=b;break}a=this.positionBlocks[a];for(b=0;b<a.blocks.length;b++){var c={};this.blocks.push(c);c.div=OpenLayers.Util.createDiv(this.id+"_FrameDecorationDiv_"+b,null,null,null,"absolute",null,"hidden",null);c.image=(this.isAlphaImage?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage)(this.id+
+"_FrameDecorationImg_"+b,null,this.imageSize,this.imageSrc,"absolute",null,null,null);c.div.appendChild(c.image);this.groupDiv.appendChild(c.div)}},updateBlocks:function(){this.blocks||this.createBlocks();if(this.size&&this.relativePosition){for(var a=this.positionBlocks[this.relativePosition],b=0;b<a.blocks.length;b++){var c=a.blocks[b],d=this.blocks[b],e=c.anchor.left,f=c.anchor.bottom,g=c.anchor.right,h=c.anchor.top,k=isNaN(c.size.w)?this.size.w-(g+e):c.size.w,l=isNaN(c.size.h)?this.size.h-(f+
+h):c.size.h;d.div.style.width=(0>k?0:k)+"px";d.div.style.height=(0>l?0:l)+"px";d.div.style.left=null!=e?e+"px":"";d.div.style.bottom=null!=f?f+"px":"";d.div.style.right=null!=g?g+"px":"";d.div.style.top=null!=h?h+"px":"";d.image.style.left=c.position.x+"px";d.image.style.top=c.position.y+"px"}this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px"}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:!0,panMapIfOutOfView:!0,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:!1,fixedRelativePosition:!1,positionBlocks:{tl:{offset:new OpenLayers.Pixel(44,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,
+50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},tr:{offset:new OpenLayers.Pixel(-45,0),padding:new OpenLayers.Bounds(8,40,8,9),blocks:[{size:new OpenLayers.Size("auto",
+"auto"),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,
+0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},bl:{offset:new OpenLayers.Pixel(45,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,
+21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},br:{offset:new OpenLayers.Pixel(-44,0),padding:new OpenLayers.Bounds(8,9,8,40),blocks:[{size:new OpenLayers.Size("auto","auto"),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,"auto"),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,
+0)},{size:new OpenLayers.Size("auto",21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(a,b,c,d,e,f,g){this.imageSrc=OpenLayers.Util.getImageLocation("cloud-popup-relative.png");
+OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:!1,evt:null,touch:!1,initialize:function(a,b,c){OpenLayers.Util.extend(this,c);this.control=a;this.callbacks=b;(a=this.map||a.map)&&this.setMap(a);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){return null==this.keyMask?!0:((a.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(a.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(a.altKey?OpenLayers.Handler.MOD_ALT:
+0)|(a.metaKey?OpenLayers.Handler.MOD_META:0))==this.keyMask},activate:function(){if(this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.register(a[b],this[a[b]]);return this.active=!0},deactivate:function(){if(!this.active)return!1;for(var a=OpenLayers.Events.prototype.BROWSER_EVENTS,b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]]);this.active=this.touch=!1;return!0},startTouch:function(){if(!this.touch){this.touch=!0;
+for(var a="mousedown mouseup mousemove click dblclick mouseout".split(" "),b=0,c=a.length;b<c;b++)this[a[b]]&&this.unregister(a[b],this[a[b]])}},callback:function(a,b){a&&this.callbacks[a]&&this.callbacks[a].apply(this.control,b)},register:function(a,b){this.map.events.registerPriority(a,this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return!0},
+destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.MOD_META=8;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!0,dragging:!1,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:!1,documentEvents:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(!0===this.documentDrag){var d=this;this._docMove=function(a){d.mousemove({xy:{x:a.clientX,y:a.clientY},element:document})};this._docUp=function(a){d.mouseup({xy:{x:a.clientX,y:a.clientY}})}}},
+dragstart:function(a){var b=!0;this.dragging=!1;this.checkModifiers(a)&&(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))?(this.started=!0,this.last=this.start=a.xy,OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown"),this.down(a),this.callback("down",[a.xy]),OpenLayers.Event.preventDefault(a),this.oldOnselectstart||(this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True),document.onselectstart=OpenLayers.Function.False,b=!this.stopDown):
+(this.started=!1,this.last=this.start=null);return b},dragmove:function(a){this.lastMoveEvt=a;!this.started||this.timeoutId||a.xy.x==this.last.x&&a.xy.y==this.last.y||(!0===this.documentDrag&&this.documentEvents&&(a.element===document?(this.adjustXY(a),this.setEvent(a)):this.removeDocumentEvents()),0<this.interval&&(this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval)),this.dragging=!0,this.move(a),this.callback("move",[a.xy]),this.oldOnselectstart||(this.oldOnselectstart=
+document.onselectstart,document.onselectstart=OpenLayers.Function.False),this.last=a.xy);return!0},dragend:function(a){if(this.started){!0===this.documentDrag&&this.documentEvents&&(this.adjustXY(a),this.removeDocumentEvents());var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(a);this.callback("up",[a.xy]);b&&this.callback("done",[a.xy]);document.onselectstart=this.oldOnselectstart}return!0},down:function(a){},move:function(a){},
+up:function(a){},out:function(a){},mousedown:function(a){return this.dragstart(a)},touchstart:function(a){this.startTouch();return this.dragstart(a)},mousemove:function(a){return this.dragmove(a)},touchmove:function(a){return this.dragmove(a)},removeTimeout:function(){this.timeoutId=null;this.dragging&&this.mousemove(this.lastMoveEvt)},mouseup:function(a){return this.dragend(a)},touchend:function(a){a.xy=this.last;return this.dragend(a)},mouseout:function(a){if(this.started&&OpenLayers.Util.mouseLeft(a,
+this.map.viewPortDiv))if(!0===this.documentDrag)this.addDocumentEvents();else{var b=this.start!=this.last;this.dragging=this.started=!1;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(a);this.callback("out",[]);b&&this.callback("done",[a.xy]);document.onselectstart&&(document.onselectstart=this.oldOnselectstart)}return!0},click:function(a){return this.start==this.last},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.dragging=
+!1,a=!0);return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.dragging=this.started=!1,this.last=this.start=null,a=!0,OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown"));return a},adjustXY:function(a){var b=OpenLayers.Util.pagePosition(this.map.viewPortDiv);a.xy.x-=b[0];a.xy.y-=b[1]},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=!0;OpenLayers.Event.observe(document,"mousemove",
+this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp)},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=!1;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp)},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{click:{"in":"click",out:"clickout"},mousemove:{"in":"over",out:"out"},dblclick:{"in":"dblclick",out:null},mousedown:{"in":null,out:null},mouseup:{"in":null,out:null},touchstart:{"in":"click",out:"clickout"}},feature:null,lastFeature:null,down:null,up:null,clickTolerance:4,geometryTypes:null,stopClick:!0,stopDown:!0,stopUp:!1,initialize:function(a,b,c,d){OpenLayers.Handler.prototype.initialize.apply(this,[a,c,d]);this.layer=
+b},touchstart:function(a){this.startTouch();return OpenLayers.Event.isMultiTouch(a)?!0:this.mousedown(a)},touchmove:function(a){OpenLayers.Event.preventDefault(a)},mousedown:function(a){if(OpenLayers.Event.isLeftClick(a)||OpenLayers.Event.isSingleTouch(a))this.down=a.xy;return this.handle(a)?!this.stopDown:!0},mouseup:function(a){this.up=a.xy;return this.handle(a)?!this.stopUp:!0},click:function(a){return this.handle(a)?!this.stopClick:!0},mousemove:function(a){if(!this.callbacks.over&&!this.callbacks.out)return!0;
+this.handle(a);return!0},dblclick:function(a){return!this.handle(a)},geometryTypeMatches:function(a){return null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,a.geometry.CLASS_NAME)},handle:function(a){this.feature&&!this.feature.layer&&(this.feature=null);var b=a.type,c=!1,d=!!this.feature,e="click"==b||"dblclick"==b||"touchstart"==b;(this.feature=this.layer.getFeatureFromEvent(a))&&!this.feature.layer&&(this.feature=null);this.lastFeature&&!this.lastFeature.layer&&(this.lastFeature=
+null);this.feature?("touchstart"===b&&OpenLayers.Event.preventDefault(a),a=this.feature!=this.lastFeature,this.geometryTypeMatches(this.feature)?(d&&a?(this.lastFeature&&this.triggerCallback(b,"out",[this.lastFeature]),this.triggerCallback(b,"in",[this.feature])):d&&!e||this.triggerCallback(b,"in",[this.feature]),this.lastFeature=this.feature,c=!0):(this.lastFeature&&(d&&a||e)&&this.triggerCallback(b,"out",[this.lastFeature]),this.feature=null)):this.lastFeature&&(d||e)&&this.triggerCallback(b,"out",
+[this.lastFeature]);return c},triggerCallback:function(a,b,c){if(b=this.EVENTMAP[a][b])"click"==a&&this.up&&this.down?(Math.sqrt(Math.pow(this.up.x-this.down.x,2)+Math.pow(this.up.y-this.down.y,2))<=this.clickTolerance&&this.callback(b,c),this.up=this.down=null):this.callback(b,c)},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.moveLayerToTop(),this.map.events.on({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);
+return a},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.moveLayerBack(),this.up=this.down=this.lastFeature=this.feature=null,this.map.events.un({removelayer:this.handleMapEvents,changelayer:this.handleMapEvents,scope:this}),a=!0);return a},handleMapEvents:function(a){"removelayer"!=a.type&&"order"!=a.property||this.moveLayerToTop()},moveLayerToTop:function(){var a=Math.max(this.map.Z_INDEX_BASE.Feature-1,this.layer.getZIndex())+1;this.layer.setZIndex(a)},
+moveLayerBack:function(){var a=this.layer.getZIndex()-1;a>=this.map.Z_INDEX_BASE.Feature?this.layer.setZIndex(a):this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer))},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(a,b){},onDrag:function(a,b){},onComplete:function(a,b){},onEnter:function(a){},onLeave:function(a){},documentDrag:!1,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);this.layer=a;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,
+up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})}},clickFeature:function(a){this.handlers.feature.touch&&!this.over&&this.overFeature(a)&&(this.handlers.drag.dragstart(this.handlers.feature.evt),this.handlers.drag.stopDown=
+!1)},clickoutFeature:function(a){this.handlers.feature.touch&&this.over&&(this.outFeature(a),this.handlers.drag.stopDown=!0)},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[])},activate:function(){return this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=!1;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,
+this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},overFeature:function(a){var b=!1;this.handlers.drag.dragging?this.over=this.feature.id==a.id?!0:!1:(this.feature=a,this.handlers.drag.activate(),this.over=b=!0,OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onEnter(a));return b},downFeature:function(a){this.lastPixel=a;this.onStart(this.feature,a)},moveFeature:function(a){var b=this.map.getResolution();this.feature.geometry.move(b*
+(a.x-this.lastPixel.x),b*(this.lastPixel.y-a.y));this.layer.drawFeature(this.feature);this.lastPixel=a;this.onDrag(this.feature,a)},upFeature:function(a){this.over||this.handlers.drag.deactivate()},doneDragging:function(a){this.onComplete(this.feature,a)},outFeature:function(a){this.handlers.drag.dragging?this.feature.id==a.id&&(this.over=!1):(this.over=!1,this.handlers.drag.deactivate(),OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over"),this.onLeave(a),this.feature=null)},
+cancel:function(){this.handlers.drag.deactivate();this.over=!1},setMap:function(a){this.handlers.drag.setMap(a);this.handlers.feature.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",boxOffsets:null,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask})},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.dragHandler&&(this.dragHandler.destroy(),this.dragHandler=
+null)},setMap:function(a){OpenLayers.Handler.prototype.setMap.apply(this,arguments);this.dragHandler&&this.dragHandler.setMap(a)},startBox:function(a){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv("zoomBox",{x:-9999,y:-9999});this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.viewPortDiv,"olDrawBox")},moveBox:function(a){var b=this.dragHandler.start.x,
+c=this.dragHandler.start.y,d=Math.abs(b-a.x),e=Math.abs(c-a.y),f=this.getBoxOffsets();this.zoomBox.style.width=d+f.width+1+"px";this.zoomBox.style.height=e+f.height+1+"px";this.zoomBox.style.left=(a.x<b?b-d-f.left:b-f.left)+"px";this.zoomBox.style.top=(a.y<c?c-e-f.top:c-f.top)+"px"},endBox:function(a){var b;if(5<Math.abs(this.dragHandler.start.x-a.x)||5<Math.abs(this.dragHandler.start.y-a.y)){var c=this.dragHandler.start;b=Math.min(c.y,a.y);var d=Math.max(c.y,a.y),e=Math.min(c.x,a.x);a=Math.max(c.x,
+a.x);b=new OpenLayers.Bounds(e,d,a,b)}else b=this.dragHandler.start.clone();this.removeBox();this.callback("done",[b])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.boxOffsets=this.zoomBox=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDrawBox")},activate:function(){return OpenLayers.Handler.prototype.activate.apply(this,arguments)?(this.dragHandler.activate(),!0):!1},deactivate:function(){return OpenLayers.Handler.prototype.deactivate.apply(this,arguments)?
+(this.dragHandler.deactivate()&&this.zoomBox&&this.removeBox(),!0):!1},getBoxOffsets:function(){if(!this.boxOffsets){var a=document.createElement("div");a.style.position="absolute";a.style.border="1px solid black";a.style.width="3px";document.body.appendChild(a);var b=3==a.clientWidth;document.body.removeChild(a);var a=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width")),c=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width")),d=parseInt(OpenLayers.Element.getStyle(this.zoomBox,
+"border-top-width")),e=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:a,right:c,top:d,bottom:e,width:!1===b?a+c:0,height:!1===b?d+e:0}}return this.boxOffsets},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:!1,keyMask:null,alwaysZoom:!1,zoomOnClick:!0,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(a){if(a instanceof OpenLayers.Bounds){var b,c=a.getCenterPixel();if(this.out){b=Math.min(this.map.size.h/(a.bottom-a.top),this.map.size.w/(a.right-a.left));var d=this.map.getExtent(),e=this.map.getLonLatFromPixel(c),f=e.lon-d.getWidth()/
+2*b;a=e.lon+d.getWidth()/2*b;var g=e.lat-d.getHeight()/2*b;b=e.lat+d.getHeight()/2*b;b=new OpenLayers.Bounds(f,g,a,b)}else f=this.map.getLonLatFromPixel({x:a.left,y:a.bottom}),a=this.map.getLonLatFromPixel({x:a.right,y:a.top}),b=new OpenLayers.Bounds(f.lon,f.lat,a.lon,a.lat);f=this.map.getZoom();g=this.map.getSize();a=g.w/2;g=g.h/2;b=this.map.getZoomForExtent(b);d=this.map.getResolution();e=this.map.getResolutionForZoom(b);d==e?this.map.setCenter(this.map.getLonLatFromPixel(c)):this.map.zoomTo(b,
+{x:(d*c.x-e*a)/(d-e),y:(d*c.y-e*g)/(d-e)});f==this.map.getZoom()&&!0==this.alwaysZoom&&this.map.zoomTo(f+(this.out?-1:1))}else this.zoomOnClick&&(this.out?this.map.zoomTo(this.map.getZoom()-1,a):this.map.zoomTo(this.map.getZoom()+1,a))},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:!1,interval:0,documentDrag:!1,kinetic:null,enableKinetic:!0,kineticInterval:10,draw:function(){if(this.enableKinetic&&OpenLayers.Kinetic){var a={interval:this.kineticInterval};"object"===typeof this.enableKinetic&&(a=OpenLayers.Util.extend(a,this.enableKinetic));this.kinetic=new OpenLayers.Kinetic(a)}this.handler=new OpenLayers.Handler.Drag(this,{move:this.panMap,done:this.panMapDone,down:this.panMapStart},
+{interval:this.interval,documentDrag:this.documentDrag})},panMapStart:function(){this.kinetic&&this.kinetic.begin()},panMap:function(a){this.kinetic&&this.kinetic.update(a);this.panned=!0;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!0,animate:!1})},panMapDone:function(a){if(this.panned){var b=null;this.kinetic&&(b=this.kinetic.end(a));this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:!!b,animate:!1});if(b){var c=this;this.kinetic.move(b,function(a,b,
+f){c.map.pan(a,b,{dragging:!f,animate:!1})})}this.panned=!1}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,interval:0,maxDelta:Number.POSITIVE_INFINITY,delta:0,cumulative:!0,initialize:function(a,b,c){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(a){if(this.map&&this.checkModifiers(a)){for(var b=
+!1,c=!1,d=!1,e=OpenLayers.Event.element(a);null!=e&&!d&&!b;){if(!b)try{var f,b=(f=e.currentStyle?e.currentStyle.overflow:document.defaultView.getComputedStyle(e,null).getPropertyValue("overflow"))&&"auto"==f||"scroll"==f}catch(g){}if(!c&&(c=OpenLayers.Element.hasClass(e,"olScrollable"),!c))for(var d=0,h=this.map.layers.length;d<h;d++){var k=this.map.layers[d];if(e==k.div||e==k.pane){c=!0;break}}d=e==this.map.div;e=e.parentNode}if(!b&&d){if(c)if(b=0,a.wheelDelta?(b=a.wheelDelta,0===b%160&&(b*=0.75),
+b/=120):a.detail&&(b=-(a.detail/Math.abs(a.detail))),this.delta+=b,window.clearTimeout(this._timeoutId),this.interval&&Math.abs(this.delta)<this.maxDelta){var l=OpenLayers.Util.extend({},a);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(l)},this),this.interval)}else this.wheelZoom(a);OpenLayers.Event.stop(a)}}},wheelZoom:function(a){var b=this.delta;this.delta=0;b&&(a.xy=this.map.events.getMousePosition(a),0>b?this.callback("down",[a,this.cumulative?Math.max(-this.maxDelta,
+b):-1]):this.callback("up",[a,this.cumulative?Math.min(this.maxDelta,b):1]))},activate:function(a){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",b);OpenLayers.Event.observe(window,"mousewheel",b);OpenLayers.Event.observe(document,"mousewheel",b);return!0}return!1},deactivate:function(a){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;OpenLayers.Event.stopObserving(window,
+"DOMMouseScroll",b);OpenLayers.Event.stopObserving(window,"mousewheel",b);OpenLayers.Event.stopObserving(document,"mousewheel",b);return!0}return!1},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:!0,"double":!1,pixelTolerance:0,dblclickTolerance:13,stopSingle:!1,stopDouble:!1,timerId:null,down:null,last:null,first:null,rightclickTimerId:null,touchstart:function(a){this.startTouch();this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},touchmove:function(a){this.last=this.getEventInfo(a);return!0},touchend:function(a){this.down&&(a.xy=this.last.xy,a.lastTouches=this.last.touches,this.handleSingle(a),
+this.down=null);return!0},mousedown:function(a){this.down=this.getEventInfo(a);this.last=this.getEventInfo(a);return!0},mouseup:function(a){var b=!0;this.checkModifiers(a)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(a)&&(b=this.rightclick(a));return b},rightclick:function(a){if(this.passesTolerance(a)){if(null!=this.rightclickTimerId)return this.clearTimer(),this.callback("dblrightclick",[a]),!this.stopDouble;a=this["double"]?OpenLayers.Util.extend({},a):this.callback("rightclick",
+[a]);a=OpenLayers.Function.bind(this.delayedRightCall,this,a);this.rightclickTimerId=window.setTimeout(a,this.delay)}return!this.stopSingle},delayedRightCall:function(a){this.rightclickTimerId=null;a&&this.callback("rightclick",[a])},click:function(a){this.last||(this.last=this.getEventInfo(a));this.handleSingle(a);return!this.stopSingle},dblclick:function(a){this.handleDouble(a);return!this.stopDouble},handleDouble:function(a){this.passesDblclickTolerance(a)&&(this["double"]&&this.callback("dblclick",
+[a]),this.clearTimer())},handleSingle:function(a){this.passesTolerance(a)&&(null!=this.timerId?(this.last.touches&&1===this.last.touches.length&&(this["double"]&&OpenLayers.Event.preventDefault(a),this.handleDouble(a)),this.last.touches&&2===this.last.touches.length||this.clearTimer()):(this.first=this.getEventInfo(a),a=this.single?OpenLayers.Util.extend({},a):null,this.queuePotentialClick(a)))},queuePotentialClick:function(a){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,
+this,a),this.delay)},passesTolerance:function(a){var b=!0;if(null!=this.pixelTolerance&&this.down&&this.down.xy&&(b=this.pixelTolerance>=this.down.xy.distanceTo(a.xy))&&this.touch&&this.down.touches.length===this.last.touches.length){a=0;for(var c=this.down.touches.length;a<c;++a)if(this.getTouchDistance(this.down.touches[a],this.last.touches[a])>this.pixelTolerance){b=!1;break}}return b},getTouchDistance:function(a,b){return Math.sqrt(Math.pow(a.clientX-b.clientX,2)+Math.pow(a.clientY-b.clientY,
+2))},passesDblclickTolerance:function(a){a=!0;this.down&&this.first&&(a=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance);return a},clearTimer:function(){null!=this.timerId&&(window.clearTimeout(this.timerId),this.timerId=null);null!=this.rightclickTimerId&&(window.clearTimeout(this.rightclickTimerId),this.rightclickTimerId=null)},delayedCall:function(a){this.timerId=null;a&&this.callback("click",[a])},getEventInfo:function(a){var b;if(a.touches){var c=a.touches.length;b=Array(c);for(var d,
+e=0;e<c;e++)d=a.touches[e],b[e]={clientX:d.olClientX,clientY:d.olClientY}}return{xy:a.xy,touches:b}},deactivate:function(){var a=!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.clearTimer(),this.last=this.first=this.down=null,a=!0);return a},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:!1,zoomBox:null,zoomBoxEnabled:!0,zoomWheelEnabled:!0,mouseWheelOptions:null,handleRightClicks:!1,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:!0,initialize:function(a){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();this.dragPan&&this.dragPan.destroy();this.dragPan=null;
+this.zoomBox&&this.zoomBox.destroy();this.zoomBox=null;this.pinchZoom&&this.pinchZoom.destroy();this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();this.zoomWheelEnabled&&this.handlers.wheel.activate();this.handlers.click.activate();this.zoomBoxEnabled&&this.zoomBox.activate();this.pinchZoom&&this.pinchZoom.activate();return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.pinchZoom&&this.pinchZoom.deactivate();
+this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handleRightClicks&&(this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False);this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.defaultClick,dblclick:this.defaultDblClick,dblrightclick:this.defaultDblRightClick},{"double":!0,stopDouble:!0});this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,
+documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},OpenLayers.Util.extend(this.map.fractionalZoom?{}:{cumulative:!1,interval:50,maxDelta:6},this.mouseWheelOptions));OpenLayers.Control.PinchZoom&&(this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},
+this.pinchZoomOptions)))},defaultClick:function(a){a.lastTouches&&2==a.lastTouches.length&&this.map.zoomOut()},defaultDblClick:function(a){this.map.zoomTo(this.map.zoom+1,a.xy)},defaultDblRightClick:function(a){this.map.zoomTo(this.map.zoom-1,a.xy)},wheelChange:function(a,b){this.map.fractionalZoom||(b=Math.round(b));var c=this.map.getZoom(),d;d=Math.max(c+b,0);d=Math.min(d,this.map.getNumZoomLevels());d!==c&&this.map.zoomTo(d,a.xy)},wheelUp:function(a,b){this.wheelChange(a,b||1)},wheelDown:function(a,
+b){this.wheelChange(a,b||-1)},disableZoomBox:function(){this.zoomBoxEnabled=!1;this.zoomBox.deactivate()},enableZoomBox:function(){this.zoomBoxEnabled=!0;this.active&&this.zoomBox.activate()},disableZoomWheel:function(){this.zoomWheelEnabled=!1;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=!0;this.active&&this.handlers.wheel.activate()},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Filter=OpenLayers.Class({initialize:function(a){OpenLayers.Util.extend(this,a)},destroy:function(){},evaluate:function(a){return!0},clone:function(){return null},toString:function(){return OpenLayers.Format&&OpenLayers.Format.CQL?OpenLayers.Format.CQL.prototype.write(this):Object.prototype.toString.call(this)},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:1,alwaysInRange:null,RESOLUTION_PROPERTIES:"scales resolutions maxScale minScale maxResolution minResolution numZoomLevels maxZoomLevel".split(" "),events:null,map:null,isBaseLayer:!1,alpha:!1,displayInLayerSwitcher:!0,visibility:!0,attribution:null,inRange:!1,imageSize:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,
+numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:!1,wrapDateLine:!1,metadata:null,initialize:function(a,b){this.metadata={};b=OpenLayers.Util.extend({},b);null!=this.alwaysInRange&&(b.alwaysInRange=this.alwaysInRange);this.addOptions(b);this.name=a;if(null==this.id&&(this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_"),this.div=OpenLayers.Util.createDiv(this.id),this.div.style.width="100%",this.div.style.height="100%",this.div.dir="ltr",this.events=new OpenLayers.Events(this,
+this.div),this.eventListeners instanceof Object))this.events.on(this.eventListeners)},destroy:function(a){null==a&&(a=!0);null!=this.map&&this.map.removeLayer(this,a);this.options=this.div=this.name=this.map=this.projection=null;this.events&&(this.eventListeners&&this.events.un(this.eventListeners),this.events.destroy());this.events=this.eventListeners=null},clone:function(a){null==a&&(a=new OpenLayers.Layer(this.name,this.getOptions()));OpenLayers.Util.applyDefaults(a,this);a.map=null;return a},
+getOptions:function(){var a={},b;for(b in this.options)a[b]=this[b];return a},setName:function(a){a!=this.name&&(this.name=a,null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"name"}))},addOptions:function(a,b){null==this.options&&(this.options={});a&&("string"==typeof a.projection&&(a.projection=new OpenLayers.Projection(a.projection)),a.projection&&OpenLayers.Util.applyDefaults(a,OpenLayers.Projection.defaults[a.projection.getCode()]),!a.maxExtent||a.maxExtent instanceof
+OpenLayers.Bounds||(a.maxExtent=new OpenLayers.Bounds(a.maxExtent)),!a.minExtent||a.minExtent instanceof OpenLayers.Bounds||(a.minExtent=new OpenLayers.Bounds(a.minExtent)));OpenLayers.Util.extend(this.options,a);OpenLayers.Util.extend(this,a);this.projection&&this.projection.getUnits()&&(this.units=this.projection.getUnits());if(this.map){var c=this.map.getResolution(),d=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]),e;for(e in a)if(a.hasOwnProperty(e)&&0<=OpenLayers.Util.indexOf(d,
+e)){this.initResolutions();b&&this.map.baseLayer===this&&(this.map.setCenter(this.map.getCenter(),this.map.getZoomForResolution(c),!1,!0),this.map.events.triggerEvent("changebaselayer",{layer:this}));break}}},onMapResize:function(){},redraw:function(){var a=!1;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();b&&this.inRange&&this.visibility&&(this.moveTo(b,!0,!1),this.events.triggerEvent("moveend",{zoomChanged:!0}),a=!0)}return a},moveTo:function(a,b,c){a=this.visibility;this.isBaseLayer||
+(a=a&&this.inRange);this.display(a)},moveByPx:function(a,b){},setMap:function(a){null==this.map&&(this.map=a,this.maxExtent=this.maxExtent||this.map.maxExtent,this.minExtent=this.minExtent||this.map.minExtent,this.projection=this.projection||this.map.projection,"string"==typeof this.projection&&(this.projection=new OpenLayers.Projection(this.projection)),this.units=this.projection.getUnits()||this.units||this.map.units,this.initResolutions(),this.isBaseLayer||(this.inRange=this.calculateInRange(),
+this.div.style.display=this.visibility&&this.inRange?"":"none"),this.setTileSize())},afterAdd:function(){},removeMap:function(a){},getImageSize:function(a){return this.imageSize||this.tileSize},setTileSize:function(a){this.tileSize=a=a?a:this.tileSize?this.tileSize:this.map.getTileSize();this.gutter&&(this.imageSize=new OpenLayers.Size(a.w+2*this.gutter,a.h+2*this.gutter))},getVisibility:function(){return this.visibility},setVisibility:function(a){a!=this.visibility&&(this.visibility=a,this.display(a),
+this.redraw(),null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"}),this.events.triggerEvent("visibilitychanged"))},display:function(a){a!=("none"!=this.div.style.display)&&(this.div.style.display=a&&this.calculateInRange()?"block":"none")},calculateInRange:function(){var a=!1;this.alwaysInRange?a=!0:this.map&&(a=this.map.getResolution(),a=a>=this.minResolution&&a<=this.maxResolution);return a},setIsBaseLayer:function(a){a!=this.isBaseLayer&&(this.isBaseLayer=
+a,null!=this.map&&this.map.events.triggerEvent("changebaselayer",{layer:this}))},initResolutions:function(){var a,b,c,d={},e=!0;a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=this.options[c],e&&this.options[c]&&(e=!1);null==this.options.alwaysInRange&&(this.alwaysInRange=e);null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d));if(null==d.resolutions){a=0;for(b=this.RESOLUTION_PROPERTIES.length;a<
+b;a++)c=this.RESOLUTION_PROPERTIES[a],d[c]=null!=this.options[c]?this.options[c]:this.map[c];null==d.resolutions&&(d.resolutions=this.resolutionsFromScales(d.scales));null==d.resolutions&&(d.resolutions=this.calculateResolutions(d))}var f;this.options.maxResolution&&"auto"!==this.options.maxResolution&&(f=this.options.maxResolution);this.options.minScale&&(f=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units));var g;this.options.minResolution&&"auto"!==this.options.minResolution&&
+(g=this.options.minResolution);this.options.maxScale&&(g=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units));d.resolutions&&(d.resolutions.sort(function(a,b){return b-a}),f||(f=d.resolutions[0]),g||(g=d.resolutions[d.resolutions.length-1]));if(this.resolutions=d.resolutions){b=this.resolutions.length;this.scales=Array(b);for(a=0;a<b;a++)this.scales[a]=OpenLayers.Util.getScaleFromResolution(this.resolutions[a],this.units);this.numZoomLevels=b}if(this.minResolution=g)this.maxScale=
+OpenLayers.Util.getScaleFromResolution(g,this.units);if(this.maxResolution=f)this.minScale=OpenLayers.Util.getScaleFromResolution(f,this.units)},resolutionsFromScales:function(a){if(null!=a){var b,c,d;d=a.length;b=Array(d);for(c=0;c<d;c++)b[c]=OpenLayers.Util.getResolutionFromScale(a[c],this.units);return b}},calculateResolutions:function(a){var b,c,d=a.maxResolution;null!=a.minScale?d=OpenLayers.Util.getResolutionFromScale(a.minScale,this.units):"auto"==d&&null!=this.maxExtent&&(b=this.map.getSize(),
+c=this.maxExtent.getWidth()/b.w,b=this.maxExtent.getHeight()/b.h,d=Math.max(c,b));c=a.minResolution;null!=a.maxScale?c=OpenLayers.Util.getResolutionFromScale(a.maxScale,this.units):"auto"==a.minResolution&&null!=this.minExtent&&(b=this.map.getSize(),c=this.minExtent.getWidth()/b.w,b=this.minExtent.getHeight()/b.h,c=Math.max(c,b));"number"!==typeof d&&"number"!==typeof c&&null!=this.maxExtent&&(d=this.map.getTileSize(),d=Math.max(this.maxExtent.getWidth()/d.w,this.maxExtent.getHeight()/d.h));b=a.maxZoomLevel;
+a=a.numZoomLevels;"number"===typeof c&&"number"===typeof d&&void 0===a?a=Math.floor(Math.log(d/c)/Math.log(2))+1:void 0===a&&null!=b&&(a=b+1);if(!("number"!==typeof a||0>=a||"number"!==typeof d&&"number"!==typeof c)){b=Array(a);var e=2;"number"==typeof c&&"number"==typeof d&&(e=Math.pow(d/c,1/(a-1)));var f;if("number"===typeof d)for(f=0;f<a;f++)b[f]=d/Math.pow(e,f);else for(f=0;f<a;f++)b[a-1-f]=c*Math.pow(e,f);return b}},getResolution:function(){var a=this.map.getZoom();return this.getResolutionForZoom(a)},
+getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(a,b){var c=this.map.getSize(),c=Math.max(a.getWidth()/c.w,a.getHeight()/c.h);return this.getZoomForResolution(c,b)},getDataExtent:function(){},getResolutionForZoom:function(a){a=Math.max(0,Math.min(a,this.resolutions.length-1));if(this.map.fractionalZoom){var b=Math.floor(a),c=Math.ceil(a);a=this.resolutions[b]-(a-b)*(this.resolutions[b]-this.resolutions[c])}else a=this.resolutions[Math.round(a)];return a},getZoomForResolution:function(a,
+b){var c,d;if(this.map.fractionalZoom){var e=0,f=this.resolutions[e],g=this.resolutions[this.resolutions.length-1],h;c=0;for(d=this.resolutions.length;c<d;++c)if(h=this.resolutions[c],h>=a&&(f=h,e=c),h<=a){g=h;break}c=f-g;c=0<c?e+(f-a)/c:e}else{f=Number.POSITIVE_INFINITY;c=0;for(d=this.resolutions.length;c<d;c++)if(b){e=Math.abs(this.resolutions[c]-a);if(e>f)break;f=e}else if(this.resolutions[c]<a)break;c=Math.max(0,c-1)}return c},getLonLatFromViewPortPx:function(a){var b=null,c=this.map;if(null!=
+a&&c.minPx){var b=c.getResolution(),d=c.getMaxExtent({restricted:!0}),b=new OpenLayers.LonLat((a.x-c.minPx.x)*b+d.left,(c.minPx.y-a.y)*b+d.top);this.wrapDateLine&&(b=b.wrapDateLine(this.maxExtent))}return b},getViewPortPxFromLonLat:function(a,b){var c=null;null!=a&&(b=b||this.map.getResolution(),c=this.map.calculateBounds(null,b),c=new OpenLayers.Pixel(1/b*(a.lon-c.left),1/b*(c.top-a.lat)));return c},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=this.div.childNodes,c=0,d=b.length;c<
+d;++c){var e=b[c].firstChild||b[c],f=b[c].lastChild;f&&"iframe"===f.nodeName.toLowerCase()&&(e=f.parentNode);OpenLayers.Util.modifyDOMElement(e,null,null,null,null,null,null,a)}null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"})}},getZIndex:function(){return this.div.style.zIndex},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(a){if(this.gutter){var b=this.gutter*this.map.getResolution();a=new OpenLayers.Bounds(a.left-b,a.bottom-b,a.right+
+b,a.top+b)}this.wrapDateLine&&(b={rightTolerance:this.getResolution(),leftTolerance:this.getResolution()},a=a.wrapDateLine(this.maxExtent,b));return a},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:!0,initialize:function(a,b){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),select:new OpenLayers.Style(OpenLayers.Feature.Vector.style.select),temporary:new OpenLayers.Style(OpenLayers.Feature.Vector.style.temporary),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(a instanceof OpenLayers.Style)this.styles["default"]=a,this.styles.select=a,this.styles.temporary=a,this.styles["delete"]=
+a;else if("object"==typeof a)for(var c in a)if(a[c]instanceof OpenLayers.Style)this.styles[c]=a[c];else if("object"==typeof a[c])this.styles[c]=new OpenLayers.Style(a[c]);else{this.styles["default"]=new OpenLayers.Style(a);this.styles.select=new OpenLayers.Style(a);this.styles.temporary=new OpenLayers.Style(a);this.styles["delete"]=new OpenLayers.Style(a);break}OpenLayers.Util.extend(this,b)},destroy:function(){for(var a in this.styles)this.styles[a].destroy();this.styles=null},createSymbolizer:function(a,
+b){a||(a=new OpenLayers.Feature.Vector);this.styles[b]||(b="default");a.renderIntent=b;var c={};this.extendDefault&&"default"!=b&&(c=this.styles["default"].createSymbolizer(a));return OpenLayers.Util.extend(c,this.styles[b].createSymbolizer(a))},addUniqueValueRules:function(a,b,c,d){var e=[],f;for(f in c)e.push(new OpenLayers.Rule({symbolizer:c[f],context:d,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:b,value:f})}));this.styles[a].addRules(e)},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:!1,isFixed:!1,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:!0,style:null,styleMap:null,strategies:null,protocol:null,renderers:["SVG","VML","Canvas"],renderer:null,rendererOptions:null,geometryType:null,drawn:!1,ratio:1,initialize:function(a,b){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.renderer&&this.renderer.supported()||this.assignRenderer();this.renderer&&this.renderer.supported()||
+(this.renderer=null,this.displayError());this.styleMap||(this.styleMap=new OpenLayers.StyleMap);this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies)for(var c=0,d=this.strategies.length;c<d;c++)this.strategies[c].setLayer(this)},destroy:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoDestroy&&a.destroy();this.strategies=null}this.protocol&&(this.protocol.autoDestroy&&this.protocol.destroy(),this.protocol=
+null);this.destroyFeatures();this.unrenderedFeatures=this.selectedFeatures=this.features=null;this.renderer&&this.renderer.destroy();this.drawn=this.geometryType=this.renderer=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.Vector(this.name,this.getOptions()));a=OpenLayers.Layer.prototype.clone.apply(this,[a]);for(var b=this.features,c=b.length,d=Array(c),e=0;e<c;++e)d[e]=b[e].clone();a.features=d;return a},refresh:function(a){this.calculateInRange()&&
+this.visibility&&this.events.triggerEvent("refresh",a)},assignRenderer:function(){for(var a=0,b=this.renderers.length;a<b;a++){var c=this.renderers[a];if((c="function"==typeof c?c:OpenLayers.Renderer[c])&&c.prototype.supported()){this.renderer=new c(this.div,this.rendererOptions);break}}},displayError:function(){this.reportError&&OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{renderers:this.renderers.join("\n")}))},setMap:function(a){OpenLayers.Layer.prototype.setMap.apply(this,
+arguments);if(this.renderer){this.renderer.map=this.map;var b=this.map.getSize();b.w*=this.ratio;b.h*=this.ratio;this.renderer.setSize(b)}else this.map.removeLayer(this)},afterAdd:function(){if(this.strategies){var a,b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.activate()}},removeMap:function(a){this.drawn=!1;if(this.strategies){var b,c;b=0;for(c=this.strategies.length;b<c;b++)a=this.strategies[b],a.autoActivate&&a.deactivate()}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,
+arguments);var a=this.map.getSize();a.w*=this.ratio;a.h*=this.ratio;this.renderer.setSize(a)},moveTo:function(a,b,c){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var d=!0;if(!c){this.renderer.root.style.visibility="hidden";var d=this.map.getSize(),e=d.w,d=d.h,e=e/2*this.ratio-e/2,d=d/2*this.ratio-d/2,e=e+this.map.layerContainerOriginPx.x,e=-Math.round(e),d=d+this.map.layerContainerOriginPx.y,d=-Math.round(d);this.div.style.left=e+"px";this.div.style.top=d+"px";e=this.map.getExtent().scale(this.ratio);
+d=this.renderer.setExtent(e,b);this.renderer.root.style.visibility="visible";!0===OpenLayers.IS_GECKO&&(this.div.scrollLeft=this.div.scrollLeft);if(!b&&d)for(var f in this.unrenderedFeatures)e=this.unrenderedFeatures[f],this.drawFeature(e)}if(!this.drawn||b||!d)for(this.drawn=!0,f=0,d=this.features.length;f<d;f++)this.renderer.locked=f!==d-1,e=this.features[f],this.drawFeature(e)},display:function(a){OpenLayers.Layer.prototype.display.apply(this,arguments);var b=this.div.style.display;b!=this.renderer.root.style.display&&
+(this.renderer.root.style.display=b)},addFeatures:function(a,b){OpenLayers.Util.isArray(a)||(a=[a]);var c=!b||!b.silent;if(c){var d={features:a};if(!1===this.events.triggerEvent("beforefeaturesadded",d))return;a=d.features}for(var d=[],e=0,f=a.length;e<f;e++){this.renderer.locked=e!=a.length-1?!0:!1;var g=a[e];if(this.geometryType&&!(g.geometry instanceof this.geometryType))throw new TypeError("addFeatures: component should be an "+this.geometryType.prototype.CLASS_NAME);g.layer=this;!g.style&&this.style&&
+(g.style=OpenLayers.Util.extend({},this.style));if(c){if(!1===this.events.triggerEvent("beforefeatureadded",{feature:g}))continue;this.preFeatureInsert(g)}d.push(g);this.features.push(g);this.drawFeature(g);c&&(this.events.triggerEvent("featureadded",{feature:g}),this.onFeatureInsert(g))}c&&this.events.triggerEvent("featuresadded",{features:d})},removeFeatures:function(a,b){if(a&&0!==a.length){if(a===this.features)return this.removeAllFeatures(b);OpenLayers.Util.isArray(a)||(a=[a]);a===this.selectedFeatures&&
+(a=a.slice());var c=!b||!b.silent;c&&this.events.triggerEvent("beforefeaturesremoved",{features:a});for(var d=a.length-1;0<=d;d--){this.renderer.locked=0!=d&&a[d-1].geometry?!0:!1;var e=a[d];delete this.unrenderedFeatures[e.id];c&&this.events.triggerEvent("beforefeatureremoved",{feature:e});this.features=OpenLayers.Util.removeItem(this.features,e);e.layer=null;e.geometry&&this.renderer.eraseFeatures(e);-1!=OpenLayers.Util.indexOf(this.selectedFeatures,e)&&OpenLayers.Util.removeItem(this.selectedFeatures,
+e);c&&this.events.triggerEvent("featureremoved",{feature:e})}c&&this.events.triggerEvent("featuresremoved",{features:a})}},removeAllFeatures:function(a){a=!a||!a.silent;var b=this.features;a&&this.events.triggerEvent("beforefeaturesremoved",{features:b});for(var c,d=b.length-1;0<=d;d--)c=b[d],a&&this.events.triggerEvent("beforefeatureremoved",{feature:c}),c.layer=null,a&&this.events.triggerEvent("featureremoved",{feature:c});this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=
+[];a&&this.events.triggerEvent("featuresremoved",{features:b})},destroyFeatures:function(a,b){void 0==a&&(a=this.features);if(a){this.removeFeatures(a,b);for(var c=a.length-1;0<=c;c--)a[c].destroy()}},drawFeature:function(a,b){if(this.drawn){if("object"!=typeof b){b||a.state!==OpenLayers.State.DELETE||(b="delete");var c=b||a.renderIntent;(b=a.style||this.style)||(b=this.styleMap.createSymbolizer(a,c))}c=this.renderer.drawFeature(a,b);!1===c||null===c?this.unrenderedFeatures[a.id]=a:delete this.unrenderedFeatures[a.id]}},
+eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer)throw Error("getFeatureFromEvent called on layer with no renderer. This usually means you destroyed a layer, but not some handler which is associated with it.");var b=null;(a=this.renderer.getFeatureIdFromEvent(a))&&(b="string"===typeof a?this.getFeatureById(a):a);return b},getFeatureBy:function(a,b){for(var c=null,d=0,e=this.features.length;d<e;++d)if(this.features[d][a]==b){c=this.features[d];
+break}return c},getFeatureById:function(a){return this.getFeatureBy("id",a)},getFeatureByFid:function(a){return this.getFeatureBy("fid",a)},getFeaturesByAttribute:function(a,b){var c,d,e=this.features.length,f=[];for(c=0;c<e;c++)(d=this.features[c])&&d.attributes&&d.attributes[a]===b&&f.push(d);return f},onFeatureInsert:function(a){},preFeatureInsert:function(a){},getDataExtent:function(){var a=null,b=this.features;if(b&&0<b.length)for(var c=null,d=0,e=b.length;d<e;d++)if(c=b[d].geometry)null===a&&
+(a=new OpenLayers.Bounds),a.extend(c.getBounds());return a},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:!1,layers:null,display:function(){},getFeatureFromEvent:function(a){for(var b=this.layers,c,d=0;d<b.length;d++)if(c=b[d].getFeatureFromEvent(a))return c},setMap:function(a){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();a.events.register("changelayer",this,this.handleChangeLayer)},removeMap:function(a){a.events.unregister("changelayer",this,this.handleChangeLayer);
+this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments)},collectRoots:function(){for(var a,b=0;b<this.map.layers.length;++b)a=this.map.layers[b],-1!=OpenLayers.Util.indexOf(this.layers,a)&&a.renderer.moveRoot(this.renderer)},resetRoots:function(){for(var a,b=0;b<this.layers.length;++b)a=this.layers[b],this.renderer&&a.renderer.getRenderLayerId()==this.id&&this.renderer.moveRoot(a.renderer)},handleChangeLayer:function(a){var b=a.layer;"order"==a.property&&-1!=OpenLayers.Util.indexOf(this.layers,
+b)&&(this.resetRoots(),this.collectRoots())},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(a){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[a])},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this)},evaluate:function(a){var b,c;switch(this.type){case OpenLayers.Filter.Logical.AND:b=0;for(c=this.filters.length;b<c;b++)if(!1==this.filters[b].evaluate(a))return!1;return!0;case OpenLayers.Filter.Logical.OR:b=0;for(c=this.filters.length;b<
+c;b++)if(!0==this.filters[b].evaluate(a))return!0;return!1;case OpenLayers.Filter.Logical.NOT:return!this.filters[0].evaluate(a)}},clone:function(){for(var a=[],b=0,c=this.filters.length;b<c;++b)a.push(this.filters[b].clone());return new OpenLayers.Filter.Logical({type:this.type,filters:a})},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:!1,initialize:function(a,b,c,d){OpenLayers.Layer.prototype.initialize.apply(this,[a,d]);this.url=b;this.params||(this.params=OpenLayers.Util.extend({},c))},destroy:function(){this.params=this.url=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){null==a&&(a=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions()));
+return a=OpenLayers.Layer.prototype.clone.apply(this,[a])},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=OpenLayers.Util.extend(this.params,a);a=this.redraw();null!=this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});return a},redraw:function(a){return a?this.mergeNewParams({_olSalt:Math.random()}):OpenLayers.Layer.prototype.redraw.apply(this,[])},selectUrl:function(a,b){for(var c=1,d=0,e=a.length;d<e;d++)c=c*a.charCodeAt(d)*this.URL_HASH_FACTOR,
+c-=Math.floor(c);return b[Math.floor(c*b.length)]},getFullRequestString:function(a,b){var c=b||this.url,d=OpenLayers.Util.extend({},this.params),d=OpenLayers.Util.extend(d,a),e=OpenLayers.Util.getParameterString(d);OpenLayers.Util.isArray(c)&&(c=this.selectUrl(e,c));var e=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(c)),f;for(f in d)f.toUpperCase()in e&&delete d[f];e=OpenLayers.Util.getParameterString(d);return OpenLayers.Util.urlAppend(c,e)},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Tile=OpenLayers.Class({events:null,eventListeners:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:!1,initialize:function(a,b,c,d,e,f){this.layer=a;this.position=b.clone();this.setBounds(c);this.url=d;e&&(this.size=e.clone());this.id=OpenLayers.Util.createUniqueID("Tile_");OpenLayers.Util.extend(this,f);this.events=new OpenLayers.Events(this);if(this.eventListeners instanceof Object)this.events.on(this.eventListeners)},unload:function(){this.isLoading&&(this.isLoading=
+!1,this.events.triggerEvent("unload"))},destroy:function(){this.position=this.size=this.bounds=this.layer=null;this.eventListeners&&this.events.un(this.eventListeners);this.events.destroy();this.events=this.eventListeners=null},draw:function(a){a||this.clear();var b=this.shouldDraw();b&&!a&&!1===this.events.triggerEvent("beforedraw")&&(b=null);return b},shouldDraw:function(){var a=!1,b=this.layer.maxExtent;if(b){var c=this.layer.map,c=c.baseLayer.wrapDateLine&&c.getMaxExtent();this.bounds.intersectsBounds(b,
+{inclusive:!1,worldBounds:c})&&(a=!0)}return a||this.layer.displayOutsideMaxExtent},setBounds:function(a){a=a.clone();if(this.layer.map.baseLayer.wrapDateLine){var b=this.layer.map.getMaxExtent(),c=this.layer.map.getResolution();a=a.wrapDateLine(b,{leftTolerance:c,rightTolerance:c})}this.bounds=a},moveTo:function(a,b,c){null==c&&(c=!0);this.setBounds(a);this.position=b.clone();c&&this.draw()},clear:function(a){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,imageReloadAttempts:null,layerAlphaHack:null,asyncRequestId:null,maxGetUrlLength:null,canvasContext:null,crossOriginKeyword:null,initialize:function(a,b,c,d,e,f){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=d;this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();if(null!=this.maxGetUrlLength||this.layer.gutter||this.layerAlphaHack)this.frame=document.createElement("div"),this.frame.style.position=
+"absolute",this.frame.style.overflow="hidden";null!=this.maxGetUrlLength&&OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame)},destroy:function(){this.imgDiv&&(this.clear(),this.frame=this.imgDiv=null);this.asyncRequestId=null;OpenLayers.Tile.prototype.destroy.apply(this,arguments)},draw:function(){var a=OpenLayers.Tile.prototype.draw.apply(this,arguments);a?(this.layer!=this.layer.map.baseLayer&&this.layer.reproject&&(this.bounds=this.getBoundsFromBaseLayer(this.position)),this.isLoading?this._loadEvent=
+"reload":(this.isLoading=!0,this._loadEvent="loadstart"),this.renderTile(),this.positionTile()):!1===a&&this.unload();return a},renderTile:function(){if(this.layer.async){var a=this.asyncRequestId=(this.asyncRequestId||0)+1;this.layer.getURLasync(this.bounds,function(b){a==this.asyncRequestId&&(this.url=b,this.initImage())},this)}else this.url=this.layer.getURL(this.bounds),this.initImage()},positionTile:function(){var a=this.getTile().style,b=this.frame?this.size:this.layer.getImageSize(this.bounds),
+c=1;this.layer instanceof OpenLayers.Layer.Grid&&(c=this.layer.getServerResolution()/this.layer.map.getResolution());a.left=this.position.x+"px";a.top=this.position.y+"px";a.width=Math.round(c*b.w)+"px";a.height=Math.round(c*b.h)+"px"},clear:function(){OpenLayers.Tile.prototype.clear.apply(this,arguments);var a=this.imgDiv;if(a){var b=this.getTile();b.parentNode===this.layer.div&&this.layer.div.removeChild(b);this.setImgSrc();!0===this.layerAlphaHack&&(a.style.filter="");OpenLayers.Element.removeClass(a,
+"olImageLoadError")}this.canvasContext=null},getImage:function(){if(!this.imgDiv){this.imgDiv=OpenLayers.Tile.Image.IMAGE.cloneNode(!1);var a=this.imgDiv.style;if(this.frame){var b=0,c=0;this.layer.gutter&&(b=100*(this.layer.gutter/this.layer.tileSize.w),c=100*(this.layer.gutter/this.layer.tileSize.h));a.left=-b+"%";a.top=-c+"%";a.width=2*b+100+"%";a.height=2*c+100+"%"}a.visibility="hidden";a.opacity=0;1>this.layer.opacity&&(a.filter="alpha(opacity="+100*this.layer.opacity+")");a.position="absolute";
+this.layerAlphaHack&&(a.paddingTop=a.height,a.height="0",a.width="100%");this.frame&&this.frame.appendChild(this.imgDiv)}return this.imgDiv},setImage:function(a){this.imgDiv=a},initImage:function(){if(this.url||this.imgDiv){this.events.triggerEvent("beforeload");this.layer.div.appendChild(this.getTile());this.events.triggerEvent(this._loadEvent);var a=this.getImage(),b=a.getAttribute("src")||"";this.url&&OpenLayers.Util.isEquivalentUrl(b,this.url)?this._loadTimeout=window.setTimeout(OpenLayers.Function.bind(this.onImageLoad,
+this),0):(this.stopLoading(),this.crossOriginKeyword&&a.removeAttribute("crossorigin"),OpenLayers.Event.observe(a,"load",OpenLayers.Function.bind(this.onImageLoad,this)),OpenLayers.Event.observe(a,"error",OpenLayers.Function.bind(this.onImageError,this)),this.imageReloadAttempts=0,this.setImgSrc(this.url))}else this.isLoading=!1},setImgSrc:function(a){var b=this.imgDiv;a?(b.style.visibility="hidden",b.style.opacity=0,this.crossOriginKeyword&&("data:"!==a.substr(0,5)?b.setAttribute("crossorigin",this.crossOriginKeyword):
+b.removeAttribute("crossorigin")),b.src=a):(this.stopLoading(),this.imgDiv=null,b.parentNode&&b.parentNode.removeChild(b))},getTile:function(){return this.frame?this.frame:this.getImage()},createBackBuffer:function(){if(this.imgDiv&&!this.isLoading){var a;this.frame?(a=this.frame.cloneNode(!1),a.appendChild(this.imgDiv)):a=this.imgDiv;this.imgDiv=null;return a}},onImageLoad:function(){var a=this.imgDiv;this.stopLoading();a.style.visibility="inherit";a.style.opacity=this.layer.opacity;this.isLoading=
+!1;this.canvasContext=null;this.events.triggerEvent("loadend");!0===this.layerAlphaHack&&(a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a.src+"', sizingMethod='scale')")},onImageError:function(){var a=this.imgDiv;null!=a.src&&(this.imageReloadAttempts++,this.imageReloadAttempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS?this.setImgSrc(this.layer.getURL(this.bounds)):(OpenLayers.Element.addClass(a,"olImageLoadError"),this.events.triggerEvent("loaderror"),this.onImageLoad()))},stopLoading:function(){OpenLayers.Event.stopObservingElement(this.imgDiv);
+window.clearTimeout(this._loadTimeout);delete this._loadTimeout},getCanvasContext:function(){if(OpenLayers.CANVAS_SUPPORTED&&this.imgDiv&&!this.isLoading){if(!this.canvasContext){var a=document.createElement("canvas");a.width=this.size.w;a.height=this.size.h;this.canvasContext=a.getContext("2d");this.canvasContext.drawImage(this.imgDiv,0,0)}return this.canvasContext}},CLASS_NAME:"OpenLayers.Tile.Image"});
+OpenLayers.Tile.Image.IMAGE=function(){var a=new Image;a.className="olTileImage";a.galleryImg="no";return a}();OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,tileClass:OpenLayers.Tile.Image,grid:null,singleTile:!1,ratio:1.5,buffer:0,transitionEffect:"resize",numLoadingTiles:0,serverResolutions:null,loading:!1,backBuffer:null,gridResolution:null,backBufferResolution:null,backBufferLonLat:null,backBufferTimerId:null,removeBackBufferDelay:null,className:null,gridLayout:null,rowSign:null,transitionendEvents:["transitionend",
+"webkitTransitionEnd","otransitionend","oTransitionEnd"],initialize:function(a,b,c,d){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.grid=[];this._removeBackBuffer=OpenLayers.Function.bind(this.removeBackBuffer,this);this.initProperties();this.rowSign="t"===this.tileOriginCorner.substr(0,1)?1:-1},initProperties:function(){void 0===this.options.removeBackBufferDelay&&(this.removeBackBufferDelay=this.singleTile?0:2500);void 0===this.options.className&&(this.className=this.singleTile?
+"olLayerGridSingleTile":"olLayerGrid")},setMap:function(a){OpenLayers.Layer.HTTPRequest.prototype.setMap.call(this,a);OpenLayers.Element.addClass(this.div,this.className)},removeMap:function(a){this.removeBackBuffer()},destroy:function(){this.removeBackBuffer();this.clearGrid();this.tileSize=this.grid=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){if(this.grid){for(var a=0,b=this.grid.length;a<b;a++)for(var c=this.grid[a],d=0,e=c.length;d<e;d++)this.destroyTile(c[d]);
+this.grid=[];this.gridLayout=this.gridResolution=null}},addOptions:function(a,b){var c=void 0!==a.singleTile&&a.singleTile!==this.singleTile;OpenLayers.Layer.HTTPRequest.prototype.addOptions.apply(this,arguments);this.map&&c&&(this.initProperties(),this.clearGrid(),this.tileSize=this.options.tileSize,this.setTileSize(),this.moveTo(null,!0))},clone:function(a){null==a&&(a=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions()));a=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,
+[a]);null!=this.tileSize&&(a.tileSize=this.tileSize.clone());a.grid=[];a.gridResolution=null;a.backBuffer=null;a.backBufferTimerId=null;a.loading=!1;a.numLoadingTiles=0;return a},moveTo:function(a,b,c){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);a=a||this.map.getExtent();if(null!=a){var d=!this.grid.length||b,e=this.getTilesBounds(),f=this.map.getResolution();this.getServerResolution(f);if(this.singleTile){if(d||!c&&!e.containsBounds(a))b&&"resize"!==this.transitionEffect&&
+this.removeBackBuffer(),b&&"resize"!==this.transitionEffect||this.applyBackBuffer(f),this.initSingleTile(a)}else(d=d||!e.intersectsBounds(a,{worldBounds:this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent()}))?(!b||"resize"!==this.transitionEffect&&this.gridResolution!==f||this.applyBackBuffer(f),this.initGriddedTiles(a)):this.moveGriddedTiles()}},getTileData:function(a){var b=null,c=a.lon,d=a.lat,e=this.grid.length;if(this.map&&e){var f=this.map.getResolution();a=this.tileSize.w;var g=this.tileSize.h,
+h=this.grid[0][0].bounds,k=h.left,h=h.top;if(c<k&&this.map.baseLayer.wrapDateLine)var l=this.map.getMaxExtent().getWidth(),m=Math.ceil((k-c)/l),c=c+l*m;c=(c-k)/(f*a);d=(h-d)/(f*g);f=Math.floor(c);k=Math.floor(d);0<=k&&k<e&&(e=this.grid[k][f])&&(b={tile:e,i:Math.floor((c-f)*a),j:Math.floor((d-k)*g)})}return b},destroyTile:function(a){this.removeTileMonitoringHooks(a);a.destroy()},getServerResolution:function(a){var b=Number.POSITIVE_INFINITY;a=a||this.map.getResolution();if(this.serverResolutions&&
+-1===OpenLayers.Util.indexOf(this.serverResolutions,a)){var c,d,e,f;for(c=this.serverResolutions.length-1;0<=c;c--){e=this.serverResolutions[c];d=Math.abs(e-a);if(d>b)break;b=d;f=e}a=f}return a},getServerZoom:function(){var a=this.getServerResolution();return this.serverResolutions?OpenLayers.Util.indexOf(this.serverResolutions,a):this.map.getZoomForResolution(a)+(this.zoomOffset||0)},applyBackBuffer:function(a){null!==this.backBufferTimerId&&this.removeBackBuffer();var b=this.backBuffer;if(!b){b=
+this.createBackBuffer();if(!b)return;a===this.gridResolution?this.div.insertBefore(b,this.div.firstChild):this.map.baseLayer.div.parentNode.insertBefore(b,this.map.baseLayer.div);this.backBuffer=b;var c=this.grid[0][0].bounds;this.backBufferLonLat={lon:c.left,lat:c.top};this.backBufferResolution=this.gridResolution}for(var c=this.backBufferResolution/a,d=b.childNodes,e,f=d.length-1;0<=f;--f)e=d[f],e.style.top=(c*e._i*e._h|0)+"px",e.style.left=(c*e._j*e._w|0)+"px",e.style.width=Math.round(c*e._w)+
+"px",e.style.height=Math.round(c*e._h)+"px";a=this.getViewPortPxFromLonLat(this.backBufferLonLat,a);c=this.map.layerContainerOriginPx.y;b.style.left=Math.round(a.x-this.map.layerContainerOriginPx.x)+"px";b.style.top=Math.round(a.y-c)+"px"},createBackBuffer:function(){var a;if(0<this.grid.length){a=document.createElement("div");a.id=this.div.id+"_bb";a.className="olBackBuffer";a.style.position="absolute";var b=this.map;a.style.zIndex="resize"===this.transitionEffect?this.getZIndex()-1:b.Z_INDEX_BASE.BaseLayer-
+(b.getNumLayers()-b.getLayerIndex(this));for(var b=0,c=this.grid.length;b<c;b++)for(var d=0,e=this.grid[b].length;d<e;d++){var f=this.grid[b][d],g=this.grid[b][d].createBackBuffer();g&&(g._i=b,g._j=d,g._w=f.size.w,g._h=f.size.h,g.id=f.id+"_bb",a.appendChild(g))}}return a},removeBackBuffer:function(){if(this._transitionElement){for(var a=this.transitionendEvents.length-1;0<=a;--a)OpenLayers.Event.stopObserving(this._transitionElement,this.transitionendEvents[a],this._removeBackBuffer);delete this._transitionElement}this.backBuffer&&
+(this.backBuffer.parentNode&&this.backBuffer.parentNode.removeChild(this.backBuffer),this.backBufferResolution=this.backBuffer=null,null!==this.backBufferTimerId&&(window.clearTimeout(this.backBufferTimerId),this.backBufferTimerId=null))},moveByPx:function(a,b){this.singleTile||this.moveGriddedTiles()},setTileSize:function(a){this.singleTile&&(a=this.map.getSize(),a.h=parseInt(a.h*this.ratio,10),a.w=parseInt(a.w*this.ratio,10));OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getTilesBounds:function(){var a=
+null,b=this.grid.length;if(b)var a=this.grid[b-1][0].bounds,b=this.grid[0].length*a.getWidth(),c=this.grid.length*a.getHeight(),a=new OpenLayers.Bounds(a.left,a.bottom,a.left+b,a.bottom+c);return a},initSingleTile:function(a){this.events.triggerEvent("retile");var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio;a=a.getHeight()*this.ratio;b=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2);c=this.map.getLayerPxFromLonLat({lon:b.left,lat:b.top});this.grid.length||(this.grid[0]=[]);(a=this.grid[0][0])?
+a.moveTo(b,c):(a=this.addTile(b,c),this.addTileMonitoringHooks(a),a.draw(),this.grid[0][0]=a);this.removeExcessTiles(1,1);this.gridResolution=this.getServerResolution()},calculateGridLayout:function(a,b,c){var d=c*this.tileSize.w;c*=this.tileSize.h;var e=Math.floor((a.left-b.lon)/d)-this.buffer,f=this.rowSign;a=Math[~f?"floor":"ceil"](f*(b.lat-a.top+c)/c)-this.buffer*f;return{tilelon:d,tilelat:c,startcol:e,startrow:a}},getTileOrigin:function(){var a=this.tileOrigin;if(!a)var a=this.getMaxExtent(),
+b={tl:["left","top"],tr:["right","top"],bl:["left","bottom"],br:["right","bottom"]}[this.tileOriginCorner],a=new OpenLayers.LonLat(a[b[0]],a[b[1]]);return a},getTileBoundsForGridIndex:function(a,b){var c=this.getTileOrigin(),d=this.gridLayout,e=d.tilelon,f=d.tilelat,g=d.startcol,d=d.startrow,h=this.rowSign;return new OpenLayers.Bounds(c.lon+(g+b)*e,c.lat-(d+a*h)*f*h,c.lon+(g+b+1)*e,c.lat-(d+(a-1)*h)*f*h)},initGriddedTiles:function(a){this.events.triggerEvent("retile");var b=this.map.getSize(),c=this.getTileOrigin(),
+d=this.map.getResolution(),e=this.getServerResolution(),f=d/e,d=this.tileSize.w/f,f=this.tileSize.h/f,g=Math.ceil(b.h/f)+2*this.buffer+1,b=Math.ceil(b.w/d)+2*this.buffer+1;this.gridLayout=e=this.calculateGridLayout(a,c,e);var c=e.tilelon,h=e.tilelat,e=this.map.layerContainerOriginPx.x,k=this.map.layerContainerOriginPx.y,l=this.getTileBoundsForGridIndex(0,0),m=this.map.getViewPortPxFromLonLat(new OpenLayers.LonLat(l.left,l.top));m.x=Math.round(m.x)-e;m.y=Math.round(m.y)-k;var e=[],k=this.map.getCenter(),
+r=0;do{var p=this.grid[r];p||(p=[],this.grid.push(p));var n=0;do{var l=this.getTileBoundsForGridIndex(r,n),q=m.clone();q.x+=n*Math.round(d);q.y+=r*Math.round(f);var s=p[n];s?s.moveTo(l,q,!1):(s=this.addTile(l,q),this.addTileMonitoringHooks(s),p.push(s));q=l.getCenterLonLat();e.push({tile:s,distance:Math.pow(q.lon-k.lon,2)+Math.pow(q.lat-k.lat,2)});n+=1}while(l.right<=a.right+c*this.buffer||n<b);r+=1}while(l.bottom>=a.bottom-h*this.buffer||r<g);this.removeExcessTiles(r,n);this.gridResolution=d=this.getServerResolution();
+e.sort(function(a,b){return a.distance-b.distance});a=0;for(d=e.length;a<d;++a)e[a].tile.draw()},getMaxExtent:function(){return this.maxExtent},addTile:function(a,b){var c=new this.tileClass(this,b,a,null,this.tileSize,this.tileOptions);this.events.triggerEvent("addtile",{tile:c});return c},addTileMonitoringHooks:function(a){a.onLoadStart=function(){!1===this.loading&&(this.loading=!0,this.events.triggerEvent("loadstart"));this.events.triggerEvent("tileloadstart",{tile:a});this.numLoadingTiles++;
+!this.singleTile&&this.backBuffer&&this.gridResolution===this.backBufferResolution&&OpenLayers.Element.addClass(a.getTile(),"olTileReplacing")};a.onLoadEnd=function(b){this.numLoadingTiles--;b="unload"===b.type;this.events.triggerEvent("tileloaded",{tile:a,aborted:b});if(!this.singleTile&&!b&&this.backBuffer&&this.gridResolution===this.backBufferResolution){var c=a.getTile();if("none"===OpenLayers.Element.getStyle(c,"display")){var d=document.getElementById(a.id+"_bb");d&&d.parentNode.removeChild(d)}OpenLayers.Element.removeClass(c,
+"olTileReplacing")}if(0===this.numLoadingTiles){if(this.backBuffer)if(0===this.backBuffer.childNodes.length)this.removeBackBuffer();else{this._transitionElement=b?this.div.lastChild:a.imgDiv;b=this.transitionendEvents;for(c=b.length-1;0<=c;--c)OpenLayers.Event.observe(this._transitionElement,b[c],this._removeBackBuffer);this.backBufferTimerId=window.setTimeout(this._removeBackBuffer,this.removeBackBufferDelay)}this.loading=!1;this.events.triggerEvent("loadend")}};a.onLoadError=function(){this.events.triggerEvent("tileerror",
+{tile:a})};a.events.on({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,loaderror:a.onLoadError,scope:this})},moveGriddedTiles:function(){for(var a=this.buffer+1;;){var b=this.grid[0][0],c=b.position.x+this.map.layerContainerOriginPx.x,b=b.position.y+this.map.layerContainerOriginPx.y,d=this.getServerResolution()/this.map.getResolution(),
+d={w:Math.round(this.tileSize.w*d),h:Math.round(this.tileSize.h*d)};if(c>-d.w*(a-1))this.shiftColumn(!0,d);else if(c<-d.w*a)this.shiftColumn(!1,d);else if(b>-d.h*(a-1))this.shiftRow(!0,d);else if(b<-d.h*a)this.shiftRow(!1,d);else break}},shiftRow:function(a,b){var c=this.grid,d=a?0:c.length-1,e=a?-1:1;this.gridLayout.startrow+=e*this.rowSign;for(var f=c[d],g=c[a?"pop":"shift"](),h=0,k=g.length;h<k;h++){var l=g[h],m=f[h].position.clone();m.y+=b.h*e;l.moveTo(this.getTileBoundsForGridIndex(d,h),m)}c[a?
+"unshift":"push"](g)},shiftColumn:function(a,b){var c=this.grid,d=a?0:c[0].length-1,e=a?-1:1;this.gridLayout.startcol+=e;for(var f=0,g=c.length;f<g;f++){var h=c[f],k=h[d].position.clone(),l=h[a?"pop":"shift"]();k.x+=b.w*e;l.moveTo(this.getTileBoundsForGridIndex(f,d),k);h[a?"unshift":"push"](l)}},removeExcessTiles:function(a,b){for(var c,d;this.grid.length>a;){var e=this.grid.pop();c=0;for(d=e.length;c<d;c++){var f=e[c];this.destroyTile(f)}}c=0;for(d=this.grid.length;c<d;c++)for(;this.grid[c].length>
+b;)e=this.grid[c],f=e.pop(),this.destroyTile(f)},onMapResize:function(){this.singleTile&&(this.clearGrid(),this.setTileSize())},getTileBounds:function(a){var b=this.maxExtent,c=this.getResolution(),d=c*this.tileSize.w,c=c*this.tileSize.h,e=this.getLonLatFromViewPortPx(a);a=b.left+d*Math.floor((e.lon-b.left)/d);b=b.bottom+c*Math.floor((e.lat-b.bottom)/c);return new OpenLayers.Bounds(a,b,a+d,b+c)},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:!0,sphericalMercator:!1,zoomOffset:0,serverResolutions:null,initialize:function(a,b,c){if(c&&c.sphericalMercator||this.sphericalMercator)c=OpenLayers.Util.extend({projection:"EPSG:900913",numZoomLevels:19},c);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[a||this.name,b||this.url,{},c])},clone:function(a){null==a&&(a=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.Grid.prototype.clone.apply(this,
+[a])},getURL:function(a){a=this.getXYZ(a);var b=this.url;OpenLayers.Util.isArray(b)&&(b=this.selectUrl(""+a.x+a.y+a.z,b));return OpenLayers.String.format(b,a)},getXYZ:function(a){var b=this.getServerResolution(),c=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w));a=Math.round((this.maxExtent.top-a.top)/(b*this.tileSize.h));b=this.getServerZoom();if(this.wrapDateLine)var d=Math.pow(2,b),c=(c%d+d)%d;return{x:c,y:a,z:b}},setMap:function(a){OpenLayers.Layer.Grid.prototype.setMap.apply(this,
+arguments);this.tileOrigin||(this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom))},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",url:["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png","http://b.tile.openstreetmap.org/${z}/${x}/${y}.png","http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"],attribution:"&copy; <a href='http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors",sphericalMercator:!0,wrapDateLine:!0,tileOptions:null,initialize:function(a,b,c){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);this.tileOptions=
+OpenLayers.Util.extend({crossOriginKeyword:"anonymous"},this.options&&this.options.tileOptions)},clone:function(a){null==a&&(a=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions()));return a=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[a])},CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:!0,hitOverflow:0,canvas:null,features:null,pendingRedraw:!1,cachedSymbolBounds:{},initialize:function(a,b){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};this.hitDetection&&(this.hitCanvas=document.createElement("canvas"),this.hitContext=this.hitCanvas.getContext("2d"))},
+setExtent:function(){OpenLayers.Renderer.prototype.setExtent.apply(this,arguments);return!1},eraseGeometry:function(a,b){this.eraseFeatures(this.features[b][0])},supported:function(){return OpenLayers.CANVAS_SUPPORTED},setSize:function(a){this.size=a.clone();var b=this.root;b.style.width=a.w+"px";b.style.height=a.h+"px";b.width=a.w;b.height=a.h;this.resolution=null;this.hitDetection&&(b=this.hitCanvas,b.style.width=a.w+"px",b.style.height=a.h+"px",b.width=a.w,b.height=a.h)},drawFeature:function(a,
+b){var c;if(a.geometry){b=this.applyDefaultSymbolizer(b||a.style);c=a.geometry.getBounds();var d;this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&(d=this.map.getMaxExtent());d=c&&c.intersectsBounds(this.extent,{worldBounds:d});(c="none"!==b.display&&!!c&&d)?this.features[a.id]=[a,b]:delete this.features[a.id];this.pendingRedraw=!0}this.pendingRedraw&&!this.locked&&(this.redraw(),this.pendingRedraw=!1);return c},drawGeometry:function(a,b,c){var d=a.CLASS_NAME;if("OpenLayers.Geometry.Collection"==
+d||"OpenLayers.Geometry.MultiPoint"==d||"OpenLayers.Geometry.MultiLineString"==d||"OpenLayers.Geometry.MultiPolygon"==d)for(d=0;d<a.components.length;d++)this.drawGeometry(a.components[d],b,c);else switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":this.drawPoint(a,b,c);break;case "OpenLayers.Geometry.LineString":this.drawLineString(a,b,c);break;case "OpenLayers.Geometry.LinearRing":this.drawLinearRing(a,b,c);break;case "OpenLayers.Geometry.Polygon":this.drawPolygon(a,b,c)}},drawExternalGraphic:function(a,
+b,c){var d=new Image,e=b.title||b.graphicTitle;e&&(d.title=e);var f=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,f=f?f:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*f),k=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),l=b.graphicOpacity||b.fillOpacity;d.onload=OpenLayers.Function.bind(function(){if(this.features[c]){var b=this.getLocalXY(a),e=b[0],b=b[1];if(!isNaN(e)&&!isNaN(b)){var e=e+h|0,b=b+k|0,p=this.canvas;p.globalAlpha=l;var n=
+OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);p.drawImage(d,e*n,b*n,f*n,g*n);this.hitDetection&&(this.setHitContextStyle("fill",c),this.hitContext.fillRect(e,b,f,g))}}},this);d.src=b.externalGraphic},drawNamedSymbol:function(a,b,c){var d,e,f,g;f=Math.PI/180;var h=OpenLayers.Renderer.symbol[b.graphicName];if(!h)throw Error(b.graphicName+" is not a valid symbol name");
+if(!(!h.length||2>h.length||(a=this.getLocalXY(a),e=a[0],g=a[1],isNaN(e)||isNaN(g)))){this.canvas.lineCap="round";this.canvas.lineJoin="round";this.hitDetection&&(this.hitContext.lineCap="round",this.hitContext.lineJoin="round");if(b.graphicName in this.cachedSymbolBounds)d=this.cachedSymbolBounds[b.graphicName];else{d=new OpenLayers.Bounds;for(a=0;a<h.length;a+=2)d.extend(new OpenLayers.LonLat(h[a],h[a+1]));this.cachedSymbolBounds[b.graphicName]=d}this.canvas.save();this.hitDetection&&this.hitContext.save();
+this.canvas.translate(e,g);this.hitDetection&&this.hitContext.translate(e,g);a=f*b.rotation;isNaN(a)||(this.canvas.rotate(a),this.hitDetection&&this.hitContext.rotate(a));f=2*b.pointRadius/Math.max(d.getWidth(),d.getHeight());this.canvas.scale(f,f);this.hitDetection&&this.hitContext.scale(f,f);a=d.getCenterLonLat().lon;d=d.getCenterLonLat().lat;this.canvas.translate(-a,-d);this.hitDetection&&this.hitContext.translate(-a,-d);g=b.strokeWidth;b.strokeWidth=g/f;if(!1!==b.fill){this.setCanvasStyle("fill",
+b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",c,b);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.fill()}}if(!1!==b.stroke){this.setCanvasStyle("stroke",b);this.canvas.beginPath();for(a=0;a<h.length;a+=2)d=h[a],
+e=h[a+1],0==a&&this.canvas.moveTo(d,e),this.canvas.lineTo(d,e);this.canvas.closePath();this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",c,b,f);this.hitContext.beginPath();for(a=0;a<h.length;a+=2)d=h[a],e=h[a+1],0==a&&this.hitContext.moveTo(d,e),this.hitContext.lineTo(d,e);this.hitContext.closePath();this.hitContext.stroke()}}b.strokeWidth=g;this.canvas.restore();this.hitDetection&&this.hitContext.restore();this.setCanvasStyle("reset")}},setCanvasStyle:function(a,b){"fill"===
+a?(this.canvas.globalAlpha=b.fillOpacity,this.canvas.fillStyle=b.fillColor):"stroke"===a?(this.canvas.globalAlpha=b.strokeOpacity,this.canvas.strokeStyle=b.strokeColor,this.canvas.lineWidth=b.strokeWidth):(this.canvas.globalAlpha=0,this.canvas.lineWidth=1)},featureIdToHex:function(a){a=Number(a.split("_").pop())+1;16777216<=a&&(this.hitOverflow=a-16777215,a=a%16777216+1);a="000000"+a.toString(16);var b=a.length;return a="#"+a.substring(b-6,b)},setHitContextStyle:function(a,b,c,d){b=this.featureIdToHex(b);
+"fill"==a?(this.hitContext.globalAlpha=1,this.hitContext.fillStyle=b):"stroke"==a?(this.hitContext.globalAlpha=1,this.hitContext.strokeStyle=b,"undefined"===typeof d?this.hitContext.lineWidth=c.strokeWidth+2:isNaN(d)||(this.hitContext.lineWidth=c.strokeWidth+2/d)):(this.hitContext.globalAlpha=0,this.hitContext.lineWidth=1)},drawPoint:function(a,b,c){if(!1!==b.graphic)if(b.externalGraphic)this.drawExternalGraphic(a,b,c);else if(b.graphicName&&"circle"!=b.graphicName)this.drawNamedSymbol(a,b,c);else{var d=
+this.getLocalXY(a);a=d[0];d=d[1];if(!isNaN(a)&&!isNaN(d)){var e=2*Math.PI,f=b.pointRadius;!1!==b.fill&&(this.setCanvasStyle("fill",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.fill(),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.fill()));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.canvas.beginPath(),this.canvas.arc(a,d,f,0,e,!0),this.canvas.stroke(),this.hitDetection&&(this.setHitContextStyle("stroke",
+c,b),this.hitContext.beginPath(),this.hitContext.arc(a,d,f,0,e,!0),this.hitContext.stroke()),this.setCanvasStyle("reset"))}}},drawLineString:function(a,b,c){b=OpenLayers.Util.applyDefaults({fill:!1},b);this.drawLinearRing(a,b,c)},drawLinearRing:function(a,b,c){!1!==b.fill&&(this.setCanvasStyle("fill",b),this.renderPath(this.canvas,a,b,c,"fill"),this.hitDetection&&(this.setHitContextStyle("fill",c,b),this.renderPath(this.hitContext,a,b,c,"fill")));!1!==b.stroke&&(this.setCanvasStyle("stroke",b),this.renderPath(this.canvas,
+a,b,c,"stroke"),this.hitDetection&&(this.setHitContextStyle("stroke",c,b),this.renderPath(this.hitContext,a,b,c,"stroke")));this.setCanvasStyle("reset")},renderPath:function(a,b,c,d,e){b=b.components;c=b.length;a.beginPath();d=this.getLocalXY(b[0]);var f=d[1];if(!isNaN(d[0])&&!isNaN(f)){a.moveTo(d[0],d[1]);for(d=1;d<c;++d)f=this.getLocalXY(b[d]),a.lineTo(f[0],f[1]);"fill"===e?a.fill():a.stroke()}},drawPolygon:function(a,b,c){a=a.components;var d=a.length;this.drawLinearRing(a[0],b,c);for(var e=1;e<
+d;++e)this.canvas.globalCompositeOperation="destination-out",this.hitDetection&&(this.hitContext.globalCompositeOperation="destination-out"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({stroke:!1,fillOpacity:1},b),c),this.canvas.globalCompositeOperation="source-over",this.hitDetection&&(this.hitContext.globalCompositeOperation="source-over"),this.drawLinearRing(a[e],OpenLayers.Util.applyDefaults({fill:!1},b),c)},drawText:function(a,b){var c=this.getLocalXY(a);this.setCanvasStyle("reset");
+this.canvas.fillStyle=b.fontColor;this.canvas.globalAlpha=b.fontOpacity||1;var d=[b.fontStyle?b.fontStyle:"normal","normal",b.fontWeight?b.fontWeight:"normal",b.fontSize?b.fontSize:"1em",b.fontFamily?b.fontFamily:"sans-serif"].join(" "),e=b.label.split("\n"),f=e.length;if(this.canvas.fillText){this.canvas.font=d;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[b.labelAlign[1]]||"middle";var g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];
+null==g&&(g=-0.5);d=this.canvas.measureText("Mg").height||this.canvas.measureText("xx").width;c[1]+=d*g*(f-1);for(g=0;g<f;g++)b.labelOutlineWidth&&(this.canvas.save(),this.canvas.globalAlpha=b.labelOutlineOpacity||b.fontOpacity||1,this.canvas.strokeStyle=b.labelOutlineColor,this.canvas.lineWidth=b.labelOutlineWidth,this.canvas.strokeText(e[g],c[0],c[1]+d*g+1),this.canvas.restore()),this.canvas.fillText(e[g],c[0],c[1]+d*g)}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=d;var h=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[0]];
+null==h&&(h=-0.5);g=OpenLayers.Renderer.Canvas.LABEL_FACTOR[b.labelAlign[1]];null==g&&(g=-0.5);d=this.canvas.mozMeasureText("xx");c[1]+=d*(1+g*f);for(g=0;g<f;g++){var k=c[0]+h*this.canvas.mozMeasureText(e[g]),l=c[1]+g*d;this.canvas.translate(k,l);this.canvas.mozDrawText(e[g]);this.canvas.translate(-k,-l)}}this.setCanvasStyle("reset")},getLocalXY:function(a){var b=this.getResolution(),c=this.extent;return[(a.x-this.featureDx)/b+-c.left/b,c.top/b-a.y/b]},clear:function(){var a=this.root.height,b=this.root.width;
+this.canvas.clearRect(0,0,b,a);this.features={};this.hitDetection&&this.hitContext.clearRect(0,0,b,a)},getFeatureIdFromEvent:function(a){var b;if(this.hitDetection&&"none"!==this.root.style.display&&!this.map.dragging&&(a=a.xy,a=this.hitContext.getImageData(a.x|0,a.y|0,1,1).data,255===a[3]&&(a=a[2]+256*(a[1]+256*a[0])))){a="OpenLayers_Feature_Vector_"+(a-1+this.hitOverflow);try{b=this.features[a][0]}catch(c){}}return b},eraseFeatures:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b)delete this.features[a[b].id];
+this.redraw()},redraw:function(){if(!this.locked){var a=this.root.height,b=this.root.width;this.canvas.clearRect(0,0,b,a);this.hitDetection&&this.hitContext.clearRect(0,0,b,a);var a=[],c,d,e=this.map.baseLayer&&this.map.baseLayer.wrapDateLine&&this.map.getMaxExtent(),f;for(f in this.features)this.features.hasOwnProperty(f)&&(b=this.features[f][0],c=b.geometry,this.calculateFeatureDx(c.getBounds(),e),d=this.features[f][1],this.drawGeometry(c,d,b.id),d.label&&a.push([b,d]));b=0;for(c=a.length;b<c;++b)f=
+a[b],this.drawText(f[0].geometry.getCentroid(),f[1])}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={l:"left",r:"right",t:"top",b:"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={l:0,r:-1,t:0,b:-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15E3,translationParameters:null,symbolMetrics:null,initialize:function(a){this.supported()&&(OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments),this.translationParameters={x:0,y:0},this.symbolMetrics={})},supported:function(){return document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG",
+"1.1")||document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"))},inValidRange:function(a,b,c){a+=c?0:this.translationParameters.x;b+=c?0:this.translationParameters.y;return a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL},setExtent:function(a,b){var c=OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments),d=this.getResolution(),e=-a.left/d,d=a.top/d;if(b)return this.left=e,this.top=d,this.rendererRoot.setAttributeNS(null,
+"viewBox","0 0 "+this.size.w+" "+this.size.h),this.translate(this.xOffset,0),!0;(e=this.translate(e-this.left+this.xOffset,d-this.top))||this.setExtent(a,!0);return c&&e},translate:function(a,b){if(this.inValidRange(a,b,!0)){var c="";if(a||b)c="translate("+a+","+b+")";this.root.setAttributeNS(null,"transform",c);this.translationParameters={x:a,y:b};return!0}return!1},setSize:function(a){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);
+this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(a,b){var c=null;switch(a.CLASS_NAME){case "OpenLayers.Geometry.Point":c=b.externalGraphic?"image":this.isComplexSymbol(b.graphicName)?"svg":"circle";break;case "OpenLayers.Geometry.Rectangle":c="rect";break;case "OpenLayers.Geometry.LineString":c="polyline";break;case "OpenLayers.Geometry.LinearRing":c="polygon";break;case "OpenLayers.Geometry.Polygon":case "OpenLayers.Geometry.Curve":c="path"}return c},setStyle:function(a,
+b,c){b=b||a._style;c=c||a._options;var d=b.title||b.graphicTitle;if(d){a.setAttributeNS(null,"title",d);var e=a.getElementsByTagName("title");0<e.length?e[0].firstChild.textContent=d:(e=this.nodeFactory(null,"title"),e.textContent=d,a.appendChild(e))}var e=parseFloat(a.getAttributeNS(null,"r")),d=1,f;if("OpenLayers.Geometry.Point"==a._geometryClass&&e){a.style.visibility="";if(!1===b.graphic)a.style.visibility="hidden";else if(b.externalGraphic){f=this.getPosition(a);b.graphicWidth&&b.graphicHeight&&
+a.setAttributeNS(null,"preserveAspectRatio","none");var e=b.graphicWidth||b.graphicHeight,g=b.graphicHeight||b.graphicWidth,e=e?e:2*b.pointRadius,g=g?g:2*b.pointRadius,h=void 0!=b.graphicYOffset?b.graphicYOffset:-(0.5*g),k=b.graphicOpacity||b.fillOpacity;a.setAttributeNS(null,"x",(f.x+(void 0!=b.graphicXOffset?b.graphicXOffset:-(0.5*e))).toFixed());a.setAttributeNS(null,"y",(f.y+h).toFixed());a.setAttributeNS(null,"width",e);a.setAttributeNS(null,"height",g);a.setAttributeNS(this.xlinkns,"xlink:href",
+b.externalGraphic);a.setAttributeNS(null,"style","opacity: "+k);a.onclick=OpenLayers.Event.preventDefault}else if(this.isComplexSymbol(b.graphicName)){var e=3*b.pointRadius,g=2*e,l=this.importSymbol(b.graphicName);f=this.getPosition(a);d=3*this.symbolMetrics[l.id][0]/g;h=a.parentNode;k=a.nextSibling;h&&h.removeChild(a);a.firstChild&&a.removeChild(a.firstChild);a.appendChild(l.firstChild.cloneNode(!0));a.setAttributeNS(null,"viewBox",l.getAttributeNS(null,"viewBox"));a.setAttributeNS(null,"width",
+g);a.setAttributeNS(null,"height",g);a.setAttributeNS(null,"x",f.x-e);a.setAttributeNS(null,"y",f.y-e);k?h.insertBefore(a,k):h&&h.appendChild(a)}else a.setAttributeNS(null,"r",b.pointRadius);e=b.rotation;void 0===e&&void 0===a._rotation||!f||(a._rotation=e,e|=0,"svg"!==a.nodeName?a.setAttributeNS(null,"transform","rotate("+e+" "+f.x+" "+f.y+")"):(f=this.symbolMetrics[l.id],a.firstChild.setAttributeNS(null,"transform","rotate("+e+" "+f[1]+" "+f[2]+")")))}c.isFilled?(a.setAttributeNS(null,"fill",b.fillColor),
+a.setAttributeNS(null,"fill-opacity",b.fillOpacity)):a.setAttributeNS(null,"fill","none");c.isStroked?(a.setAttributeNS(null,"stroke",b.strokeColor),a.setAttributeNS(null,"stroke-opacity",b.strokeOpacity),a.setAttributeNS(null,"stroke-width",b.strokeWidth*d),a.setAttributeNS(null,"stroke-linecap",b.strokeLinecap||"round"),a.setAttributeNS(null,"stroke-linejoin","round"),b.strokeDashstyle&&a.setAttributeNS(null,"stroke-dasharray",this.dashStyle(b,d))):a.setAttributeNS(null,"stroke","none");b.pointerEvents&&
+a.setAttributeNS(null,"pointer-events",b.pointerEvents);null!=b.cursor&&a.setAttributeNS(null,"cursor",b.cursor);return a},dashStyle:function(a,b){var c=a.strokeWidth*b,d=a.strokeDashstyle;switch(d){case "solid":return"none";case "dot":return[1,4*c].join();case "dash":return[4*c,4*c].join();case "dashdot":return[4*c,4*c,1,4*c].join();case "longdash":return[8*c,4*c].join();case "longdashdot":return[8*c,4*c,1,4*c].join();default:return OpenLayers.String.trim(d).replace(/\s+/g,",")}},createNode:function(a,
+b){var c=document.createElementNS(this.xmlns,a);b&&c.setAttributeNS(null,"id",b);return c},nodeTypeCompare:function(a,b){return b==a.nodeName},createRenderRoot:function(){var a=this.nodeFactory(this.container.id+"_svgRoot","svg");a.style.display="block";return a},createRoot:function(a){return this.nodeFactory(this.container.id+a,"g")},createDefs:function(){var a=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(a);return a},drawPoint:function(a,b){return this.drawCircle(a,
+b,1)},drawCircle:function(a,b,c){var d=this.getResolution(),e=(b.x-this.featureDx)/d+this.left;b=this.top-b.y/d;return this.inValidRange(e,b)?(a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",b),a.setAttributeNS(null,"r",c),a):!1},drawLineString:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,"points",c.path),c.complete?a:null):!1},drawLinearRing:function(a,b){var c=this.getComponentsString(b.components);return c.path?(a.setAttributeNS(null,
+"points",c.path),c.complete?a:null):!1},drawPolygon:function(a,b){for(var c="",d=!0,e=!0,f,g,h=0,k=b.components.length;h<k;h++)c+=" M",f=this.getComponentsString(b.components[h].components," "),(g=f.path)?(c+=" "+g,e=f.complete&&e):d=!1;return d?(a.setAttributeNS(null,"d",c+" z"),a.setAttributeNS(null,"fill-rule","evenodd"),e?a:null):!1},drawRectangle:function(a,b){var c=this.getResolution(),d=(b.x-this.featureDx)/c+this.left,e=this.top-b.y/c;return this.inValidRange(d,e)?(a.setAttributeNS(null,"x",
+d),a.setAttributeNS(null,"y",e),a.setAttributeNS(null,"width",b.width/c),a.setAttributeNS(null,"height",b.height/c),a):!1},drawText:function(a,b,c){var d=!!b.labelOutlineWidth;if(d){var e=OpenLayers.Util.extend({},b);e.fontColor=e.labelOutlineColor;e.fontStrokeColor=e.labelOutlineColor;e.fontStrokeWidth=b.labelOutlineWidth;b.labelOutlineOpacity&&(e.fontOpacity=b.labelOutlineOpacity);delete e.labelOutlineWidth;this.drawText(a,e,c)}var f=this.getResolution(),e=(c.x-this.featureDx)/f+this.left,g=c.y/
+f-this.top,d=d?this.LABEL_OUTLINE_SUFFIX:this.LABEL_ID_SUFFIX,f=this.nodeFactory(a+d,"text");f.setAttributeNS(null,"x",e);f.setAttributeNS(null,"y",-g);b.fontColor&&f.setAttributeNS(null,"fill",b.fontColor);b.fontStrokeColor&&f.setAttributeNS(null,"stroke",b.fontStrokeColor);b.fontStrokeWidth&&f.setAttributeNS(null,"stroke-width",b.fontStrokeWidth);b.fontOpacity&&f.setAttributeNS(null,"opacity",b.fontOpacity);b.fontFamily&&f.setAttributeNS(null,"font-family",b.fontFamily);b.fontSize&&f.setAttributeNS(null,
+"font-size",b.fontSize);b.fontWeight&&f.setAttributeNS(null,"font-weight",b.fontWeight);b.fontStyle&&f.setAttributeNS(null,"font-style",b.fontStyle);!0===b.labelSelect?(f.setAttributeNS(null,"pointer-events","visible"),f._featureId=a):f.setAttributeNS(null,"pointer-events","none");g=b.labelAlign||OpenLayers.Renderer.defaultSymbolizer.labelAlign;f.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[g[0]]||"middle");!0===OpenLayers.IS_GECKO&&f.setAttributeNS(null,"dominant-baseline",
+OpenLayers.Renderer.SVG.LABEL_ALIGN[g[1]]||"central");for(var h=b.label.split("\n"),k=h.length;f.childNodes.length>k;)f.removeChild(f.lastChild);for(var l=0;l<k;l++){var m=this.nodeFactory(a+d+"_tspan_"+l,"tspan");!0===b.labelSelect&&(m._featureId=a,m._geometry=c,m._geometryClass=c.CLASS_NAME);!1===OpenLayers.IS_GECKO&&m.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[g[1]]||"-35%");m.setAttribute("x",e);if(0==l){var r=OpenLayers.Renderer.SVG.LABEL_VFACTOR[g[1]];null==r&&
+(r=-0.5);m.setAttribute("dy",r*(k-1)+"em")}else m.setAttribute("dy","1em");m.textContent=""===h[l]?" ":h[l];m.parentNode||f.appendChild(m)}f.parentNode||this.textRoot.appendChild(f)},getComponentsString:function(a,b){for(var c=[],d=!0,e=a.length,f=[],g,h=0;h<e;h++)g=a[h],c.push(g),(g=this.getShortString(g))?f.push(g):(0<h&&this.getShortString(a[h-1])&&f.push(this.clipLine(a[h],a[h-1])),h<e-1&&this.getShortString(a[h+1])&&f.push(this.clipLine(a[h],a[h+1])),d=!1);return{path:f.join(b||","),complete:d}},
+clipLine:function(a,b){if(b.equals(a))return"";var c=this.getResolution(),d=this.MAX_PIXEL-this.translationParameters.x,e=this.MAX_PIXEL-this.translationParameters.y,f=(b.x-this.featureDx)/c+this.left,g=this.top-b.y/c,h=(a.x-this.featureDx)/c+this.left,c=this.top-a.y/c,k;if(h<-d||h>d)k=(c-g)/(h-f),h=0>h?-d:d,c=g+(h-f)*k;if(c<-e||c>e)k=(h-f)/(c-g),c=0>c?-e:e,h=f+(c-g)*k;return h+","+c},getShortString:function(a){var b=this.getResolution(),c=(a.x-this.featureDx)/b+this.left;a=this.top-a.y/b;return this.inValidRange(c,
+a)?c+","+a:!1},getPosition:function(a){return{x:parseFloat(a.getAttributeNS(null,"cx")),y:parseFloat(a.getAttributeNS(null,"cy"))}},importSymbol:function(a){this.defs||(this.defs=this.createDefs());var b=this.container.id+"-"+a,c=document.getElementById(b);if(null!=c)return c;var d=OpenLayers.Renderer.symbol[a];if(!d)throw Error(a+" is not a valid symbol name");a=this.nodeFactory(b,"symbol");var e=this.nodeFactory(null,"polygon");a.appendChild(e);for(var c=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,
+0,0),f=[],g,h,k=0;k<d.length;k+=2)g=d[k],h=d[k+1],c.left=Math.min(c.left,g),c.bottom=Math.min(c.bottom,h),c.right=Math.max(c.right,g),c.top=Math.max(c.top,h),f.push(g,",",h);e.setAttributeNS(null,"points",f.join(" "));d=c.getWidth();e=c.getHeight();a.setAttributeNS(null,"viewBox",[c.left-d,c.bottom-e,3*d,3*e].join(" "));this.symbolMetrics[b]=[Math.max(d,e),c.getCenterLonLat().lon,c.getCenterLonLat().lat];this.defs.appendChild(a);return a},getFeatureIdFromEvent:function(a){var b=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,
+arguments);b||(b=a.target,b=b.parentNode&&b!=this.rendererRoot?b.parentNode._featureId:void 0);return b},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={l:"start",r:"end",b:"bottom",t:"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={t:"-70%",b:"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={t:0,b:-1};OpenLayers.Renderer.SVG.preventDefault=function(a){OpenLayers.Event.preventDefault(a)};OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,evaluate:function(a){var b=!1;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(a.geometry){var c=this.value;"OpenLayers.Bounds"==this.value.CLASS_NAME&&(c=this.value.toGeometry());a.geometry.intersects(c)&&(b=!0)}break;default:throw Error("evaluate is not implemented for this filter type.");}return b},clone:function(){var a=
+OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(a)},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:!0,lowerBoundary:null,upperBoundary:null,initialize:function(a){OpenLayers.Filter.prototype.initialize.apply(this,[a]);this.type===OpenLayers.Filter.Comparison.LIKE&&void 0===a.matchCase&&(this.matchCase=null)},evaluate:function(a){a instanceof OpenLayers.Feature.Vector&&(a=a.attributes);var b=!1;a=a[this.property];switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:b=this.value;
+b=this.matchCase||"string"!=typeof a||"string"!=typeof b?a==b:a.toUpperCase()==b.toUpperCase();break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:b=this.value;b=this.matchCase||"string"!=typeof a||"string"!=typeof b?a!=b:a.toUpperCase()!=b.toUpperCase();break;case OpenLayers.Filter.Comparison.LESS_THAN:b=a<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:b=a>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:b=a<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:b=
+a>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:b=a>=this.lowerBoundary&&a<=this.upperBoundary;break;case OpenLayers.Filter.Comparison.LIKE:b=RegExp(this.value,"gi").test(a);break;case OpenLayers.Filter.Comparison.IS_NULL:b=null===a}return b},value2regex:function(a,b,c){if("."==a)throw Error("'.' is an unsupported wildCard character for OpenLayers.Filter.Comparison");a=a?a:"*";b=b?b:".";this.value=this.value.replace(RegExp("\\"+(c?c:"!")+"(.|$)","g"),"\\$1");this.value=this.value.replace(RegExp("\\"+
+b,"g"),".");this.value=this.value.replace(RegExp("\\"+a,"g"),".*");this.value=this.value.replace(RegExp("\\\\.\\*","g"),"\\"+a);return this.value=this.value.replace(RegExp("\\\\\\.","g"),"\\"+b)},regex2value:function(){var a=this.value,a=a.replace(/!/g,"!!"),a=a.replace(/(\\)?\\\./g,function(a,c){return c?a:"!."}),a=a.replace(/(\\)?\\\*/g,function(a,c){return c?a:"!*"}),a=a.replace(/\\\\/g,"\\");return a=a.replace(/\.\*/g,"*")},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison,
+this)},CLASS_NAME:"OpenLayers.Filter.Comparison"});OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Filter.Comparison.IS_NULL="NULL";OpenLayers.Format.QueryStringFilter=function(){function a(a){a=a.replace(/%/g,"\\%");a=a.replace(/\\\\\.(\*)?/g,function(a,b){return b?a:"\\\\_"});a=a.replace(/\\\\\.\*/g,"\\\\%");a=a.replace(/(\\)?\.(\*)?/g,function(a,b,c){return b||c?a:"_"});a=a.replace(/(\\)?\.\*/g,function(a,b){return b?a:"%"});a=a.replace(/\\\./g,".");return a=a.replace(/(\\)?\\\*/g,function(a,b){return b?a:"*"})}var b={};b[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";b[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";b[OpenLayers.Filter.Comparison.LESS_THAN]=
+"lt";b[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";b[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";b[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";b[OpenLayers.Filter.Comparison.LIKE]="ilike";return OpenLayers.Class(OpenLayers.Format,{wildcarded:!1,srsInBBOX:!1,write:function(c,d){d=d||{};var e=c.CLASS_NAME,e=e.substring(e.lastIndexOf(".")+1);switch(e){case "Spatial":switch(c.type){case OpenLayers.Filter.Spatial.BBOX:d.bbox=c.value.toArray();this.srsInBBOX&&c.projection&&
+d.bbox.push(c.projection.getCode());break;case OpenLayers.Filter.Spatial.DWITHIN:d.tolerance=c.distance;case OpenLayers.Filter.Spatial.WITHIN:d.lon=c.value.x;d.lat=c.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+c.type)}break;case "Comparison":e=b[c.type];if(void 0!==e){var f=c.value;c.type==OpenLayers.Filter.Comparison.LIKE&&(f=a(f),this.wildcarded&&(f="%"+f+"%"));d[c.property+"__"+e]=f;d.queryable=d.queryable||[];d.queryable.push(c.property)}else OpenLayers.Console.warn("Unknown comparison filter type "+
+c.type);break;case "Logical":if(c.type===OpenLayers.Filter.Logical.AND)for(e=0,f=c.filters.length;e<f;e++)d=this.write(c.filters[e],d);else OpenLayers.Console.warn("Unsupported logical filter type "+c.type);break;default:OpenLayers.Console.warn("Unknown filter type "+e)}return d},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"})}();OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(a){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map&&this.map.events.unregister("buttonclick",this,this.onButtonClick);this.removeButtons();this.position=this.buttons=null;OpenLayers.Control.prototype.destroy.apply(this,arguments)},
+setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.register("buttonclick",this,this.onButtonClick)},draw:function(a){OpenLayers.Control.prototype.draw.apply(this,arguments);a=this.position;this.buttons=[];var b={w:18,h:18},c=new OpenLayers.Pixel(a.x+b.w/2,a.y);this._addButton("panup","north-mini.png",c,b);a.y=c.y+b.h;this._addButton("panleft","west-mini.png",a,b);this._addButton("panright","east-mini.png",a.add(b.w,0),b);this._addButton("pandown","south-mini.png",
+c.add(0,2*b.h),b);this._addButton("zoomin","zoom-plus-mini.png",c.add(0,3*b.h+5),b);this._addButton("zoomworld","zoom-world-mini.png",c.add(0,4*b.h+5),b);this._addButton("zoomout","zoom-minus-mini.png",c.add(0,5*b.h+5),b);return this.div},_addButton:function(a,b,c,d){b=OpenLayers.Util.getImageLocation(b);c=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+a,c,d,b,"absolute");c.style.cursor="pointer";this.div.appendChild(c);c.action=a;c.className="olButton";this.buttons.push(c);return c},_removeButton:function(a){this.div.removeChild(a);
+OpenLayers.Util.removeItem(this.buttons,a)},removeButtons:function(){for(var a=this.buttons.length-1;0<=a;--a)this._removeButton(this.buttons[a])},onButtonClick:function(a){switch(a.buttonElement.action){case "panup":this.map.pan(0,-this.getSlideFactor("h"));break;case "pandown":this.map.pan(0,this.getSlideFactor("h"));break;case "panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case "panright":this.map.pan(this.getSlideFactor("w"),0);break;case "zoomin":this.map.zoomIn();break;case "zoomout":this.map.zoomOut();
+break;case "zoomworld":this.map.zoomToMaxExtent()}},getSlideFactor:function(a){return this.slideRatio?this.map.getSize()[a]*this.slideRatio:this.slideFactor},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:!0,autoDestroy:!0,initialize:function(a){OpenLayers.Util.extend(this,a);this.options=a;this.active=!1},destroy:function(){this.deactivate();this.options=this.layer=null},setLayer:function(a){this.layer=a},activate:function(){return this.active?!1:this.active=!0},deactivate:function(){return this.active?(this.active=!1,!0):!1},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",template:"${layers}",destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments)},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,
+addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var a=[];if(this.map&&this.map.layers){for(var b=0,c=this.map.layers.length;b<c;b++){var d=this.map.layers[b];d.attribution&&d.getVisibility()&&-1===OpenLayers.Util.indexOf(a,d.attribution)&&a.push(d.attribution)}this.div.innerHTML=OpenLayers.String.format(this.template,{layers:a.join(this.separator)})}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(a){a=a||window.location.href;var b=OpenLayers.Util.getParameters(a),c=a.indexOf("#");0<c&&(a="?"+a.substring(c+1,a.length),OpenLayers.Util.extend(b,OpenLayers.Util.getParameters(a)));return b},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d!=this&&
+"OpenLayers.Control.ArgParser"==d.CLASS_NAME){d.displayProjection!=this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&(b=this.getParameters(),b.layers&&(this.layers=b.layers,this.map.events.register("addlayer",this,this.configureLayers),this.configureLayers()),b.lat&&b.lon&&(this.center=new OpenLayers.LonLat(parseFloat(b.lon),parseFloat(b.lat)),b.zoom&&(this.zoom=parseFloat(b.zoom)),this.map.events.register("changebaselayer",this,this.setCenter),
+this.setCenter()))},setCenter:function(){this.map.baseLayer&&(this.map.events.unregister("changebaselayer",this,this.setCenter),this.displayProjection&&this.center.transform(this.displayProjection,this.map.getProjectionObject()),this.map.setCenter(this.center,this.zoom))},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var a=0,b=this.layers.length;a<b;a++){var c=this.map.layers[a],d=this.layers.charAt(a);
+"B"==d?this.map.setBaseLayer(c):"T"!=d&&"F"!=d||c.setVisibility("T"==d)}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:!1,base:"",displayProjection:null,initialize:function(a,b,c){null===a||"object"!=typeof a||OpenLayers.Util.isElement(a)?(OpenLayers.Control.prototype.initialize.apply(this,[c]),this.element=OpenLayers.Util.getElement(a),this.base=b||document.location.href):(this.base=document.location.href,OpenLayers.Control.prototype.initialize.apply(this,[a]),null!=this.element&&(this.element=
+OpenLayers.Util.getElement(this.element)))},destroy:function(){this.element&&this.element.parentNode==this.div&&(this.div.removeChild(this.element),this.element=null);this.map&&this.map.events.unregister("moveend",this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments)},setMap:function(a){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var b=0,c=this.map.controls.length;b<c;b++){var d=this.map.controls[b];if(d.CLASS_NAME==this.argParserClass.CLASS_NAME){d.displayProjection!=
+this.displayProjection&&(this.displayProjection=d.displayProjection);break}}b==this.map.controls.length&&this.map.addControl(new this.argParserClass({displayProjection:this.displayProjection}))},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.element||this.anchor||(this.element=document.createElement("a"),this.element.innerHTML=OpenLayers.i18n("Permalink"),this.element.href="",this.div.appendChild(this.element));this.map.events.on({moveend:this.updateLink,changelayer:this.updateLink,
+changebaselayer:this.updateLink,scope:this});this.updateLink();return this.div},updateLink:function(){var a=this.anchor?"#":"?",b=this.base,c=null;-1!=b.indexOf("#")&&!1==this.anchor&&(c=b.substring(b.indexOf("#"),b.length));-1!=b.indexOf(a)&&(b=b.substring(0,b.indexOf(a)));b=b.split("#")[0]+a+OpenLayers.Util.getParameterString(this.createParams());c&&(b+=c);this.anchor&&!this.element?window.location.href=b:this.element.href=b},createParams:function(a,b,c){a=a||this.map.getCenter();var d=OpenLayers.Util.getParameters(this.base);
+if(a)for(d.zoom=b||this.map.getZoom(),b=a.lat,a=a.lon,this.displayProjection&&(b=OpenLayers.Projection.transform({x:a,y:b},this.map.getProjectionObject(),this.displayProjection),a=b.x,b=b.y),d.lat=Math.round(1E5*b)/1E5,d.lon=Math.round(1E5*a)/1E5,c=c||this.map.layers,d.layers="",a=0,b=c.length;a<b;a++){var e=c[a];d.layers=e.isBaseLayer?d.layers+(e==this.map.baseLayer?"B":"0"):d.layers+(e.getVisibility()?"T":"F")}return d},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{multipleKey:null,toggleKey:null,multiple:!1,clickout:!0,toggle:!1,hover:!1,highlightOnly:!1,box:!1,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(a,b){OpenLayers.Control.prototype.initialize.apply(this,[b]);null===this.scope&&(this.scope=this);this.initLayer(a);var c=
+{click:this.clickFeature,clickout:this.clickoutFeature};this.hover&&(c.over=this.overFeature,c.out=this.outFeature);this.callbacks=OpenLayers.Util.extend(c,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};this.box&&(this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"}))},initLayer:function(a){OpenLayers.Util.isArray(a)?(this.layers=a,this.layer=
+new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:a})):this.layer=a},destroy:function(){this.active&&this.layers&&this.map.removeLayer(this.layer);OpenLayers.Control.prototype.destroy.apply(this,arguments);this.layers&&this.layer.destroy()},activate:function(){this.active||(this.layers&&this.map.addLayer(this.layer),this.handlers.feature.activate(),this.box&&this.handlers.box&&this.handlers.box.activate());return OpenLayers.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.active&&
+(this.handlers.feature.deactivate(),this.handlers.box&&this.handlers.box.deactivate(),this.layers&&this.map.removeLayer(this.layer));return OpenLayers.Control.prototype.deactivate.apply(this,arguments)},unselectAll:function(a){var b=this.layers||[this.layer],c,d,e,f;for(e=0;e<b.length;++e)if(c=b[e],f=0,null!=c.selectedFeatures)for(;c.selectedFeatures.length>f;)d=c.selectedFeatures[f],a&&a.except==d?++f:this.unselect(d)},clickFeature:function(a){this.hover||(-1<OpenLayers.Util.indexOf(a.layer.selectedFeatures,
+a)?this.toggleSelect()?this.unselect(a):this.multipleSelect()||this.unselectAll({except:a}):(this.multipleSelect()||this.unselectAll({except:a}),this.select(a)))},multipleSelect:function(){return this.multiple||this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]},toggleSelect:function(){return this.toggle||this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]},clickoutFeature:function(a){!this.hover&&this.clickout&&this.unselectAll()},overFeature:function(a){var b=
+a.layer;this.hover&&(this.highlightOnly?this.highlight(a):-1==OpenLayers.Util.indexOf(b.selectedFeatures,a)&&this.select(a))},outFeature:function(a){if(this.hover)if(this.highlightOnly){if(a._lastHighlighter==this.id)if(a._prevHighlighter&&a._prevHighlighter!=this.id){delete a._lastHighlighter;var b=this.map.getControl(a._prevHighlighter);b&&b.highlight(a)}else this.unhighlight(a)}else this.unselect(a)},highlight:function(a){var b=a.layer;!1!==this.events.triggerEvent("beforefeaturehighlighted",{feature:a})&&
+(a._prevHighlighter=a._lastHighlighter,a._lastHighlighter=this.id,b.drawFeature(a,this.selectStyle||this.renderIntent),this.events.triggerEvent("featurehighlighted",{feature:a}))},unhighlight:function(a){var b=a.layer;void 0==a._prevHighlighter?delete a._lastHighlighter:(a._prevHighlighter!=this.id&&(a._lastHighlighter=a._prevHighlighter),delete a._prevHighlighter);b.drawFeature(a,a.style||a.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:a})},select:function(a){var b=
+this.onBeforeSelect.call(this.scope,a),c=a.layer;!1!==b&&(b=c.events.triggerEvent("beforefeatureselected",{feature:a}),!1!==b&&(c.selectedFeatures.push(a),this.highlight(a),this.handlers.feature.lastFeature||(this.handlers.feature.lastFeature=c.selectedFeatures[0]),c.events.triggerEvent("featureselected",{feature:a}),this.onSelect.call(this.scope,a)))},unselect:function(a){var b=a.layer;this.unhighlight(a);OpenLayers.Util.removeItem(b.selectedFeatures,a);b.events.triggerEvent("featureunselected",
+{feature:a});this.onUnselect.call(this.scope,a)},selectBox:function(a){if(a instanceof OpenLayers.Bounds){var b=this.map.getLonLatFromPixel({x:a.left,y:a.bottom});a=this.map.getLonLatFromPixel({x:a.right,y:a.top});b=new OpenLayers.Bounds(b.lon,b.lat,a.lon,a.lat);this.multipleSelect()||this.unselectAll();a=this.multiple;this.multiple=!0;var c=this.layers||[this.layer];this.events.triggerEvent("boxselectionstart",{layers:c});for(var d,e=0;e<c.length;++e){d=c[e];for(var f=0,g=d.features.length;f<g;++f){var h=
+d.features[f];h.getVisibility()&&(null==this.geometryTypes||-1<OpenLayers.Util.indexOf(this.geometryTypes,h.geometry.CLASS_NAME))&&b.toGeometry().intersects(h.geometry)&&-1==OpenLayers.Util.indexOf(d.selectedFeatures,h)&&this.select(h)}}this.multiple=a;this.events.triggerEvent("boxselectionend",{layers:c})}},setMap:function(a){this.handlers.feature.setMap(a);this.box&&this.handlers.box.setMap(a);OpenLayers.Control.prototype.setMap.apply(this,arguments)},setLayer:function(a){var b=this.active;this.unselectAll();
+this.deactivate();this.layers&&(this.layer.destroy(),this.layers=null);this.initLayer(a);this.handlers.feature.layer=this.layer;b&&this.activate()},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:!1,activate:function(){var a=OpenLayers.Strategy.prototype.activate.apply(this,arguments);if(a)if(this.layer.events.on({refresh:this.load,scope:this}),!0==this.layer.visibility||this.preload)this.load();else this.layer.events.on({visibilitychanged:this.load,scope:this});return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({refresh:this.load,visibilitychanged:this.load,
+scope:this});return a},load:function(a){var b=this.layer;b.events.triggerEvent("loadstart",{filter:b.filter});b.protocol.read(OpenLayers.Util.applyDefaults({callback:this.merge,filter:b.filter,scope:this},a));b.events.un({visibilitychanged:this.load,scope:this})},merge:function(a){var b=this.layer;b.destroyFeatures();var c=a.features;if(c&&0<c.length){var d=b.projection,e=b.map.getProjectionObject();if(!e.equals(d))for(var f,g=0,h=c.length;g<h;++g)(f=c[g].geometry)&&f.transform(d,e);b.addFeatures(c)}b.events.triggerEvent("loadend",
+{response:a})},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:!1,stopDown:!1,pinching:!1,last:null,start:null,touchstart:function(a){var b=!0;this.pinching=!1;if(OpenLayers.Event.isMultiTouch(a))this.started=!0,this.last=this.start={distance:this.getDistance(a.touches),delta:0,scale:1},this.callback("start",[a,this.start]),b=!this.stopDown;else{if(this.started)return!1;this.started=!1;this.last=this.start=null}OpenLayers.Event.preventDefault(a);return b},touchmove:function(a){if(this.started&&
+OpenLayers.Event.isMultiTouch(a)){this.pinching=!0;var b=this.getPinchData(a);this.callback("move",[a,b]);this.last=b;OpenLayers.Event.stop(a)}else if(this.started)return!1;return!0},touchend:function(a){return this.started&&!OpenLayers.Event.isMultiTouch(a)?(this.pinching=this.started=!1,this.callback("done",[a,this.start,this.last]),this.last=this.start=null,!1):!0},activate:function(){var a=!1;OpenLayers.Handler.prototype.activate.apply(this,arguments)&&(this.pinching=!1,a=!0);return a},deactivate:function(){var a=
+!1;OpenLayers.Handler.prototype.deactivate.apply(this,arguments)&&(this.pinching=this.started=!1,this.last=this.start=null,a=!0);return a},getDistance:function(a){var b=a[0];a=a[1];return Math.sqrt(Math.pow(b.olClientX-a.olClientX,2)+Math.pow(b.olClientY-a.olClientY,2))},getPinchData:function(a){a=this.getDistance(a.touches);return{distance:a,delta:this.last.distance-a,scale:a/this.start.distance}},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,pinchOrigin:null,currentCenter:null,autoActivate:!0,preserveCenter:!1,initialize:function(a){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions)},pinchStart:function(a,b){var c=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy;this.currentCenter=
+this.pinchOrigin=c},pinchMove:function(a,b){var c=b.scale,d=this.map.layerContainerOriginPx,e=this.pinchOrigin,f=this.preserveCenter?this.map.getPixelFromLonLat(this.map.getCenter()):a.xy,g=Math.round(d.x+f.x-e.x+(c-1)*(d.x-e.x)),d=Math.round(d.y+f.y-e.y+(c-1)*(d.y-e.y));this.map.applyTransform(g,d,c);this.currentCenter=f},pinchDone:function(a,b,c){this.map.applyTransform();a=this.map.getZoomForResolution(this.map.getResolution()/c.scale,!0);if(a!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){b=
+this.map.getResolutionForZoom(a);c=this.map.getLonLatFromPixel(this.pinchOrigin);var d=this.currentCenter,e=this.map.getSize();c.lon+=b*(e.w/2-d.x);c.lat-=b*(e.h/2-d.y);this.map.div.clientWidth=this.map.div.clientWidth;this.map.setCenter(c,a)}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Date={dateRegEx:/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/,toISOString:function(){return"toISOString"in Date.prototype?function(a){return a.toISOString()}:function(a){return isNaN(a.getTime())?"Invalid Date":a.getUTCFullYear()+"-"+OpenLayers.Number.zeroPad(a.getUTCMonth()+1,2)+"-"+OpenLayers.Number.zeroPad(a.getUTCDate(),2)+"T"+OpenLayers.Number.zeroPad(a.getUTCHours(),2)+":"+OpenLayers.Number.zeroPad(a.getUTCMinutes(),
+2)+":"+OpenLayers.Number.zeroPad(a.getUTCSeconds(),2)+"."+OpenLayers.Number.zeroPad(a.getUTCMilliseconds(),3)+"Z"}}(),parse:function(a){var b;if((a=a.match(this.dateRegEx))&&(a[1]||a[7])){b=parseInt(a[1],10)||0;var c=parseInt(a[2],10)-1||0,d=parseInt(a[3],10)||1;b=new Date(Date.UTC(b,c,d));if(c=a[7]){var d=parseInt(a[4],10),e=parseInt(a[5],10),f=parseFloat(a[6]),g=f|0,f=Math.round(1E3*(f-g));b.setUTCHours(d,e,g,f);"Z"!==c&&(c=parseInt(c,10),a=parseInt(a[8],10)||0,a=-1E3*(3600*c+60*a),b=new Date(b.getTime()+
+a))}}else b=new Date("invalid");return b}};OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=
+{trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,kmlColor:/(\w{2})(\w{2})(\w{2})(\w{2})/,kmlIconPalette:/root:\/\/icons\/palette-(\d+)(\.\w+)/,straightBracket:/\$\[(.*?)\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&
+(a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,
+b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=
+null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=
+d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var k=32*h,l=this.getElementsByTagNameNS(e,"*","Icon")[0];if(l){var m=this.parseProperty(l,"*","href");if(m){var r=this.parseProperty(l,"*","w"),p=this.parseProperty(l,
+"*","h");!OpenLayers.String.startsWith(m,"http://maps.google.com/mapfiles/kml")||r||p||(p=r=64,h/=2);r=r||p;p=p||r;r&&(d=parseInt(r)*h);p&&(k=parseInt(p)*h);if(p=m.match(this.regExes.kmlIconPalette))r=p[1],p=p[2],m=this.parseProperty(l,"*","x"),l=this.parseProperty(l,"*","y"),m="http://maps.google.com/mapfiles/kml/pal"+r+"/icon"+(8*(l?7-l/32:7)+(m?m/32:0))+p;b.graphicOpacity=1;b.externalGraphic=m}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])m=parseFloat(e.getAttribute("x")),l=parseFloat(e.getAttribute("y")),
+r=e.getAttribute("xunits"),"pixels"==r?b.graphicXOffset=-m*h:"insetPixels"==r?b.graphicXOffset=-d+m*h:"fraction"==r&&(b.graphicXOffset=-d*m),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-k+l*h+1:"insetPixels"==e?b.graphicYOffset=-(l*h)+1:"fraction"==e&&(b.graphicYOffset=-k*(1-l)+1);b.graphicWidth=d;b.graphicHeight=k;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,
+"*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);(a=a.getAttribute("id"))&&b&&(b.id=a);return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var k=f[g],l=this.parseProperty(k,"*","key");(k=this.parseProperty(k,"*","styleUrl"))&&"normal"==l&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||
+"")+k])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&g.attributes&&g.attributes.styleUrl&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];h&&(h=this.parseStyle(h))&&(g.style=OpenLayers.Util.extend(g.style,h))}this.extractTracks?(f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length&&(g={features:[],feature:g},
+this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)):c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<
+f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,
+e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;d=c.points[e];h.geometry=d;"z"in d&&(h.attributes.altitude=d.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes)for(var k=0,l=this.trackAttributes.length;k<l;++k)d=this.trackAttributes[k],h.attributes[d]=c.attributes[d][e];h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(d=c.angles[e],h.attributes.heading=
+parseFloat(d[0]),h.attributes.tilt=parseFloat(d[1]),h.attributes.roll=parseFloat(d[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],
+c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||
+a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates");a=[];if(0<b.length){var c=b[0].firstChild.nodeValue,
+c=c.replace(this.regExes.removeSpace,"");a=c.split(",")}b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,k=0;k<e;++k)if(g=
+d[k].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[k]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[k];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing");var b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=
+b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=a.prefix?a.nodeName.split(":")[1]:a.nodeName,(b=this.parseGeometry[b.toLowerCase()])&&c.push(b.apply(this,[a])));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));var d,e,f;a=a.childNodes;for(var c=
+0,g=a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");
+var h={},k=e.getElementsByTagName("value");k.length&&(h.value=this.getChildValue(k[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d;a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=
+null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&
+(b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name"),c=a.style&&a.style.label?a.style.label:a.id;b.appendChild(this.createTextNode(a.attributes.name||c));var d=this.createElementNS(this.kmlns,"description");d.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));c=this.createElementNS(this.kmlns,"Placemark");null!=
+a.fid&&c.setAttribute("id",a.fid);c.appendChild(b);c.appendChild(d);b=this.buildGeometryNode(a.geometry);c.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&c.appendChild(a);return c},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=b.substring(b.lastIndexOf(".")+1),b=this.buildGeometry[b.toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},
+multipoint:function(a){return this.buildGeometry.collection.apply(this,[a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){var b=this.createElementNS(this.kmlns,"Polygon");a=a.components;
+for(var c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=
+this.createElementNS(this.kmlns,"coordinates"),c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),
+c;for(c in a)if(a[c]&&"name"!=c&&"description"!=c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?
+null:b},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var a=OpenLayers.Strategy.prototype.activate.call(this);a&&(this.layer.events.on({moveend:this.update,refresh:this.update,visibilitychanged:this.update,scope:this}),this.update());return a},deactivate:function(){var a=OpenLayers.Strategy.prototype.deactivate.call(this);a&&this.layer.events.un({moveend:this.update,refresh:this.update,visibilitychanged:this.update,
+scope:this});return a},update:function(a){var b=this.getMapBounds();null!==b&&(a&&a.force||this.layer.visibility&&this.layer.calculateInRange()&&this.invalidBounds(b))&&(this.calculateBounds(b),this.resolution=this.layer.map.getResolution(),this.triggerRead(a))},getMapBounds:function(){if(null===this.layer.map)return null;var a=this.layer.map.getExtent();a&&!this.layer.projection.equals(this.layer.map.getProjectionObject())&&(a=a.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection));
+return a},invalidBounds:function(a){a||(a=this.getMapBounds());a=!this.bounds||!this.bounds.containsBounds(a);!a&&this.resFactor&&(a=this.resolution/this.layer.map.getResolution(),a=a>=this.resFactor||a<=1/this.resFactor);return a},calculateBounds:function(a){a||(a=this.getMapBounds());var b=a.getCenterLonLat(),c=a.getWidth()*this.ratio;a=a.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(b.lon-c/2,b.lat-a/2,b.lon+c/2,b.lat+a/2)},triggerRead:function(a){!this.response||a&&!0===a.noAbort||
+(this.layer.protocol.abort(this.response),this.layer.events.triggerEvent("loadend"));var b={filter:this.createFilter()};this.layer.events.triggerEvent("loadstart",b);this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:b.filter,callback:this.merge,scope:this},a))},createFilter:function(){var a=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});this.layer.filter&&(a=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,
+filters:[this.layer.filter,a]}));return a},merge:function(a){this.layer.destroyFeatures();if(a.success()){var b=a.features;if(b&&0<b.length){var c=this.layer.projection,d=this.layer.map.getProjectionObject();if(!d.equals(c))for(var e,f=0,g=b.length;f<g;++f)(e=b[f].geometry)&&e.transform(c,d);this.layer.addFeatures(b)}}else this.bounds=null;this.response=null;this.layer.events.triggerEvent("loadend",{response:a})},CLASS_NAME:"OpenLayers.Strategy.BBOX"});
diff --git a/web/js/fixmystreet-admin.js b/web/js/fixmystreet-admin.js
new file mode 100644
index 000000000..1663dda7b
--- /dev/null
+++ b/web/js/fixmystreet-admin.js
@@ -0,0 +1,79 @@
+$(function(){
+ // available for admin pages
+
+ // hide the open311_only section and reveal it only when send_method is relevant
+ var $open311_only = $('.admin-open311-only');
+
+ function hide_or_show_open311(hide_fast) {
+ var send_method = $('#send_method').val();
+ var show_open311 = false;
+ if ($('#endpoint').val()) {
+ show_open311 = true; // always show the form if there is an endpoint value
+ } else if (send_method && send_method.toLowerCase() != 'email') {
+ show_open311 = true;
+ }
+ if (show_open311) {
+ $open311_only.slideDown();
+ } else {
+ if (hide_fast) {
+ $open311_only.hide();
+ } else {
+ $open311_only.slideUp();
+ }
+ }
+ }
+
+ if ($open311_only) {
+ $('#send_method').on('change', hide_or_show_open311);
+ hide_or_show_open311(true);
+ }
+
+ if ($('body').hasClass("show-admin-notes")) {
+
+ // admin hints: maybe better implemented as tooltips?
+ $(".admin-hint").on('click', function(){
+ if ($(this).hasClass('admin-hint-show')) {
+ $(this).removeClass('admin-hint-show');
+ } else {
+ $(this).addClass('admin-hint-show');
+ }
+ });
+
+ // on a body's page, hide/show deleted contact categories
+ var $table_with_deleted_contacts = $('table tr.is-deleted td.contact-category').closest('table');
+ if ($table_with_deleted_contacts.length == 1) {
+ var $toggle_deleted_btn = $("<input type='submit' class='btn' value='Hide deleted contacts' id='toggle-deleted-contacts-btn' style='margin:1em 0;'/>");
+ $table_with_deleted_contacts.before($toggle_deleted_btn);
+ $toggle_deleted_btn.on('click', function(e){
+ e.preventDefault();
+ var $cols = $table_with_deleted_contacts.find('tr.is-deleted');
+ if ($cols.first().is(':visible')) {
+ $cols.hide();
+ $(this).prop("value", 'Show deleted contacts');
+ } else {
+ $cols.show();
+ $(this).prop("value", 'Hide deleted contacts');
+ }
+ });
+ }
+ }
+
+ $( "#start_date" ).datepicker({
+ defaultDate: "-1w",
+ changeMonth: true,
+ dateFormat: 'dd/mm/yy' ,
+ // This sets the other fields minDate to our date
+ onClose: function( selectedDate ) {
+ $( "#end_date" ).datepicker( "option", "minDate", selectedDate );
+ }
+ });
+ $( "#end_date" ).datepicker({
+ /// defaultDate: "+1w",
+ changeMonth: true,
+ dateFormat: 'dd/mm/yy' ,
+ onClose: function( selectedDate ) {
+ $( "#start_date" ).datepicker( "option", "maxDate", selectedDate );
+ }
+ });
+});
+
diff --git a/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif b/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif
new file mode 100755
index 000000000..d441f75eb
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/animated-overlay.gif
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100755
index 000000000..c09235f60
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100755
index 000000000..d29011d2a
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100755
index 000000000..1558bea51
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755
index 000000000..0359b121f
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100755
index 000000000..4fce6c462
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100755
index 000000000..5299b5a0b
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100755
index 000000000..398c56a9c
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100755
index 000000000..d819aa58a
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png b/web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
new file mode 100755
index 000000000..c1cb1170c
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
new file mode 100755
index 000000000..84b601bf0
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png b/web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
new file mode 100755
index 000000000..b6db1acdd
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png b/web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
new file mode 100755
index 000000000..feea0e202
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
new file mode 100755
index 000000000..ed5b6b093
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
Binary files differ
diff --git a/web/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css b/web/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css
new file mode 100755
index 000000000..604cd558d
--- /dev/null
+++ b/web/js/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.10.3 - 2013-11-06
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.datepicker.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file
diff --git a/web/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js b/web/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js
new file mode 100755
index 000000000..774c48050
--- /dev/null
+++ b/web/js/jquery-ui/js/jquery-ui-1.10.3.custom.min.js
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.10.3 - 2013-11-06
+* http://jqueryui.com
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.datepicker.js
+* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,a){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),a&&a.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],n=u+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(i,a){return e.isFunction(a)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,n=this._superApply;return this._super=e,this._superApply=t,i=a.apply(this,arguments),this._super=s,this._superApply=n,i}}(),t):(l[i]=a,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,a=1===i.which,n="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return a&&!n&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e,t){function i(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function s(t,i){return parseInt(e.css(t,i),10)||0}function a(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,o=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,c=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var i,s,a=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=a.children()[0];return e("body").append(a),i=r.offsetWidth,a.css("overflow","scroll"),s=r.offsetWidth,i===s&&(s=a[0].clientWidth),a.remove(),n=i-s},getScrollInfo:function(t){var i=t.isWindow?"":t.element.css("overflow-x"),s=t.isWindow?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:n?e.position.scrollbarWidth():0,height:a?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]);return{element:i,isWindow:s,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return f.apply(this,arguments);t=e.extend({},t);var n,p,m,g,v,y,b=e(t.of),_=e.position.getWithinInfo(t.within),x=e.position.getScrollInfo(_),k=(t.collision||"flip").split(" "),w={};return y=a(b),b[0].preventDefault&&(t.at="left top"),p=y.width,m=y.height,g=y.offset,v=e.extend({},g),e.each(["my","at"],function(){var e,i,s=(t[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):u.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=u.test(s[1])?s[1]:"center",e=c.exec(s[0]),i=c.exec(s[1]),w[this]=[e?e[0]:0,i?i[0]:0],t[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===t.at[0]?v.left+=p:"center"===t.at[0]&&(v.left+=p/2),"bottom"===t.at[1]?v.top+=m:"center"===t.at[1]&&(v.top+=m/2),n=i(w.at,p,m),v.left+=n[0],v.top+=n[1],this.each(function(){var a,l,u=e(this),c=u.outerWidth(),d=u.outerHeight(),f=s(this,"marginLeft"),y=s(this,"marginTop"),D=c+f+s(this,"marginRight")+x.width,T=d+y+s(this,"marginBottom")+x.height,M=e.extend({},v),S=i(w.my,u.outerWidth(),u.outerHeight());"right"===t.my[0]?M.left-=c:"center"===t.my[0]&&(M.left-=c/2),"bottom"===t.my[1]?M.top-=d:"center"===t.my[1]&&(M.top-=d/2),M.left+=S[0],M.top+=S[1],e.support.offsetFractions||(M.left=h(M.left),M.top=h(M.top)),a={marginLeft:f,marginTop:y},e.each(["left","top"],function(i,s){e.ui.position[k[i]]&&e.ui.position[k[i]][s](M,{targetWidth:p,targetHeight:m,elemWidth:c,elemHeight:d,collisionPosition:a,collisionWidth:D,collisionHeight:T,offset:[n[0]+S[0],n[1]+S[1]],my:t.my,at:t.at,within:_,elem:u})}),t.using&&(l=function(e){var i=g.left-M.left,s=i+p-c,a=g.top-M.top,n=a+m-d,h={target:{element:b,left:g.left,top:g.top,width:p,height:m},element:{element:u,left:M.left,top:M.top,width:c,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>n?"top":a>0?"bottom":"middle"};c>p&&p>o(i+s)&&(h.horizontal="center"),d>m&&m>o(a+n)&&(h.vertical="middle"),h.important=r(o(i),o(s))>r(o(a),o(n))?"horizontal":"vertical",t.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,o=e.left-t.collisionPosition.marginLeft,h=a-o,l=o+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=r(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,o=e.top-t.collisionPosition.marginTop,h=a-o,l=o+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,r=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,c=l+t.collisionWidth-r-h,d="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+d+p+f+t.collisionWidth-r-n,(0>i||o(u)>i)&&(e.left+=d+p+f)):c>0&&(s=e.left-t.collisionPosition.marginLeft+d+p+f-h,(s>0||c>o(s))&&(e.left+=d+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,r=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,c=l+t.collisionHeight-r-h,d="top"===t.my[1],p=d?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-r-n,e.top+p+f+m>u&&(0>s||o(u)>s)&&(e.top+=p+f+m)):c>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>c&&(i>0||c>o(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,n,r=document.getElementsByTagName("body")[0],o=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(n in s)t.style[n]=s[n];t.appendChild(o),i=r||document.documentElement,i.insertBefore(t,i.firstChild),o.style.cssText="position: absolute; left: 10.7432222px;",a=e(o).offset().left,e.support.offsetFractions=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()})(jQuery);(function(e,t){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){e.datepicker._isDisabledDatepicker(n.inline?t.parent()[0]:n.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))})}function s(t,i){e.extend(t,i);for(var a in i)null==i[a]&&(t[a]=i[a]);return t}e.extend(e.ui,{datepicker:{version:"1.10.3"}});var n,r="datepicker";e.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return s(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var a,s,n;a=t.nodeName.toLowerCase(),s="div"===a||"span"===a,t.id||(this.uuid+=1,t.id="dp"+this.uuid),n=this._newInst(e(t),s),n.settings=e.extend({},i||{}),"input"===a?this._connectDatepicker(t,n):s&&this._inlineDatepicker(t,n)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var a=e(t);i.append=e([]),i.trigger=e([]),a.hasClass(this.markerClassName)||(this._attachments(a,i),a.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,r,i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var a,s,n,r=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),r&&(i.append=e("<span class='"+this._appendClass+"'>"+r+"</span>"),t[o?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),a=this._get(i,"showOn"),("focus"===a||"both"===a)&&t.focus(this._showDatepicker),("button"===a||"both"===a)&&(s=this._get(i,"buttonText"),n=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:n,alt:s,title:s}):e("<button type='button'></button>").addClass(this._triggerClass).html(n?e("<img/>").attr({src:n,alt:s,title:s}):s)),t[o?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,a,s,n=new Date(2009,11,20),r=this._get(e,"dateFormat");r.match(/[DM]/)&&(t=function(e){for(i=0,a=0,s=0;e.length>s;s++)e[s].length>i&&(i=e[s].length,a=s);return a},n.setMonth(t(this._get(e,r.match(/MM/)?"monthNames":"monthNamesShort"))),n.setDate(t(this._get(e,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-n.getDay())),e.input.attr("size",this._formatDate(e,n).length)}},_inlineDatepicker:function(t,i){var a=e(t);a.hasClass(this.markerClassName)||(a.addClass(this.markerClassName).append(i.dpDiv),e.data(t,r,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,a,n,o){var h,l,u,d,c,p=this._dialogInst;return p||(this.uuid+=1,h="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+h+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},e.data(this._dialogInput[0],r,p)),s(p.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(l=document.documentElement.clientWidth,u=document.documentElement.clientHeight,d=document.documentElement.scrollLeft||document.body.scrollLeft,c=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+d,u/2-150+c]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=a,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],r,p),this},_destroyDatepicker:function(t){var i,a=e(t),s=e.data(t,r);a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,r),"input"===i?(s.append.remove(),s.trigger.remove(),a.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&a.removeClass(this.markerClassName).empty())},_enableDatepicker:function(t){var i,a,s=e(t),n=e.data(t,r);s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(a=s.children("."+this._inlineClass),a.children().removeClass("ui-state-disabled"),a.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,a,s=e(t),n=e.data(t,r);s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(a=s.children("."+this._inlineClass),a.children().addClass("ui-state-disabled"),a.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,r)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,a,n){var r,o,h,l,u=this._getInst(i);return 2===arguments.length&&"string"==typeof a?"defaults"===a?e.extend({},e.datepicker._defaults):u?"all"===a?e.extend({},u.settings):this._get(u,a):null:(r=a||{},"string"==typeof a&&(r={},r[a]=n),u&&(this._curInst===u&&this._hideDatepicker(),o=this._getDateDatepicker(i,!0),h=this._getMinMaxDate(u,"min"),l=this._getMinMaxDate(u,"max"),s(u.settings,r),null!==h&&r.dateFormat!==t&&r.minDate===t&&(u.settings.minDate=this._formatDate(u,h)),null!==l&&r.dateFormat!==t&&r.maxDate===t&&(u.settings.maxDate=this._formatDate(u,l)),"disabled"in r&&(r.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(e(i),u),this._autoSize(u),this._setDate(u,o),this._updateAlternate(u),this._updateDatepicker(u)),t)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,a,s,n=e.datepicker._getInst(t.target),r=!0,o=n.dpDiv.is(".ui-datepicker-rtl");if(n._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),r=!1;break;case 13:return s=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",n.dpDiv),s[0]&&e.datepicker._selectDay(t.target,n.selectedMonth,n.selectedYear,s[0]),i=e.datepicker._get(n,"onSelect"),i?(a=e.datepicker._formatDate(n),i.apply(n.input?n.input[0]:null,[a,n])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),r=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),r=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),r=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),r=t.ctrlKey||t.metaKey;break;default:r=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):r=!1;r&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(i){var a,s,n=e.datepicker._getInst(i.target);return e.datepicker._get(n,"constrainInput")?(a=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">s||!a||a.indexOf(s)>-1):t},_doKeyUp:function(t){var i,a=e.datepicker._getInst(t.target);if(a.input.val()!==a.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,e.datepicker._getFormatConfig(a)),i&&(e.datepicker._setDateFromField(a),e.datepicker._updateAlternate(a),e.datepicker._updateDatepicker(a))}catch(s){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,a,n,r,o,h,l;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),a=e.datepicker._get(i,"beforeShow"),n=a?a.apply(t,[t,i]):{},n!==!1&&(s(i.settings,n),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),r=!1,e(t).parents().each(function(){return r|="fixed"===e(this).css("position"),!r}),o={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),o=e.datepicker._checkOffset(i,o,r),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":r?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),i.inline||(h=e.datepicker._get(i,"showAnim"),l=e.datepicker._get(i,"duration"),i.dpDiv.zIndex(e(t).zIndex()+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[h]?i.dpDiv.show(h,e.datepicker._get(i,"showOptions"),l):i.dpDiv[h||"show"](h?l:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,n=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,a=this._getNumberOfMonths(t),s=a[1],r=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",r*s+"em"),t.dpDiv[(1!==a[0]||1!==a[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,a){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),r=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(a?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(a?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?s-r:0,i.left-=a&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=a&&i.top===t.input.offset().top+o?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+s>h&&h>s?Math.abs(i.left+s-h):0),i.top-=Math.min(i.top,i.top+n>l&&l>n?Math.abs(n+o):0),i},_findPos:function(t){for(var i,a=this._getInst(t),s=this._get(a,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[s?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,a,s,n,o=this._curInst;!o||t&&o!==e.data(t,r)||this._datepickerShowing&&(i=this._get(o,"showAnim"),a=this._get(o,"duration"),s=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),a,s):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?a:null,s),i||s(),this._datepickerShowing=!1,n=this._get(o,"onClose"),n&&n.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),a=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==a)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,a){var s=e(t),n=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(n,i+("M"===a?this._get(n,"showCurrentAtPos"):0),a),this._updateDatepicker(n))},_gotoToday:function(t){var i,a=e(t),s=this._getInst(a[0]);this._get(s,"gotoCurrent")&&s.currentDay?(s.selectedDay=s.currentDay,s.drawMonth=s.selectedMonth=s.currentMonth,s.drawYear=s.selectedYear=s.currentYear):(i=new Date,s.selectedDay=i.getDate(),s.drawMonth=s.selectedMonth=i.getMonth(),s.drawYear=s.selectedYear=i.getFullYear()),this._notifyChange(s),this._adjustDate(a)},_selectMonthYear:function(t,i,a){var s=e(t),n=this._getInst(s[0]);n["selected"+("M"===a?"Month":"Year")]=n["draw"+("M"===a?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(n),this._adjustDate(s)},_selectDay:function(t,i,a,s){var n,r=e(t);e(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(r[0])||(n=this._getInst(r[0]),n.selectedDay=n.currentDay=e("a",s).html(),n.selectedMonth=n.currentMonth=i,n.selectedYear=n.currentYear=a,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var a,s=e(t),n=this._getInst(s[0]);i=null!=i?i:this._formatDate(n),n.input&&n.input.val(i),this._updateAlternate(n),a=this._get(n,"onSelect"),a?a.apply(n.input?n.input[0]:null,[i,n]):n.input&&n.input.trigger("change"),n.inline?this._updateDatepicker(n):(this._hideDatepicker(),this._lastInput=n.input[0],"object"!=typeof n.input[0]&&n.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,a,s,n=this._get(t,"altField");n&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),a=this._getDate(t),s=this.formatDate(i,a,this._getFormatConfig(t)),e(n).each(function(){e(this).val(s)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(i,a,s){if(null==i||null==a)throw"Invalid arguments";if(a="object"==typeof a?""+a:a+"",""===a)return null;var n,r,o,h,l=0,u=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,d="string"!=typeof u?u:(new Date).getFullYear()%100+parseInt(u,10),c=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,p=(s?s.dayNames:null)||this._defaults.dayNames,m=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,v=-1,y=-1,b=-1,_=!1,k=function(e){var t=i.length>n+1&&i.charAt(n+1)===e;return t&&n++,t},x=function(e){var t=k(e),i="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,s=RegExp("^\\d{1,"+i+"}"),n=a.substring(l).match(s);if(!n)throw"Missing number at position "+l;return l+=n[0].length,parseInt(n[0],10)},D=function(i,s,n){var r=-1,o=e.map(k(i)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,i){var s=i[1];return a.substr(l,s.length).toLowerCase()===s.toLowerCase()?(r=i[0],l+=s.length,!1):t}),-1!==r)return r+1;throw"Unknown name at position "+l},w=function(){if(a.charAt(l)!==i.charAt(n))throw"Unexpected literal at position "+l;l++};for(n=0;i.length>n;n++)if(_)"'"!==i.charAt(n)||k("'")?w():_=!1;else switch(i.charAt(n)){case"d":y=x("d");break;case"D":D("D",c,p);break;case"o":b=x("o");break;case"m":v=x("m");break;case"M":v=D("M",m,f);break;case"y":g=x("y");break;case"@":h=new Date(x("@")),g=h.getFullYear(),v=h.getMonth()+1,y=h.getDate();break;case"!":h=new Date((x("!")-this._ticksTo1970)/1e4),g=h.getFullYear(),v=h.getMonth()+1,y=h.getDate();break;case"'":k("'")?w():_=!0;break;default:w()}if(a.length>l&&(o=a.substr(l),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d>=g?0:-100)),b>-1)for(v=1,y=b;;){if(r=this._getDaysInMonth(g,v-1),r>=y)break;v++,y-=r}if(h=this._daylightSavingAdjust(new Date(g,v-1,y)),h.getFullYear()!==g||h.getMonth()+1!==v||h.getDate()!==y)throw"Invalid date";return h},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var a,s=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,n=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>a+1&&e.charAt(a+1)===t;return i&&a++,i},l=function(e,t,i){var a=""+t;if(h(e))for(;i>a.length;)a="0"+a;return a},u=function(e,t,i,a){return h(e)?a[t]:i[t]},d="",c=!1;if(t)for(a=0;e.length>a;a++)if(c)"'"!==e.charAt(a)||h("'")?d+=e.charAt(a):c=!1;else switch(e.charAt(a)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),s,n);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),r,o);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(a)}return d},_possibleChars:function(e){var t,i="",a=!1,s=function(i){var a=e.length>t+1&&e.charAt(t+1)===i;return a&&t++,a};for(t=0;e.length>t;t++)if(a)"'"!==e.charAt(t)||s("'")?i+=e.charAt(t):a=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":s("'")?i+="'":a=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,i){return e.settings[i]!==t?e.settings[i]:this._defaults[i]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),a=e.lastVal=e.input?e.input.val():null,s=this._getDefaultDate(e),n=s,r=this._getFormatConfig(e);try{n=this.parseDate(i,a,r)||s}catch(o){a=t?"":a}e.selectedDay=n.getDate(),e.drawMonth=e.selectedMonth=n.getMonth(),e.drawYear=e.selectedYear=n.getFullYear(),e.currentDay=a?n.getDate():0,e.currentMonth=a?n.getMonth():0,e.currentYear=a?n.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,a){var s=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},n=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(a){}for(var s=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,n=s.getFullYear(),r=s.getMonth(),o=s.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":o+=parseInt(l[1],10);break;case"w":case"W":o+=7*parseInt(l[1],10);break;case"m":case"M":r+=parseInt(l[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r));break;case"y":case"Y":n+=parseInt(l[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r))}l=h.exec(i)}return new Date(n,r,o)},r=null==i||""===i?a:"string"==typeof i?n(i):"number"==typeof i?isNaN(i)?a:s(i):new Date(i.getTime());return r=r&&"Invalid Date"==""+r?a:r,r&&(r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0)),this._daylightSavingAdjust(r)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var a=!t,s=e.selectedMonth,n=e.selectedYear,r=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=r.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=r.getMonth(),e.drawYear=e.selectedYear=e.currentYear=r.getFullYear(),s===e.selectedMonth&&n===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(a?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),a="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(a,-i,"M")},next:function(){e.datepicker._adjustDate(a,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(a)},selectDay:function(){return e.datepicker._selectDay(a,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(a,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(a,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,a,s,n,r,o,h,l,u,d,c,p,m,f,g,v,y,b,_,k,x,D,w,T,M,S,N,C,A,P,I,F,j,H,E,z,L,O,R=new Date,W=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(e,"isRTL"),J=this._get(e,"showButtonPanel"),$=this._get(e,"hideIfNoPrevNext"),Q=this._get(e,"navigationAsDateFormat"),B=this._getNumberOfMonths(e),K=this._get(e,"showCurrentAtPos"),V=this._get(e,"stepMonths"),U=1!==B[0]||1!==B[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),q=this._getMinMaxDate(e,"min"),X=this._getMinMaxDate(e,"max"),Z=e.drawMonth-K,et=e.drawYear;if(0>Z&&(Z+=12,et--),X)for(t=this._daylightSavingAdjust(new Date(X.getFullYear(),X.getMonth()-B[0]*B[1]+1,X.getDate())),t=q&&q>t?q:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=Q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-V,1)),this._getFormatConfig(e)):i,a=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":$?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",s=this._get(e,"nextText"),s=Q?this.formatDate(s,this._daylightSavingAdjust(new Date(et,Z+V,1)),this._getFormatConfig(e)):s,n=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+s+"</span></a>":$?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+s+"</span></a>",r=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?G:W,r=Q?this.formatDate(r,o,this._getFormatConfig(e)):r,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=J?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+r+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),m=this._get(e,"monthNames"),f=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",x=0;B[0]>x;x++){for(D="",this.maxRows=4,w=0;B[1]>w;w++){if(T=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),M=" ui-corner-all",S="",U){if(S+="<div class='ui-datepicker-group",B[1]>1)switch(w){case 0:S+=" ui-datepicker-group-first",M=" ui-corner-"+(Y?"right":"left");break;case B[1]-1:S+=" ui-datepicker-group-last",M=" ui-corner-"+(Y?"left":"right");break;default:S+=" ui-datepicker-group-middle",M=""}S+="'>"}for(S+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+M+"'>"+(/all|left/.test(M)&&0===x?Y?n:a:"")+(/all|right/.test(M)&&0===x?Y?a:n:"")+this._generateMonthYearHeader(e,Z,et,q,X,x>0||w>0,m,f)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",N=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",k=0;7>k;k++)C=(k+u)%7,N+="<th"+((k+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[C]+"'>"+p[C]+"</span></th>";for(S+=N+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),F=U?this.maxRows>I?this.maxRows:I:I,this.maxRows=F,j=this._daylightSavingAdjust(new Date(et,Z,1-P)),H=0;F>H;H++){for(S+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(j)+"</td>":"",k=0;7>k;k++)z=g?g.apply(e.input?e.input[0]:null,[j]):[!0,""],L=j.getMonth()!==Z,O=L&&!y||!z[0]||q&&q>j||X&&j>X,E+="<td class='"+((k+u+6)%7>=5?" ui-datepicker-week-end":"")+(L?" ui-datepicker-other-month":"")+(j.getTime()===T.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===j.getTime()&&b.getTime()===T.getTime()?" "+this._dayOverClass:"")+(O?" "+this._unselectableClass+" ui-state-disabled":"")+(L&&!v?"":" "+z[1]+(j.getTime()===G.getTime()?" "+this._currentClass:"")+(j.getTime()===W.getTime()?" ui-datepicker-today":""))+"'"+(L&&!v||!z[2]?"":" title='"+z[2].replace(/'/g,"&#39;")+"'")+(O?"":" data-handler='selectDay' data-event='click' data-month='"+j.getMonth()+"' data-year='"+j.getFullYear()+"'")+">"+(L&&!v?"&#xa0;":O?"<span class='ui-state-default'>"+j.getDate()+"</span>":"<a class='ui-state-default"+(j.getTime()===W.getTime()?" ui-state-highlight":"")+(j.getTime()===G.getTime()?" ui-state-active":"")+(L?" ui-priority-secondary":"")+"' href='#'>"+j.getDate()+"</a>")+"</td>",j.setDate(j.getDate()+1),j=this._daylightSavingAdjust(j);S+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),S+="</tbody></table>"+(U?"</div>"+(B[0]>0&&w===B[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),D+=S}_+=D}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,a,s,n,r,o){var h,l,u,d,c,p,m,f,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(n||!g)_+="<span class='ui-datepicker-month'>"+r[t]+"</span>";else{for(h=a&&a.getFullYear()===i,l=s&&s.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=a.getMonth())&&(!l||s.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+o[u]+"</option>");_+="</select>"}if(y||(b+=_+(!n&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",n||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);
+return isNaN(t)?c:t},m=p(d[0]),f=Math.max(m,p(d[1]||"")),m=a?Math.max(m,a.getFullYear()):m,f=s?Math.min(f,s.getFullYear()):f,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";f>=m;m++)e.yearshtml+="<option value='"+m+"'"+(m===i?" selected='selected'":"")+">"+m+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!n&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var a=e.drawYear+("Y"===i?t:0),s=e.drawMonth+("M"===i?t:0),n=Math.min(e.selectedDay,this._getDaysInMonth(a,s))+("D"===i?t:0),r=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(a,s,n)));e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),s=i&&i>t?i:t;return a&&s>a?a:s},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,a){var s=this._getNumberOfMonths(e),n=this._daylightSavingAdjust(new Date(i,a+(0>t?t:s[0]*s[1]),1));return 0>t&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(e,n)},_isInRange:function(e,t){var i,a,s=this._getMinMaxDate(e,"min"),n=this._getMinMaxDate(e,"max"),r=null,o=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),a=(new Date).getFullYear(),r=parseInt(i[0],10),o=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(r+=a),i[1].match(/[+\-].*/)&&(o+=a)),(!s||t.getTime()>=s.getTime())&&(!n||t.getTime()<=n.getTime())&&(!r||t.getFullYear()>=r)&&(!o||o>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,a){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var s=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(a,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),s,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new i,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.10.3"})(jQuery); \ No newline at end of file
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 62e94ed29..f7a46ee68 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -46,6 +46,27 @@ function fixmystreet_activate_drag() {
fixmystreet.drag.activate();
}
+// Need to try and fake the 'centre' being 75% from the left
+function fixmystreet_midpoint() {
+ var $content = $('.content'), mb = $('#map_box'),
+ q = ( $content.offset().left - mb.offset().left + $content.width() ) / 2,
+ mid_point = q < 0 ? 0 : q;
+ return mid_point;
+}
+
+function fixmystreet_zoomToBounds(bounds) {
+ if (!bounds) { return; }
+ var center = bounds.getCenterLonLat();
+ var z = fixmystreet.map.getZoomForExtent(bounds);
+ if ( z < 13 && $('html').hasClass('mobile') ) {
+ z = 13;
+ }
+ fixmystreet.map.setCenter(center, z);
+ if (fixmystreet.state_map && fixmystreet.state_map == 'full') {
+ fixmystreet.map.pan(-fixmystreet_midpoint(), -25, { animate: false });
+ }
+}
+
function fms_markers_list(pins, transform) {
var markers = [];
for (var i=0; i<pins.length; i++) {
@@ -85,15 +106,7 @@ function fixmystreet_onload() {
if ( fixmystreet.area_format ) {
area.styleMap.styles['default'].defaultStyle = fixmystreet.area_format;
}
- var bounds = area.getDataExtent();
- if (bounds) {
- var center = bounds.getCenterLonLat();
- var z = fixmystreet.map.getZoomForExtent(bounds);
- if ( z < 13 && $('html').hasClass('mobile') ) {
- z = 13;
- }
- fixmystreet.map.setCenter(center, z, false, true);
- }
+ fixmystreet_zoomToBounds( area.getDataExtent() );
});
}
}
@@ -190,15 +203,7 @@ function fixmystreet_onload() {
fixmystreet.map.addLayer(fixmystreet.markers);
if ( fixmystreet.zoomToBounds ) {
- var bounds = fixmystreet.markers.getDataExtent();
- if (bounds) {
- var center = bounds.getCenterLonLat();
- var z = fixmystreet.map.getZoomForExtent(bounds);
- if ( z < 13 && $('html').hasClass('mobile') ) {
- z = 13;
- }
- fixmystreet.map.setCenter(center, z);
- }
+ fixmystreet_zoomToBounds( fixmystreet.markers.getDataExtent() );
}
$('#hide_pins_link').click(function(e) {
@@ -268,8 +273,13 @@ $(function(){
}, fixmystreet.map_options)
);
- if ($('html').hasClass('mobile') && fixmystreet.page == 'around') {
- $('#fms_pan_zoom').css({ top: '2.75em !important' });
+ // Need to do this here, after the map is created
+ if ($('html').hasClass('mobile')) {
+ if (fixmystreet.page == 'around') {
+ $('#fms_pan_zoom').css({ top: '2.75em' });
+ }
+ } else {
+ $('#fms_pan_zoom').css({ top: '4.75em' });
}
// Set it up our way
@@ -280,8 +290,11 @@ $(function(){
}
for (var i=0; i<fixmystreet.layer_options.length; i++) {
fixmystreet.layer_options[i] = OpenLayers.Util.extend({
+ // This option is used by XYZ-based layers
zoomOffset: fixmystreet.zoomOffset,
- transitionEffect: 'resize',
+ // This option is used by FixedZoomLevels-based layers
+ minZoomLevel: fixmystreet.zoomOffset,
+ // This option is thankfully used by them both
numZoomLevels: fixmystreet.numZoomLevels
}, fixmystreet.layer_options[i]);
if (fixmystreet.layer_options[i].matrixIds) {
@@ -302,33 +315,7 @@ $(function(){
}
if (fixmystreet.state_map && fixmystreet.state_map == 'full') {
- // TODO Work better with window resizing, this is pretty 'set up' only at present
- var $content = $('.content'), mb = $('#map_box'),
- q = ( $content.offset().left - mb.offset().left + $content.width() ) / 2;
- if (q < 0) { q = 0; }
- // Need to try and fake the 'centre' being 75% from the left
- fixmystreet.map.pan(-q, -25, { animate: false });
- fixmystreet.map.events.register("movestart", null, function(e){
- fixmystreet.map.moveStart = { zoom: this.getZoom(), center: this.getCenter() };
- });
- fixmystreet.map.events.register("zoomend", null, function(e){
- if ( fixmystreet.map.moveStart && !fixmystreet.map.moveStart.zoom && fixmystreet.map.moveStart.zoom !== 0 ) {
- return true; // getZoom() on Firefox appears to return null at first?
- }
- if ( !fixmystreet.map.moveStart || !this.getCenter().equals(fixmystreet.map.moveStart.center) ) {
- // Centre has moved, e.g. by double-click. Same whether zoom in or out
- fixmystreet.map.pan(-q, -25, { animate: false });
- return;
- }
- var zoom_change = this.getZoom() - fixmystreet.map.moveStart.zoom;
- if (zoom_change == -1) {
- // Zoomed out, need to re'centre'
- fixmystreet.map.pan(-q/2, 0, { animate: false });
- } else if (zoom_change == 1) {
- // Using a zoom button
- fixmystreet.map.pan(q, 0, { animate: false });
- }
- });
+ fixmystreet.map.pan(-fixmystreet_midpoint(), -25, { animate: false });
}
if (document.getElementById('mapForm')) {
@@ -376,12 +363,9 @@ $(function(){
zoomTo(0) rather than zoomToMaxExtent()
*/
OpenLayers.Control.PanZoomFMS = OpenLayers.Class(OpenLayers.Control.PanZoom, {
- buttonDown: function (evt) {
- if (!OpenLayers.Event.isLeftClick(evt)) {
- return;
- }
-
- switch (this.action) {
+ onButtonClick: function (evt) {
+ var btn = evt.buttonElement;
+ switch (btn.action) {
case "panup":
this.map.pan(0, -this.getSlideFactor("h"));
break;
@@ -395,17 +379,26 @@ OpenLayers.Control.PanZoomFMS = OpenLayers.Class(OpenLayers.Control.PanZoom, {
this.map.pan(this.getSlideFactor("w"), 0);
break;
case "zoomin":
- this.map.zoomIn();
- break;
case "zoomout":
- this.map.zoomOut();
- break;
case "zoomworld":
- this.map.zoomTo(0);
- break;
+ var mid_point = 0;
+ if (fixmystreet.state_map && fixmystreet.state_map == 'full') {
+ mid_point = fixmystreet_midpoint();
+ }
+ var size = this.map.getSize(),
+ xy = { x: size.w / 2 + mid_point, y: size.h / 2 };
+ switch (btn.action) {
+ case "zoomin":
+ this.map.zoomTo(this.map.getZoom() + 1, xy);
+ break;
+ case "zoomout":
+ this.map.zoomTo(this.map.getZoom() - 1, xy);
+ break;
+ case "zoomworld":
+ this.map.zoomTo(0, xy);
+ break;
+ }
}
-
- OpenLayers.Event.stop(evt);
}
});
@@ -421,11 +414,9 @@ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink,
var center = this.map.getCenter();
if ( center && fixmystreet.state_map && fixmystreet.state_map == 'full' ) {
// Translate the permalink co-ords so that 'centre' is accurate
- var $content = $('.content'), mb = $('#map_box'),
- q = ( $content.offset().left - mb.offset().left + $content.width() ) / 2;
- if (q < 0) { q = 0; }
+ var mid_point = fixmystreet_midpoint();
var p = this.map.getViewPortPxFromLonLat(center);
- p.x += q;
+ p.x += mid_point;
p.y += 25;
center = this.map.getLonLatFromViewPortPx(p);
}
diff --git a/web/js/map-OpenStreetMap.js b/web/js/map-OpenStreetMap.js
index 79c646f7b..fc0afedc3 100644
--- a/web/js/map-OpenStreetMap.js
+++ b/web/js/map-OpenStreetMap.js
@@ -16,36 +16,6 @@ function set_map_config(perm) {
// http://www.openstreetmap.org/openlayers/OpenStreetMap.js (added maxResolution)
/**
- * Namespace: Util.OSM
- */
-OpenLayers.Util.OSM = {};
-
-/**
- * Constant: MISSING_TILE_URL
- * {String} URL of image to display for missing tiles
- */
-OpenLayers.Util.OSM.MISSING_TILE_URL = "http://www.openstreetmap.org/openlayers/img/404.png";
-
-/**
- * Property: originalOnImageLoadError
- * {Function} Original onImageLoadError function.
- */
-OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
-
-/**
- * Function: onImageLoadError
- */
-OpenLayers.Util.onImageLoadError = function() {
- if (this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org\//)) {
- this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
- } else if (this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//)) {
- // do nothing - this layer is transparent
- } else {
- OpenLayers.Util.OSM.originalOnImageLoadError();
- }
-};
-
-/**
* Class: OpenLayers.Layer.OSM.Mapnik
*
* Inherits from:
@@ -67,7 +37,7 @@ OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
];
options = OpenLayers.Util.extend({
/* Below line added to OSM's file in order to allow minimum zoom level */
- maxResolution: 156543.0339/Math.pow(2, options.zoomOffset || 0),
+ maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0),
numZoomLevels: 19,
buffer: 0
}, options);
@@ -101,7 +71,7 @@ OpenLayers.Layer.OSM.MapQuestOpen = OpenLayers.Class(OpenLayers.Layer.OSM, {
];
options = OpenLayers.Util.extend({
/* Below line added to OSM's file in order to allow minimum zoom level */
- maxResolution: 156543.0339/Math.pow(2, options.zoomOffset || 0),
+ maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0),
numZoomLevels: 19,
buffer: 0
}, options);
@@ -134,7 +104,7 @@ OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
];
options = OpenLayers.Util.extend({
/* Below line added to OSM's file in order to allow minimum zoom level */
- maxResolution: 156543.0339/Math.pow(2, options.zoomOffset || 0),
+ maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0),
numZoomLevels: 19,
buffer: 0
}, options);
diff --git a/web/js/map-bing-ol.js b/web/js/map-bing-ol.js
index f48f21c48..846133cd5 100644
--- a/web/js/map-bing-ol.js
+++ b/web/js/map-bing-ol.js
@@ -85,9 +85,8 @@ OpenLayers.Layer.BingUK = OpenLayers.Class(OpenLayers.Layer.XYZ, {
var url = [];
options = OpenLayers.Util.extend({
/* Below line added to OSM's file in order to allow minimum zoom level */
- maxResolution: 156543.0339/Math.pow(2, options.zoomOffset || 0),
+ maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0),
numZoomLevels: 19,
- transitionEffect: "resize",
sphericalMercator: true,
buffer: 0
//attribution: "© Microsoft / OS 2010"
diff --git a/web/js/map-bing.js b/web/js/map-bing.js
deleted file mode 100644
index 856e4f188..000000000
--- a/web/js/map-bing.js
+++ /dev/null
@@ -1,22 +0,0 @@
-$(function(){
- var centre = new Microsoft.Maps.Location( fixmystreet.latitude, fixmystreet.longitude );
- var map = new Microsoft.Maps.Map(document.getElementById("map"), {
- credentials: fixmystreet.key,
- mapTypeId: Microsoft.Maps.MapTypeId.ordnanceSurvey,
- center: centre,
- zoom: 15,
- enableClickableLogo: false,
- enableSearchLogo: false,
- showCopyright: false,
- showDashboard: true,
- showLogo: false,
- showScalebar: false
- });
- //minZoomLevel: 14,
- //numZoomLevels: 4
-
- Microsoft.Maps.Events.addHandler(map, "viewchangestart", function(e) {
- /* Doesn't work */
- if (map.getTargetZoom() < 12) return false;
- });
-});
diff --git a/web/js/map-google-ol.js b/web/js/map-google-ol.js
new file mode 100644
index 000000000..953765068
--- /dev/null
+++ b/web/js/map-google-ol.js
@@ -0,0 +1,19 @@
+function set_map_config(perm) {
+ var permalink_id;
+ if ($('#map_permalink').length) {
+ permalink_id = 'map_permalink';
+ }
+
+ fixmystreet.controls = [
+ new OpenLayers.Control.ArgParser(),
+ new OpenLayers.Control.Navigation(),
+ new OpenLayers.Control.PermalinkFMS(permalink_id),
+ new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' })
+ ];
+
+ fixmystreet.map_type = OpenLayers.Layer.Google;
+ fixmystreet.map_options = {
+ zoomDuration: 10
+ };
+}
+
diff --git a/web/js/map-streetview.js b/web/js/map-streetview.js
index 03c5e7843..b81438a88 100644
--- a/web/js/map-streetview.js
+++ b/web/js/map-streetview.js
@@ -12,30 +12,6 @@ function set_map_config(perm) {
// http://os.openstreetmap.org/openlayers/OS.js (added one line)
/**
- * Namespace: Util.OS
- */
-OpenLayers.Util.OS = {};
-
-/**
- * Constant: MISSING_TILE_URL
- * {String} URL of image to display for missing tiles
- */
-OpenLayers.Util.OS.MISSING_TILE_URL = "http://openstreetmap.org/openlayers/img/404.png";
-
-/**
- * Property: originalOnImageLoadError
- * {Function} Original onImageLoadError function.
- */
-OpenLayers.Util.OS.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
-
-/**
- * Function: onImageLoadError
- */
-OpenLayers.Util.onImageLoadError = function() {
- OpenLayers.Util.OS.originalOnImageLoadError();
-};
-
-/**
* @requires OpenLayers/Layer/XYZ.js
*
* Class: OpenLayers.Layer.StreetView
@@ -44,8 +20,6 @@ OpenLayers.Util.onImageLoadError = function() {
* - <OpenLayers.Layer.XYZ>
*/
OpenLayers.Layer.StreetView = OpenLayers.Class(OpenLayers.Layer.XYZ, {
- attribution: 'Map contains Ordnance Survey data &copy; Crown copyright and database right 2010.',
-
/**
* Constructor: OpenLayers.Layer.StreetView
*
@@ -62,11 +36,10 @@ OpenLayers.Layer.StreetView = OpenLayers.Class(OpenLayers.Layer.XYZ, {
];
options = OpenLayers.Util.extend({
/* Below line added to OSM's file in order to allow minimum zoom level */
- maxResolution: 156543.0339/Math.pow(2, options.zoomOffset || 0),
+ maxResolution: 156543.03390625/Math.pow(2, options.zoomOffset || 0),
numZoomLevels: 19,
- transitionEffect: "resize",
sphericalMercator: true,
- attribution: "Contains Ordnance Survey data © Crown copyright and database right 2010"
+ attribution: "Contains Ordnance Survey data © Crown copyright and database right 2012"
}, options);
var newArguments = [name, url, options];
OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments);